Android Activity 全局管理 终极解决方案
管理Activity的好处
在Android 开发中 Activity 的管理 对于一个App是至关重要的,管理所有Activity 不仅能实现在应用推出时关闭所有activity,还能实现获取当前Activity上一个Activity、寻找某个类型的Activity、结束某个Activity,以及Activity之间的跳转等多种交互操作。
传统的实现方式
之前管理Activity 的方式是在BaseActivity onCreate 方法中将Activity 实例存入工具类 或者BaseActivity 中维护的一个List或stack中,这样能应对多数情况下的问题,但假如有Activity没有继承封装的BaseActivity,那每个Activity 就都要在onCreate方法中写添加到维护list的代码,同时当Activity销毁时,也要从list中将Activity移除,等等,逻辑可谓复杂,代码也较难维护。
终极解决方案
所幸的是,自Android 4.0(API-14)开始,Application 中多了一个方法,可以设置全局监听Activity的生命周期。这个方法就是:registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks activityLifecycleCallbacks)在传入的参数 activityLifecycleCallbacks 能得到全局所有Activity 生命周期的回调,因此 我们可以从Application中全局监听所有Activity 并对其进行管理,再也不用在Activity中处理那些扯淡的逻辑,不废话,直接上代码:
package com.kevin.baselibrary.app;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import com.kevin.baselibrary.utils.LogUtils;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Created by bailiangjin on 16/4/11.
*/
public abstract class AbsSuperApplication extends Application {
protected static Context context;
protected static String appName;
/**
* 维护Activity 的list
*/
private static List<Activity> mActivitys = Collections
.synchronizedList(new LinkedList<Activity>());
@Override
public void onCreate() {
super.onCreate();
context = this<