很多同学都会遇到一些关于监控app前后台的需求。
比如返回后台时,执行些任务,返回前台时,执行些任务。
话不多说,原生api满足你的需求,那就是 ActivityLifecycleCallbacks
且看application中的这个接口
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);
}
对,你没看错,监控activity的生命周期
思路:
1、实现这个接口
2、application中注册
3、完成
上代码:
1、实现这个接口
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import android.util.Log;
public class MyLifecycleHandler implements Application.ActivityLifecycleCallbacks {
private int count = 0;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
if (count == 0) { //后台切换到前台
Log.v("MyLifecycleHandler", ">>>>>>>>>>>>>>>>>>>App切到前台");
}
count++;
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
count--;
if (count == 0) { //前台切换到后台
Log.v("danxx", ">>>>>>>>>>>>>>>>>>>App切到后台");
}
}
@Override
public void onActivityDestroyed(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
}
2、application中注册
registerActivityLifecycleCallbacks(new MyLifecycleHandler());
3、完成
也可以单独写一个类,在构造函数中注册回调函数
public class testLinkBackToForeground {
public testLinkBackToForeground(Application application){
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
//实现接口方法
}
}
}
在application中直接new testLinkBackToForeground(this);搞定
当然,在回调函数中,可以控制个别activity启动、关闭等执行特定方法,这里就不细说了
就到这,谢谢大家