退出App的几种方法
来源:互联网 发布:长春市盘古网络 法人 编辑:程序博客网 时间:2024/04/27 14:45
查阅了些资料,要完全退出App,最常用的方法是:
1.将activity放入一个list集合,然后遍历关闭。
具体步骤如下:
1)创建一个activity管理类:ActivityCollector
定义三个共有静态的方法;定义存储activity的list集合。方法如下:
①addActivity:往集合里添加activity对象
②removeActivity:移除activity对象
③finishAll:增强for循环,遍历所有activity并销毁
2)在baseActivity中
①onCreate方法中添加:ActivityCollector.addActivity(this).
②onDestory方法中添加:ActivityCollector.removeActivity(this).
③可以在任何一个集成baseActivity的activity中调用
ActivityCollector.finishAll().
从而关闭所有App.
具体代码如下:
public class ActivityCollector { public static LinkedList<Activity> activities = new LinkedList<Activity>(); public static void addActivity(Activity activity) { activities.add(activity); } public static void removeActivity(Activity activity) { activities.remove(activity); } public static void finishAll() { for(Activity activity:activities) { if(!activity.isFinishing()) { activity.finish(); } } } }
2.用singTask模式
将主Activity的启动模式设置位singleTask:简单的说就是这个Activity重新回到栈顶部时,会把他上面所有Activity干掉,然后再把自己finish掉就退出程序了。不过这种方法会存在特殊情况,退不出程序!
3.杀死后台进程
上面说的是关闭所有Activity的,但是有些时候我们可能想杀死整个App,连后台任务都杀死 杀得一干二净的话,可以使用搭配着下述代码使用:
/** * 退出应用程序 */ public void AppExit(Context context) { try { ActivityCollector.finishAll(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.killBackgroundProcesses(context.getPackageName()); System.exit(0); } catch (Exception ignored) {} }
4.双击退出程序
方法一:定义一个变量,来标识是否退出
// 定义一个变量,来标识是否退出private static boolean isExit = false;Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); isExit = false; }};public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (!isExit) { isExit = true; Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); // 利用handler延迟发送更改状态信息 mHandler.sendEmptyMessageDelayed(0, 2000); } else { exit(this); } return false; }return super.onKeyDown(keyCode, event);}
方法二:保存点击时间
//保存点击的时间private long exitTime = 0;public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { exit(); } return false; } return super.onKeyDown(keyCode, event);}
0 0
- 退出App的几种方法
- 退出App的几种方法
- Android 双击退出APP的几种方法
- APP优雅退出的几种方式
- android退出app的四种方法
- 程序退出的几种方法
- 线程退出的几种方法
- 退出应用程序的几种方法
- android 程序的几种退出方法
- MFC应用程序退出的几种方法
- Android 应用退出的几种方法
- 程序退出的几种方法
- android退出程序的几种方法
- android退出应用程序的几种方法
- android 退出应用程序的几种方法
- C#程序退出的几种方法
- 关于几种退出方法
- android的退出程序的几种方法
- 二叉查找树
- 蓝桥杯--算法提高 01背包
- UNP Chapter 21 - 带外数据
- BZOJ 2463:谁能赢呢?【水】
- 蓝桥杯--历届试题 分糖果(模拟水题)
- 退出App的几种方法
- shell学习
- JDK7中的排序算法详解--Collections.sort和Arrays.sort
- Android PopupWindow的简单显示
- Quartz Demo
- 关于cocoa pods的使用
- Kafka数据流:让流处理更轻松
- C++扬帆远航——6(三色球)
- 带外数据