ActivityLifecycleCallbacks——追蹤Activity生命週期

目標

之前使用全局廣播 + BaseActivity + Activity棧中位置判斷 實現全局數據接收、全局彈框。實在是有點兒low,後面請教高人,發現一個十分簡單的方式對所有的Activity的生命週期進行監聽追蹤,既節約了性能,也提升了B格。

ActivityLifecycleCallbacks簡介

每個Activity生命週期的執行都會被此接口監聽,可以通過註冊此接口實現Activity生命週期的監聽。
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);
    }

實現

1.接口實現類AppActivityLifecycleTracker中進行具體的操作:

/**
 * Activity生命週期追蹤
 *
 * @author fengzhen
 * @version v1.0, 2017/7/13
 */
public class AppActivityLifecycleTracker implements Application.ActivityLifecycleCallbacks{
    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
    }

    @Override
    public void onActivityStarted(Activity activity) {
        // 當acitivity啓動,註冊廣播,進行監聽
    }

    @Override
    public void onActivityResumed(Activity activity) {
    }

    @Override
    public void onActivityPaused(Activity activity) {
        // 當activity停止,銷燬廣播,後臺不進行廣播監聽
    }

    @Override
    public void onActivityStopped(Activity activity) {
    }

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

    @Override
    public void onActivityDestroyed(Activity activity) {
    }
}

2.在繼承自Application的BaseApplication的onCreate()方法中進行註冊該tracer

    @Override
    public void onCreate() {
        // 註冊生命週期追蹤
        registerActivityLifecycleCallbacks(new AppLifecycleTracker());
    }

如此,便更加簡單、高效、靈活的實現的對app中所有acitivity生命週期的追蹤。

發佈了82 篇原創文章 · 獲贊 69 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章