相信有些小伙伴在开发的过程中涉及到用一个工具类,我暂定名字叫做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中我们不需要再做其他处理就行了,是不是很简单。