導入
Lifecycle は、Android Jetpack (公式開発キット) - Architecture (アーキテクチャ コンポーネント) のメンバーです。Activity または Fragment の現在のライフサイクル状態に基づいて動作を調整するライフサイクル対応コンポーネントを構築します。
平たく言えば、ライフサイクルはアクティビティまたはフラグメントのライフサイクルにバインドできます。これは、ライフサイクルに関連するビジネス ロジックを実行するのに便利です。
- アプリケーションシナリオ
-
控制视频缓冲的开始与停止:启动App的时候可以更快的开始缓冲视频,App销毁时停止缓冲。
-
开始和停止网络连接:应用位于前台时可能需要实时传输数据,并在应用进入后台时自动暂停。
-
控制页面动画的启动与停止:动画在页面可见时进行播放,不可见时停止。
使用
これは 2 つのステップに分かれています (オブザーバーは Android ソース コードによって実装されています:
- オブザーバーを作成する
- レジスターオブザーバー
オブザーバーを作成する
- LifecycleObserver インターフェースを実装するクラスを作成する
- その中にメソッドを作成します (メソッド名はオプションです)。パラメーターには LifecycleOwner を入力するかどうかを指定できます。
- メソッドにアノテーションを付けると、
@OnLifecycleEvent(Lifecycle.Event.XXX)
メソッドはアノテーションのライフサイクルの変化を監視できるようになります。
//实现Lifecycles的接口
public class MyObsever implements LifecycleObserver {
private static final String TAG = "TestLifecycleObserver";
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
// 2、在其内部创建方法(方法名随意),参数可填LifecycleOwner,也可不填。
void onCreate(LifecycleOwner owner) {
Log.e(TAG, "========onCreate====" + owner);
}
// 3、给方法加注解 @OnLifecycleEvent(Lifecycle.Event.XXX)
// 可以让该方法监听到注解生命周期的变化。
@OnLifecycleEvent(Lifecycle.Event.ON_START)
void onStart() {
Log.e(TAG, "========onStart");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
void onResume(LifecycleOwner owner) {
Log.e(TAG, "========onResume");
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
void onPause(LifecycleOwner owner) {
Log.e(TAG, "========onPause");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
void onStop(LifecycleOwner owner) {
Log.e(TAG, "========onStop");
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
void onDestroy(LifecycleOwner owner) {
Log.e(TAG, "========onDestroy");
}
// Lifecycle.Event.ON_ANY 可以监听所有生命周期变化
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
void onAny(LifecycleOwner owner) {
Log.e(TAG, "========onAny");
}
}
レジスターオブザーバー
AppCompatActivity と Fragment はデフォルトのオブザーバーであり、 getLifecycle().addObserver (オブザーバー) を呼び出すことで定義されたオブザーバーを登録できます。
あなたがいる限りアクティビティは AppCompatActivity から継承されますさん、またはあなたのものフラグメントは androidk
flagment.app から継承されます。、すると、彼ら自身がライフサイクル所有者たとえば、この部分の作業は
AndroidX ライブラリによって自動的に行われます。
監視するアクティビティまたはフラグメントに次のコードを追加するだけです。
//实现注册观察者
getLifecycle().addObserver(new MyObsever());