android销毁Activity和被系统销毁时的数据保存
16lz
2021-01-23
//定义map,保存启动的 activityspublic class ActHelper { private static HashMap map = new HashMap(); public static void addActivity(Activity activity) { map.put(activity.getClass().getSimpleName(), activity); } public static void removeActivity(Activity activity) { map.remove(activity.getClass().getSimpleName()); } public static void finishAll() { for (String key : map.keySet()) { Activity activity = map.get(key); if (!activity.isFinishing()) { activity.finish(); } } } public static void finishThis(Class clas) { String str = clas.getSimpleName(); if (map.containsKey(str)) { Activity activity = map.get(str); if (!activity.isFinishing()) { activity.finish(); } } } public static void finishExcept(Class... clas) { for (int i = 0; i < clas.length; i++) { String str = clas[i].getSimpleName(); if (map.containsKey(str)) { map.remove(str); } } finishAll(); }}
系统内存不足时,会主动销毁activity
//onRestoreInstanceState()会在onStart()和onResume()之间执行或者在oncreat方法中判断 //只有在activity销毁重建的时候,才会调用 @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } // 会在 onStop()方法调用之前 调用该方法,保存当前状态 //当用户主动销毁activity,如按back键,或直接执行finish(),不会执行 //遇到意外情况(内存不足,用户直接按home键)由系统直接销毁一个Activity时,就会调用 @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState); }
更多相关文章
- android 用户注册demo
- Android--ListView滑动时出现黑屏解决方法(整合)
- Android不错的图片压缩方法
- Android 8.1 系统锁屏显示流程整理
- Android延时任务方法
- Nodejs 或 js 判断手机操作系统 Android or IOS
- Android系统开机启动流程
- android apilevel和android系统版本对应关系