1. 程式人生 > >Android app生命週期全域性監聽(判斷app是否處於後臺)

Android app生命週期全域性監聽(判斷app是否處於後臺)

一、在Application中註冊ActivityLifecycleCallbacks:

    registerActivityLifecycleCallbacks(myActivityLifecycle);
public class MyApplication extends Application {

    private static MyActivityLifecycle myActivityLifecycle;

    @Override
    public void onCreate() {
        super.onCreate();
        myActivityLifecycle = new MyActivityLifecycle();
        registerActivityLifecycleCallbacks(myActivityLifecycle);
    }

    /**
     *
     * @return  true  處於後臺   false  前臺
     */
    public static boolean isAppBackground() {
        if (myActivityLifecycle.getStartCount() == 0) {
            return true;
        }
        return false;
    }
}


二、MyActivityLifecycle實現Application.ActivityLifecycleCallbacks

public class MyActivityLifecycle implements Application.ActivityLifecycleCallbacks {
    private int startCount;

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        Log.e("==============","======>onActivityCreated");
    }

    @Override
    public void onActivityStarted(Activity activity) {
        Log.e("==============","======>onActivityStarted");
        startCount++;
    }

    @Override
    public void onActivityResumed(Activity activity) {
        Log.e("==============","======>onActivityResumed");
    }

    @Override
    public void onActivityPaused(Activity activity) {
        Log.e("==============","======>onActivityPaused");
    }

    @Override
    public void onActivityStopped(Activity activity) {
        Log.e("==============","======>onActivityStopped");
        startCount--;
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        Log.e("==============","======>onActivityDestroyed");
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
        Log.e("==============","======>onActivitySaveInstanceState");
    }

    public int getStartCount(){
        return startCount;
    }
}