相信有些小伙伴在开发的过程中涉及到用一个工具类,我暂定名字叫做ActivityListUtilts ,是不是看着名字就知道是干嘛的
就是用来收集所有的activity。咋们一般在baseActivity里面做添加,移除处理。那么有没有更简单的方法呢?
接下来隆重介绍ActivityLifecycleCallbacks:
ActivityLifecycleCallbacks是Application提供用来监听所有activity生命周期的接口,如下所示,很清楚的对应着Activity所有的生命周期,有兴趣的可以看下源码
public interface ActivityLifecycleCallbacks {
void onActivityCreated(Activity activity, Bundle savedInstanceState);
void onActivityStarted(Activity activity);
void onActivityResumed(Activity activity);
void onActivityPaused(Activity activity);
void onActivityStopped(Activity activity);
void onActivitySaveInstanceState(Activity activity, Bundle outState);
void onActivityDestroyed(Activity activity);
}
那么该如何使用呢?
首先写一个类继承Appliction,如下所示:
public class MyAppliction extends Application {
@Override
public void onCreate() {
super.onCreate();
ARouter.init(this);
Stack<Activity> stack = new Stack<>(); //用来收集activity的集合
//实现注册监听
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Log.e("tag","activity=" + activity);
}
@Override
public void onActivityStarted(Activity activity) {
Log.e("tag","activity=" + activity);
stack.add(activity);
}
@Override
public void onActivityResumed(Activity activity) {
Log.e("tag","activity=" + activity);
}
@Override
public void onActivityPaused(Activity activity) {
Log.e("tag","activity=" + activity);
}
@Override
public void onActivityStopped(Activity activity) {
Log.e("tag","activity=" + activity);
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Log.e("tag","activity=" + activity);
}
@Override
public void onActivityDestroyed(Activity activity) {
Log.e("tag","activity=" + activity);
stack.pop();
}
});
}
}
接下来记得在清单文件中配置,activiy中我们不需要再做其他处理就行了,是不是很简单。