0Pricing
Android Academy · レッスン

アクティビティとライフサイクル

Activityとは何かを学び、Activityのライフサイクルコールバック(onCreate、onStart、onResume、onPause、onStop、onDestroy)を理解して、ViewBindingを使用します。

「アクティビティとライフサイクル」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン2/7です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全7レッスンが含まれています。

Activityとは

Activityは、Androidアプリ内の1つの画面です。

  • ログイン、ホーム、設定など、すべての画面がActivityです
  • レイアウト(XML)とユーザー操作を管理します
  • AndroidManifest.xmlで宣言します

Webページにおけるページに相当するものだと考えてください。各ページがActivityです。

Activityのライフサイクル

Activityは、ユーザーがアプリ内を移動すると、一連のライフサイクル状態を経ます。

  • Created → Started → Resumed(表示中かつアクティブ)
  • Paused(一部が非表示)
  • Stopped(完全に非表示)
  • Destroyed(Activityが破棄された状態)

これらの遷移に対応するには、ライフサイクルメソッドをオーバーライドします。

ライフサイクルコールバック

主なライフサイクルコールバックは6つあります。

  • onCreate() — Activityの作成中です。ここでレイアウトを設定します。
  • onStart() — Activityが表示されます。
  • onResume() — Activityがフォアグラウンドにあり、ユーザーが操作できます。
  • onPause() — ユーザーが離れようとしています。一時的なデータを保存します。
  • onStop() — Activityが表示されなくなります。
  • onDestroy() — Activityが破棄されます。

MainActivityの例

ライフサイクルをログに記録する最小構成のActivityです。

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    private val TAG = "MainActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.d(TAG, "onCreate")
    }

    override fun onResume() {
        super.onResume()
        Log.d(TAG, "onResume — user is here")
    }

    override fun onPause() {
        super.onPause()
        Log.d(TAG, "onPause — saving state")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d(TAG, "onDestroy")
    }
}

ライフサイクルが重要な理由

ライフサイクルを無視すると、次のような問題が起こります。

  • onResumeで動画を再生し、onPauseで一時停止し忘れる — バッテリーを消耗します
  • onCreateでセンサーリスナーを登録し、onDestroyで登録解除しない — メモリリークが発生します
  • onPauseでフォームデータを保存しない — 通話中にユーザーの入力内容が失われます

状態の保存:onSaveInstanceState

ユーザーがスマートフォンを回転させると、Activityは破棄されて再作成されます。その際、UIの状態が失われます。

一時的な状態はonSaveInstanceState(bundle)で保存し、onCreate(savedInstanceState)で復元します。

状態の保存と復元

構成の変更後もデータを保持します。

class CounterActivity : AppCompatActivity() {

    private var count = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_counter)

        // Restore saved state after rotation
        count = savedInstanceState?.getInt("count") ?: 0
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("count", count)
    }
}

バックスタック

AndroidはActivityのバックスタックを管理します。

  • 新しいActivityを起動すると、スタックに積まれます
  • Backを押すと、スタックの一番上にあるActivityが取り出され、破棄されます
  • 直前のActivityは自動的に再開されます

そのため、現在の画面をバックスタックから意図的に削除したい場合を除き、finish()を手動で呼び出すべきではありません。

構成の変更

構成が変更されると(回転、言語変更、キーボードの接続など)、デフォルトでActivityが再作成されます。

現在推奨されている解決策はViewModelを使用することです。ViewModelは構成の変更後も存続し、安全にデータを保持します。ViewModelについてはArchitectureモジュールで学びます。

確認問題

レイアウトの設定(setContentViewの呼び出し)は、どのライフサイクルメソッドで行うべきですか。

まとめ:Activityとライフサイクル

ここまでで、AndroidのActivityについて理解できました。

  • Activity = アプリ内の1つの画面
  • ライフサイクル:onCreate → onStart → onResume → onPause → onStop → onDestroy
  • 一時的な状態はonSaveInstanceStateで保存する
  • 画面を回転するとActivityが破棄され、再作成される
  • Androidはバックスタックを自動的に管理する

次は、レイアウトとViewを使った画面設計について学びます。

よくある質問

「アクティビティとライフサイクル」レッスンは無料ですか?

はい。「アクティビティとライフサイクル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全7レッスンが含まれています。

「アクティビティとライフサイクル」で何を学びますか?

Activityとは何かを学び、Activityのライフサイクルコールバック(onCreate、onStart、onResume、onPause、onStop、onDestroy)を理解して、ViewBindingを使用します。 ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Android Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/7です。

「アクティビティとライフサイクル」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAndroid Academyレッスンでコードを書いて実行できますか?

はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. プロジェクト構成とマニフェスト
  2. アクティビティとライフサイクル
  3. レイアウトとビュー
  4. ユーザー入力の処理
  5. Intentとナビゲーション
  6. フラグメント
  7. 権限と実行時リクエスト
← Android Academyに戻る