Android完全退出程序
2012-08-31 10:33
295 查看
众所周知 android程序如果正常退出 会在后台继续运行
这个android的activity栈有关系 他不显示 并不代表结束
现在基本都是在做2.3以上的开发 所以 用系统的杀死当前包中activity的方式不行了
现在为大家推荐几种全局退出方法 亲测可行 都是在开发中用到过的
一、记录打开过的activity,然后在退出的时候 遍历数组 关闭
一般推荐在写程序的时候,自己顶一个commonactivity 继承activity 作为自己activity的父类
这样比较方便 你可以在自己的commonactivity中调用一下退出类的添加和移除方法 比较方便
这样 在退出的界面中 调用下exit方法就可以了
这样 就可以成功的退出
二、广泛采用的 采用广播退出的方法
也是在自己定义的commoactivity中 注册个广播 如果接到广播 结束activity
这个需要在onresume中注册广播 这里的GlobalVarable.EXIT_ACTION是自己定义的一个action
需要注意的是 要在ondestory中解除注册 否则会报异常
然后 在退出的时候调用close方法发送广播
三、定义一个 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
如果需要退出 则在当前界面中将isExit设为True并且结束当前activity 就可以退出所以activity
值得注意的是 如果想要MyApplication起作用 需要在配置文件中的Application设置成自己的MyApplication
因为系统默认的是Application
如果不懂 欢迎留言咨询
欢迎加群:169146045 一起聊天打屁 在闲暇时间聊天 在忙碌时间探讨技术
这个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中调用一下退出类的添加和移除方法 比较方便
@Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub ExitUtil.getInstance().addActivity(this); super.onCreate(savedInstanceState); }
@Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); ExitUtil.getInstance().remove(this); }
这样 在退出的界面中 调用下exit方法就可以了
@Override public 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 BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub finish(); } };
这个需要在onresume中注册广播 这里的GlobalVarable.EXIT_ACTION是自己定义的一个action
@Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); IntentFilter filter = new IntentFilter(); filter.addAction(GlobalVarable.EXIT_ACTION);
this.registerReceiver(this.broadcastReceiver, filter);}
需要注意的是 要在ondestory中解除注册 否则会报异常
@Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); this.unregisterReceiver(broadcastReceiver); }
然后 在退出的时候调用close方法发送广播
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
@Override protected 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 2.2完全退出程序, 使用广播机制
- android如何完全退出程序
- android程序退出功能解决方案——android完全退出
- Android程序完全退出的三種方法
- Android应用完全退出程序的方法!!!
- Android完全退出程序代码
- Android程序完全退出的方法
- Android企业级程序完全退出的解决方案
- android完全退出程序
- Android企业级程序完全退出的解决方案
- Android完全退出多个activity程序
- Android程序完全退出的三种方法
- Android完全退出程序研究
- Android程序完全退出的三种方法
- 关于Android完全退出程序
- Android完全结束Activity并退出程序
- Android程序如何在任意处完全退出应用