ActivityLifecycleCallbacks

4.0(API Level 14)新增了一个Application接口ActivityLifecycleCallbacks
Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。
为什么用ActivityLifecycleCallbacks?
以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume()

重写Application的onCreate()方法,或在Application的无参构造方法内,调用Application.registerActivityLifecycleCallbacks()方法,并实现ActivityLifecycleCallbacks接口

public void onCreate() {
super.onCreate();
this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

@Override
public void onActivityStopped(Activity activity) {
Logger.v(activity, “onActivityStopped”);
}

@Override
public void onActivityStarted(Activity activity) {
Logger.v(activity, “onActivityStarted”);
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Logger.v(activity, “onActivitySaveInstanceState”);
}

@Override
public void onActivityResumed(Activity activity) {
Logger.v(activity, “onActivityResumed”);
}

@Override
public void onActivityPaused(Activity activity) {
Logger.v(activity, “onActivityPaused”);
}

@Override
public void onActivityDestroyed(Activity activity) {
Logger.v(activity, “onActivityDestroyed”);
}

@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Logger.v(activity, “onActivityCreated”);
}
});
};

应用:ActivityManager:
public class ActivityManager implements Application.ActivityLifecycleCallbacks {
private static ActivityManager manager = new ActivityManager();
public static ActivityManager get () {
return manager;
}
private LinkedList stack = new LinkedList<>();

@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
if (!stack.contains(activity)) {
stack.add(activity);
}
}

@Override
public void onActivityStarted(Activity activity) {

}

@Override
public void onActivityResumed(Activity activity) {

}

@Override
public void onActivityPaused(Activity activity) {

}

@Override
public void onActivityStopped(Activity activity) {

}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

}

@Override
public void onActivityDestroyed(Activity activity) {
if (stack.contains(activity)) {
stack.remove(activity);
}
}

public Activity topActivity () {
Activity activity = null;
if (!stack.isEmpty()) {
activity = stack.getLast();
}
return activity;
}

public void registerSelf(Context context) {
Application application = (Application) context.getApplicationContext();
application.registerActivityLifecycleCallbacks(ActivityManager.get());
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值