Androidのライフサイクル
ActivityとCompositionのライフサイクルを理解します
「Androidのライフサイクル」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全4レッスンが含まれています。
ライフサイクルとは
すべてのAndroidのActivityは、ユーザーがアプリを開いたり、離れたり、戻ったりするのに合わせて、一連の状態をたどります。これがライフサイクルです。
ライフサイクルを理解すると、適切なタイミングで処理を開始・停止できるようになります。
Activityの主要なコールバック
従来のActivityライフサイクルのコールバックは、次の順番で実行されます。
onCreate— Activityが作成されています。onStart— 表示されるようになります。onResume— フォアグラウンドで操作可能な状態です。onPause/onStop/onDestroy— 画面を離れます。
一般的な流れ
アプリを開く場合:onCreate → onStart → onResume。
ホームボタンを押す場合:onPause → onStop。
戻る場合:onRestart → onStart → onResume。
ライフサイクルの状態とイベント
JetpackのLifecycleライブラリでは、これをStates(CREATED、STARTED、RESUMED、DESTROYED)とEvents(ON_CREATE、ON_START、...)でモデル化します。
コンポーネントは、低レベルのコールバックをオーバーライドする代わりに、これらを監視できます。
LifecycleOwner
Activity、Fragment、ComposeのホストはLifecycleOwnerです。これらは、他のコンポーネントが監視できるLifecycleオブジェクトを公開します。
val owner: LifecycleOwner = this // an Activity
val lifecycle = owner.lifecycleリソースにとって重要な理由
多くのリソースは、画面が表示されている間だけ有効にする必要があります。
- 位置情報の更新
- センサーリスナー
- カメラセッション
バッテリーを節約し、リークを避けるため、onStart/onResumeで開始し、onStop/onPauseで停止します。
Jetpack Composeのライフサイクル
ComposableにはActivityのコールバックがありません。その代わりに、コンポジションのライフサイクルがあります。Composableはコンポジションに入り、再コンポジションされ、最終的にそこから離れます。
DisposableEffectによるコンポジションへの反応
DisposableEffectは、Composableがコンポジションに入ったときにセットアップを実行し、そこから離れたときにクリーンアップを実行します。
@Composable
fun Screen() {
DisposableEffect(Unit) {
// setup, e.g. register listener
onDispose {
// cleanup when leaving composition
}
}
}Composeで実際のライフサイクルを監視する
Composableから実際のActivityライフサイクルイベントに反応するには、DefaultLifecycleObserverでLifecycleOwnerを監視します。
@Composable
fun OnResume(onResume: () -> Unit) {
val owner = LocalLifecycleOwner.current
DisposableEffect(owner) {
val obs = object : DefaultLifecycleObserver {
override fun onResume(o: LifecycleOwner) = onResume()
}
owner.lifecycle.addObserver(obs)
onDispose { owner.lifecycle.removeObserver(obs) }
}
}ViewModelとライフサイクル
覚えておきましょう。ViewModelはonStart/onStopのような個々のライフサイクル状態よりも長く存続します。所有者が完全に破棄されたときにのみクリアされます。だからこそ、そこに状態を保持しても安全なのです。
全体を組み合わせる
適切に構成された画面では、次のようにします。
- 永続的な状態をViewModelに保持します。
- 画面表示中のみ必要なリソースを、ライフサイクルを考慮して開始・停止します。
- UIが少なくともSTARTEDの状態にある間だけフローを収集します(次のレッスン)。
理解度チェック
ライフサイクルについての理解度を確認しましょう。
まとめ
学んだこと:
- ActivityはCREATED、STARTED、RESUMED、DESTROYEDの状態をたどります。
- Composeには独自のコンポジションのライフサイクルがあり、
DisposableEffectで処理します。 LifecycleOwnerを監視して、実際のライフサイクルイベントに反応します。- ViewModelは意図的にこれらの状態よりも長く存続します。
よくある質問
「Androidのライフサイクル」レッスンは無料ですか?
はい。「Androidのライフサイクル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全4レッスンが含まれています。
「Androidのライフサイクル」で何を学びますか?
ActivityとCompositionのライフサイクルを理解します ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Android Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Androidのライフサイクル」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAndroid Academyレッスンでコードを書いて実行できますか?
はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。