Android Lifecycle組件使用
Android中很多組件都具備生命週期功能,系統框架會在適合時機調用相應的生命週期方法,作爲開發者在開發業務時可能需要爭對組件的生命週期需要作出相應的處理;比如onDestroy需要釋放資源,防止內存泄漏甚至引發應用崩潰;
Android的生命週期Lifecycle就是用來解決該問題,同時可以將業務處理代碼從Fragment或Activity相關的生命週期方法中分離,這樣寫出的代碼更有條理性便於代碼後期維護
1. 集成
添加Lifecycle輕量級庫
implementation "android.arch.lifecycle:runtime:1.1.1"
implementation 'com.android.support:appcompat-v7:28.0.0'
2. 使用
public class HomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLifecycle().addObserver(new HomeObserver());
}
}
public class HomeObserver implements LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
void onCreate() {
Log.d("dbs", "===onCreate===");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
void onResume() {
Log.d("dbs", "===onResume===");
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
void onDestroy() {
Log.d("dbs", "===onDestory===");
}
}
啓動APP,查看控制檯輸出日誌
2020-03-21 21:17:23.850 D/dbs: ===onCreate===
2020-03-21 21:17:23.859 D/dbs: ===onResume===
點擊返回
2020-03-21 21:17:27.860 D/dbs: ===onDestory===
大家可以看到使用非常簡單,如果需要觀察HomeActivity生命週期,只需要將觀察者(HomeObserver)添加到Lifecycle中即可;一旦HomeActivity生命週期發生變化,HomeObserver就能被感知到,自動觸發相關方法
3. 疑問
HomeObserver是如何感知到HomeActivity生命週期呢?
下篇我將從源碼角度進行剖析HomeActivity的生命週期事件是如何轉發到HomeObserver中
Android Lifecycle源碼解析(一)