所有活动都基础自BaseActivity
1、TAG字符串不使用static类型,让任意一个继承自BaseActivity的活动都能有自己独一无二的TAG字符串(TAG为相对此项目的路径名字:即该活动名称)
2、覆写所有onCreate、onStart 、onResume、onPause、onStop、onDestroy以及onRestart函数,在其中加上日志信息,方便观察每个活动的各种状态
4、设置活动管理类ActivityCollector,其中设置一个静态list用于存储所有被create之后的活动,再在其中设置add方法、remove方法、finishAll方法
3、单独在onCreate和onDestroy两个“对子函数”里加上活动管理类的方法,onCreate中加上ActivityCollector.addActivity方法,在onDestroy函数中加上ActivityCollector.removeActivity方法,保证活动管理类里面的静态list能够始终有所有还处在create和destroy之间“活动的生命周期”里面的活动。
ActivityCollector代码
package com.example.activitytest;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<>();
public static void addActivity(Activity activity){
activities.add(activity);
}
public static void removeActivity(Activity activity){
activities.remove(activity);
}
public static void finishAll(){
for(Activity activity : activities){
activity.finish();
}
}
}
BaseActivity代码
package com.example.activitytest;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class BaseActivity extends AppCompatActivity {
public final String TAG = this.getClass().getSimpleName();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity",getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG,"onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG,"onResume");
}
@Override
protected void onPause(){
super.onPause();
Log.d(TAG,"onPause");
}
@Override
protected void onStop(){
super.onStop();
Log.d(TAG,"onStop");
}
@Override
protected void onDestroy(){
super.onDestroy();
Log.d(TAG,"onDestroy");
ActivityCollector.removeActivity(this);
}
@Override
protected void onRestart(){
super.onRestart();
Log.d(TAG,"onRestart");
}
}