兩種方法,一是在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從後臺回到前臺");
}