android销毁Activity和被系统销毁时的数据保存
16lz
2021-12-04
//定义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 JNI cocos2dx调用对话框
- 2013.06.26——— android 关于Scroller
- [置顶] 调用Android发短信接口Intent.ACTION_SENDTO
- 对View DrawingCache的理解
- Android(安卓)Progrees处理
- android 调用call
- [Innost]Android深入浅出之Binder机制
- Android延时任务方法
- Android:Service