Android完全退出程序
来源:互联网 发布:淘宝批量上架宝贝 编辑:程序博客网 时间:2024/06/02 14:31
众所周知 android程序如果正常退出 会在后台继续运行
这个android的activity栈有关系 他不显示 并不代表结束
现在基本都是在做2.3以上的开发 所以 用系统的杀死当前包中activity的方式不行了
现在为大家推荐几种全局退出方法 亲测可行 都是在开发中用到过的
一、记录打开过的activity,然后在退出的时候 遍历数组 关闭
public class ExitUtil { //定义一个activity列表 private List<Activity> mList = new ArrayList<Activity>(); //顶一一个类的实例 private static ExitUtil instance; //私有构造方法 不允许创建类的实例 private ExitUtil() { } /** * 单例模式 * @return */ public static ExitUtilgetInstance() { if (null == instance) { instance = new ExitUtil(); } return instance; } /** * 如果activity已经 destory了 就移除 * @param activity */ public void remove(Activity activity){ mList.remove(activity); } /** * 添加ativity * @param activity */ public void addActivity(Activity activity) { mList.add(activity); } /** * 遍历 结束activity 并且退出 */ public void exit() { try { for (Activity activity : mList) { if (activity != null) activity.finish(); } } catch (Exception e) { e.printStackTrace(); } finally { android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); } } }
一般推荐在写程序的时候,自己顶一个commonactivity 继承activity 作为自己activity的父类
这样比较方便 你可以在自己的commonactivity中调用一下退出类的添加和移除方法 比较方便
@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubExitUtil.getInstance().addActivity(this);super.onCreate(savedInstanceState);}
@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();ExitUtil.getInstance().remove(this);}
这样 在退出的界面中 调用下exit方法就可以了
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// 按下键盘上返回按钮if (keyCode == KeyEvent.KEYCODE_BACK) {new AlertDialog.Builder(this).setTitle("提示").setMessage("确认退出").setNegativeButton("取消",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) {}}).setPositiveButton("确定",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int whichButton) {//closed();ExitUtil.getInstance().exit();}}).show();return true;} else {return super.onKeyDown(keyCode, event);}}
这样 就可以成功的退出
二、广泛采用的 采用广播退出的方法
也是在自己定义的commoactivity中 注册个广播 如果接到广播 结束activity
public BroadcastReceiverbroadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubfinish();}};
这个需要在onresume中注册广播 这里的GlobalVarable.EXIT_ACTION是自己定义的一个action
@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();IntentFilter filter = new IntentFilter(); filter.addAction(GlobalVarable.EXIT_ACTION);
this.registerReceiver(this.broadcastReceiver, filter);
}
需要注意的是 要在ondestory中解除注册 否则会报异常
@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();this.unregisterReceiver(broadcastReceiver);}
private void closed(){Intent intent = new Intent();intent.setAction(GlobalVarable.EXIT_ACTION); // 退出动作this.sendBroadcast(intent);// 发送广播super.finish();//退出后台线程,以及销毁静态变量System.exit(0);}
三、定义一个 MyApplication extends Application 在MyApplication中定义一个全局变量
private boolean isExit = false;
public boolean isExit() {
return isExit;
}
public void setExit(boolean isExit) {
this.isExit = isExit;
并且在commonactivity中的onsatrt方法中判断 如果为true就关闭当前activity
@Overrideprotected void onStart() {// TODO Auto-generated method stub MyApplication application = (MyApplication) this.getApplication(); if(application.isExit()==true){ this.finish(); }super.onStart();}
如果需要退出 则在当前界面中将isExit设为True并且结束当前activity 就可以退出所以activity
值得注意的是 如果想要MyApplication起作用 需要在配置文件中的Application设置成自己的MyApplication
因为系统默认的是Application
如果不懂 欢迎留言咨询
欢迎加群:169146045 一起聊天打屁 在闲暇时间聊天 在忙碌时间探讨技术
- android 完全退出程序
- android 完全退出程序
- android完全退出程序
- android完全退出程序
- android完全退出程序
- android程序完全退出
- Android程序完全退出
- android 完全退出程序
- Android完全退出程序
- Android完全退出程序
- android 完全退出程序
- android 完全退出程序
- Android 程序完全退出
- android完全退出程序
- android完全退出程序
- Android完全退出程序
- Android程序完全退出
- Android完全退出程序
- Infoworld发布2009年度开源软件大奖
- 多看看技术书籍,沉淀才会清澈
- EditText去边框
- JavaScript本地存储实践(html5的localStorage和ie的userData)
- [ios培训]iOS Cllocationmanger定位, 使用Google Map API在mapview上画路径
- Android完全退出程序
- win7下,硬盘安装debian
- 顺时针打印方阵
- FormsAuthentication使用指南
- zf代码调试
- xdebug的安装资料
- acid
- c# - Brushes colors
- 字符集原理