Activityの破棄

1759 ワード

単一のアクティビティについて、後退キーを押すか、アクティビティでfinish()メソッドを呼び出すと、アクティビティを破棄できます.ここでは、主にすべてのアクティビティを一度に破棄する方法について説明します.
1 activityを管理するツールクラスを作成する
public class ActivityCollector {
    public static List activities=new ArrayList<>();
    public static void add(Activity activity)
    {
       activities.add(activity);
    }
    public static void delete(Activity activity)
    {
        activities.remove(activity);
    }
    public static void exit()
    {
        for(Activity activity:activities)
        {
            // activity 
            if(activity.isFinishing())
            {
                activity.finish();
            }
        }
    }
}

2 BaseActivityをすべてのアクティビティの親として作成し、onCreateメソッドとonDestoryメソッドを書き換えるとともに、superメソッドを忘れないでください.superメソッドを追加しないとエラーが発生します.
public class BaseActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // list 
        ActivityCollector.add(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // list
        ActivityCollector.delete(this);
    }
}

3各アクティビティはBaseActivityを継承し、onCreateでsuperを呼び出します.onCreate、onDestoryでsuperを呼び出します.onDestory
public class testActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
    }

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

4すべてのアクティビティを終了する方法
必要な場所でActivity Collectorを呼び出します.exit()は、すべてのアクティビティを終了できます.
ActivityCollector.exit()