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