2011-04-01 33 views
8

一個我寫的需要作出反應的類:讓對象監聽Activity生命週期事件?當以下活動事件發生

  • 在onStart()
  • 的onPause()
  • 的onResume()
  • 的onStop()

我可以對活動本身的反應:

公共類活動擴展應用程序nContext { protected void onCreate(Bundle savedInstanceState);

protected void onStart(); 

protected void onRestart(); 

protected void onResume(); 

protected void onPause(); 

protected void onStop(); 

protected void onDestroy(); 

}

從活動我可以告訴大家,已經發生了一定的事件有問題的對象,但我不喜歡這樣的想法:它要求開發人員來實現我的對象之外的邏輯/類。理想情況下,我希望該對象負責註冊這些事件,並將其自身設置爲一個監聽器,而與該活動無關。

任何想法?提前致謝。

回答

7

API級別14有Application.ActivityLifecycleCallbacks。
在此之前,afaik,抱歉,沒有。
如果要提供你的類給別人,要麼需要提供可擴展的最常見的活動抽象類,或讓他們把自己的活動的生命週期方法的某些調用,如

protected void onPause() { 
    super.onPause(); 
    yourClassInstance.onPause(); 
}

五月以及使其更加通用,並創建接受NotifyActivity.LifecycleListener的抽象NotifyingActivity類,並讓您的類實現這樣一個偵聽器並在其構造函數中註冊自己。

+1

使用'Application.ActivityLifecycleCallbacks'的例子,可能是有用的人:https://gist.github.com/alexjlockwood/6298122 – gustavohenke 2015-10-13 16:36:53

-1

您可以使用this library,它完全符合您的要求,而無需在您的活動或基本活動中編寫代碼。

而且非常簡單易用:

ActivityListener.bind(mActivity).with(mCallback); 

也許它可以幫助別人