博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android中程序的退出和关闭
阅读量:5986 次
发布时间:2019-06-20

本文共 1862 字,大约阅读时间需要 6 分钟。

hot3.png

在工程中,直接调用System.exit(0)函数就可以实现对工程的关闭。也可以使用退出对话框提醒的方式进行退出,代码如示:

public boolean onKeyDown(int keyCode, KeyEvent event) 

{

if (keyCode == KeyEvent.KEYCODE_BACK &&  event.getRepeatCount() == 0) 

   {

   // 确认对话框

   final AlertDialog isExit = new AlertDialog.Builder(this).create();

   isExit.setMessage("你确定要退出?");

   DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) 

{

switch (which) 

{

case AlertDialog.BUTTON1:// "确认"按钮退出程序

NotificationManager notificationManager =  (NotificationManager) ModeChooseActivity.this 

   .getSystemService(NOTIFICATION_SERVICE); 

notificationManager.cancel(0); 

System.exit(0); 

break;

case AlertDialog.BUTTON2:// "取消"按钮取消对话框

sExit.cancel();

break;

default:

break;

}

}

};

   // 注册监听

   isExit.setButton("YES", listener);

   isExit.setButton2("NO", listener);

   // 显示对话框

   isExit.show();

   return false;

   }

   return false;

   }

 

但是当工程中有多个activity时,finish只能实现单个活动的关闭。这时候需要将每个activity存放到一个活动栈中,每开启一个活动就进一次栈,然后设定在某一个活动中对这个栈进行整体的删除就好,代码如下:

public class kill extends Application {  

//运用list来保存们每一个activity是关键  

private List<Activity> mList = new LinkedList<Activity>();  

//为了实现每次使用该类时不创建新的对象而创建的静态对象  

private static kill instance;   

//构造方法  

private kill(){} //实例化一次  

public synchronized static kill getInstance(){   

if (null == instance) {   

instance = new kill();   

}   

return instance;   

}   

// add Activity    

public void addActivity(Activity activity) {   

mList.add(activity);   

}   

//关闭每一个list内的activity  

public void exit() {   

try {   

for (Activity activity:mList) {   

if (activity != null)   

activity.finish();   

}   

catch (Exception e) {   

e.printStackTrace();   

finally {   

System.exit(0);   

}   

}   

//杀进程  

public void onLowMemory() {   

super.onLowMemory();       

System.gc();   

}    

}  

在活动中使用kill.getInstance().addActivity(this);语句来将此活动添加到栈中,在需要关闭活动栈的activity中使用语句kill.getInstance().exit();来进行活动栈的整体删除和程序的关闭。

转载于:https://my.oschina.net/u/2408219/blog/476538

你可能感兴趣的文章
我的家庭私有云计划-18
查看>>
当我们谈论知识管理时,我们在谈论什么?
查看>>
我是这样看搜狗搜索与知乎合作的
查看>>
演示:为思科29系列的交换机升级IOS镜像
查看>>
统一沟通-技巧-4-让国内域名提供商“提供”SRV记录
查看>>
一次DPM备份Exchange DAG的故障处理过程
查看>>
Windows Server 2012 NIC Teaming配置实战
查看>>
KingbaseES的HA搭建
查看>>
思科加强生成树性能的属性(Portfast /Uplinkfast/BackboneFast)与RSTP的关系
查看>>
lvm的使用总结
查看>>
【马哥教育视频】Linux平台软件包管理系列视频
查看>>
DPM2012系列之五:开启最终用户恢复功能
查看>>
使用JFinal/Jsmart框架开发体验(一)
查看>>
zabbix企业应用之discovery监控交换机流量
查看>>
webservice是什么?
查看>>
Java中包的理解
查看>>
oracle查分区表的一些注意事项
查看>>
p4 add 目录
查看>>
网上找的模拟POST提交上传图片类
查看>>
AUTOCAD自学教程一
查看>>