[Android/Java] Jetpack LifecycleObserver


Android Studio 4.1.3(windows版) で動作確認しています

Jetpack LifecycleObserverの簡単な説明とサクッと試すためのコードです

Android DeveloperのLifecycleObserverの説明は以下です

getViewLifecycleOwner()についてはこちら

確認用コード

各イベント/イベントの引数は省略できます
Lifecycle.Event.ON_ANYはすべてのイベントを受け取れて
Lifecycle.Event.ON_ANYのみ引数でLifecycle.Eventを指定できます
getCurrentState()で現在のLifecycleの状態も取得できます

Fragmentで使用する場合はFragmentViewLifecycleOwner(getViewLifecycleOwner())の
LifecycleObserverを使用した方が安全なのでは?と思ってますが、
androidx.fragment.app.FragmentのgetLifecycle()で直接呼び出しても問題ないかもしれません
詳しい方がいましたら教えていただけると助かります

Fragment
// FragmentのonCreateView/onActivityCreatedなどに実装してください
getViewLifecycleOwner().getLifecycle().addObserver(new LifecycleObserver() {
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    void onCreate(LifecycleOwner source) {
        Log.d("Fragment", "Lifecycle.Event.ON_CREATE");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    void onStart(LifecycleOwner source) {
        Log.d("Fragment", "Lifecycle.Event.ON_START");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    void onResume(LifecycleOwner source) {
        Log.d("Fragment", "Lifecycle.Event.ON_RESUME");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    void onPause(LifecycleOwner source) {
        Log.d("Fragment", "Lifecycle.Event.ON_PAUSE");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    void onStop(LifecycleOwner source) {
        Log.d("Fragment", "Lifecycle.Event.ON_STOP");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    void onDestroy(LifecycleOwner source) {
        Log.d("Fragment", "Lifecycle.Event.ON_DESTROY");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_ANY)
    void onAny(LifecycleOwner source, Lifecycle.Event event) {
        Log.d("Fragment", "Lifecycle.Event.ON_ANY: " + event.toString());
        Log.d("Fragment", source.getLifecycle().getCurrentState().name() + ": " + source.toString());
    }
});