两种方法,一是在activity里,二是在 Applicition里
一、在activity里:这里分两种情况,1是单个activity监听,2是全局监听,
一般都会全局监听,加在baseActivity里,方法一样
/**
* app是否处于前台
*/
public static boolean isActive;
/**
* 恢复,可见
*/
@Override
protected void onResume() {
if (!isActive) {
isActive = true;
LogUtil.i("程序从后台唤醒");
onBackApp();
}
super.onResume();
}
/**
* 停止,不可见
*/
@Override
protected void onStop() {
if (!isAppOnForeground()) {
//app 进入后台
LogUtil.i("程序进入后台");
onLeaveApp();
}
super.onStop();
}
/**
* 从后台返回app
*/
protected void onBackApp() {
}
/**
* 程序进入后台
*/
protected void onLeaveApp() {
}
二、在 Applicition里
/**
* 计数器
*/
private int appCount = 0;
private Boolean isActive = false;
@Override
public void onCreate() {
super.onCreate();
actionListener();
}
private void actionListener() {
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
appCount++;
if (isActive) {
//应用从后台回到前台 需要做的操作
onBackApp(activity);
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
appCount--;
if (appCount == 0) {
//应用进入后台 需要做的操作
onLeaveApp(activity);
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
}
/**
* 从后台返回app
*
* @param activity
*/
private void onBackApp(Activity activity) {
isActive = false;
LogUtil.i("vvv从后台回到前台");
}