0Pricing
Android Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ViewModelを使う理由
  2. ViewModelからStateを公開する
  3. Androidのライフサイクル
  4. collectAsStateWithLifecycle
← Android Academyに戻る