Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> ActivityLifecycleCallbacks的正確使用姿勢

ActivityLifecycleCallbacks的正確使用姿勢

編輯:關於Android編程

這是Android4.0之後的新Api,大多數人可能沒有在意這一改動。但是對於一些框架的設計使用卻有非常重要的意義的。

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);
    }
  重點在於
getApplication().dispatchActivityCreated(this, savedInstanceState);
    每當來到Activity的生命周期回調的時候,Activity都會將事件分發到Application對應的方法,而Application則會調用我們實現的ActivityLifecycleCallbacks接口。這樣使得我們可以在外部監聽到每個Activity的生命周期。   這樣的話,用處如下: 1.日志,保存記錄Activity的活動,以及做一些測試。

2.框架設計中,如Http請求框架,需要提供在Activity被銷毀時,cancel仍在隊列中的請求。

3.框架使用中,如EventBus,Xutils等IOC框架,需要在OnCreate和OnDestory中注冊和卸載的場景。可以使用ActivityLifecycleCallbacks避免顯式在Activity中調用其Api。

 

至於在4.0以下獲得相同效果,則需要代理系統框架中的Instrumentation類。

 

Object mainThread = KernelObject.declaredGet(application.getBaseContext(), "mMainThread");
        Field instrumentationField = KernelReflect.declaredField(mainThread.getClass(), "mInstrumentation");
        instrumentation = new MyInstrumentation();
        KernelObject.copy(KernelReflect.get(mainThread, instrumentationField), instrumentation);
        KernelReflect.set(mainThread, instrumentationField, instrumentation);


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved