android销毁Activity和被系统销毁时的数据保存

    xiaoxiao2023-03-24  5

    //定义map,保存启动的 activitys public class ActHelper { private static HashMap<String, Activity> map = new HashMap<String, Activity>(); 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); }

    转载请注明原文地址: https://ju.6miu.com/read-1202639.html
    最新回复(0)