Lifecycles用來管理您的 Activity 和 Fragment 生命周期
生命周期感知型組件可執(zhí)行操作來響應另一個組件(如 Activity 和 Fragment)的生命周期狀態(tài)的變化盒卸。這些組件有助于您寫出更有條理且往往更精簡的代碼,這樣的代碼更易于維護。
一種常見的模式是在 Activity 和 Fragment 的生命周期方法中實現依賴組件的操作哼绑。但是援所,這種模式會導致代碼條理性很差而且會擴散錯誤湿硝。通過使用生命周期感知型組件臂痕,您可以將依賴組件的代碼從生命周期方法移入組件本身中匾南。
在 Android 框架中定義的大多數應用組件都存在生命周期尤慰。生命周期由操作系統(tǒng)或進程中運行的框架代碼管理馏锡。它們是 Android 運作方式的核心,應用必須遵循它們伟端。如果不這樣做杯道,可能會引發(fā)內存泄露甚至應用崩潰。
1责蝠、Lifecycles的使用
// lifecycle 依賴引入
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'//ViewModel
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'// Lifecycle
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'//liveData
-
創(chuàng)建LifecycleObserver
public class MyObserver implements LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume() {
...
Log.e(TAG, "onResume()");
Log.e(TAG, "當前生命周期狀態(tài)=" + owner.getLifecycle().getCurrentState().name());
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void onPause() {
...
Log.e(TAG, "onPause()");
Log.e(TAG, "當前生命周期狀態(tài)=" + owner.getLifecycle().getCurrentState().name());
}
}
-
然后在Activity里面調用即可
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
getLifecycle().addObserver(new MyObserver());
}
}