ActivityLifecycleCallbacks

ActivityLifecycleCallbacks是什麼?

  • Application經過此接口提供了一套回調方法,用於讓開發者對Activity的生命週期事件進行集中處理。

爲何用ActivityLifecycleCallbacks?

  • 以往若需監測Activity的生命週期事件代碼,你多是這樣作的,重寫每個Acivity的onResume(),而後做統計和處理:
@Override  
protected void onResume() {  
  super.onResume();  
  //TODO 處理和統計代碼  
  Log.v(TAG, "onResume");  
} 
  • ActivityLifecycleCallbacks接口回調能夠簡化這一繁瑣過程,在一個類中做統一處理

ActivityLifecycleCallbacks怎麼用?

  • android.app.Application.ActivityLifecycleCallbacks
  • 要求API 14+ (Android 4.0+)
  • 繼承Application
  • 重寫Application的onCreate()方法,或在Application的無參構造方法內,調用Application.registerActivityLifecycleCallbacks()方法,並實現ActivityLifecycleCallbacks接口
public void onCreate() {  
  super.onCreate();  
  this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {  
   
    @Override  
    public void onActivityStopped(Activity activity) {  
        Logger.v(activity, "onActivityStopped");  
    }  
   
    @Override  
    public void onActivityStarted(Activity activity) {  
        Logger.v(activity, "onActivityStarted");  
    }  
   
    @Override  
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {  
        Logger.v(activity, "onActivitySaveInstanceState");  
    }  
   
    @Override  
    public void onActivityResumed(Activity activity) {  
        Logger.v(activity, "onActivityResumed");  
    }  
   
    @Override  
    public void onActivityPaused(Activity activity) {  
        Logger.v(activity, "onActivityPaused");  
    }  
   
    @Override  
    public void onActivityDestroyed(Activity activity) {  
        Logger.v(activity, "onActivityDestroyed");  
    }  
   
    @Override  
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {  
        Logger.v(activity, "onActivityCreated");  
    }  
  });  
};  

 

 

ActivityLifecycleCallbacks的拓展用法

  • 本次初探僅嘗試使用Log日誌工具做簡要測試,如需知足較複雜的統計或調試需求時,此法可能會大大減小插入代碼量,提升效率java

  • 在Fragment也能夠提供相似方法的開源庫 https://github.com/soarcn/AndroidLifecyleandroid

相關文章
相關標籤/搜索