Activity的回收

Activity的回收與操做超時的處理

一、Activity的回收 
針對多個activity退出的處理ide

關鍵代碼: 
一、新建活動管理類:this

public class ActivityCollector {
    private static List<Activity> activityList = new ArrayList<Activity>();
    public static void addActivity(Activity activity){
        activityList.add(activity);
    }
    public static void removeActivity(Activity activity){
        activityList.remove(activity);
    }

    public static void finishAllButLast(){
        Activity activity = activityList.get(activityList.size()-1);
        removeActivity(activity);

        for (Activity activityItem: activityList){
            if (!activityItem.isFinishing()){
                activityItem.finish();
            }
        }

        activityList.clear();
        activityList.add(activity);
    }

  //退出全部activity
    public static void finishAll(){
        for (Activity activity: activityList){
            if (!activity.isFinishing()){
                activity.finish();
            }
        }
        activityList.clear();
    }
}

 

 

二、建立基類BaseActivity,並使全部的activity繼承自該基類 。在建立時,添加到活動管理器,銷燬時,從活動管理器中移除。spa

public class BaseActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}

若是須要銷燬全部activity,只需調用finishAll()便可code

相關文章
相關標籤/搜索