Android application development 第12章:Activityのライフサイクルと onCreate / onStart / onResume の扱い方

■ ライフサイクルとは?

Androidアプリでは、ユーザーがアプリを起動・閉じたり、電話がかかってきたり、別アプリに切り替わったり…という状況の変化が頻繁に発生します。
こうした アプリの状態の変化に応じて自動的に呼び出されるメソッド群 を「ライフサイクル」と呼びます。


■ 基本の3つ:onCreate → onStart → onResume

1. onCreate(Bundle savedInstanceState)

  • Activityが初めて生成されるときに1回だけ呼ばれます。
  • 初期化処理(レイアウト設定、Viewの取得、変数の初期化など)を書くのが一般的です。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);  // UIを設定
    Log.d("ライフサイクル", "onCreate呼ばれた");
}

Javaでいうと、コンストラクタのようなイメージですが、AndroidではUI設定までやるのがポイントです。


2. onStart()

  • Activityが「見える状態」になる直前に呼ばれます
  • アプリが前面に表示される直前のタイミングです。
@Override
protected void onStart() {
    super.onStart();
    Log.d("ライフサイクル", "onStart呼ばれた");
}

ここでは特に表示開始に関係する処理(データの読み込みなど)を入れることがあります。


3. onResume()

  • ユーザーが実際に操作できる状態になるときに呼ばれます。
  • つまり、「画面が表示されて、入力を受け付けている」状態の入口です。
@Override
protected void onResume() {
    super.onResume();
    Log.d("ライフサイクル", "onResume呼ばれた");
}

アニメーションの再開、センサーやカメラの起動など、ユーザー操作に関係する処理をここに書くことが多いです。


■ 他にもある代表的なライフサイクル

メソッド名状態・目的
onPause()他の画面に遷移するとき(Activityの手前に別画面がかぶる)
onStop()画面が完全に見えなくなるとき(別のActivityに切り替わるなど)
onDestroy()Activityが完全に終了・破棄されるとき
onRestart()一度 onStop() されたActivityが、再び再開されるとき

■ ライフサイクルのイメージ図(簡易)

■ よくある間違い・注意点

  • onCreate() に処理を詰め込みすぎる → 起動が遅くなりやすい
  • onResume() に重たい処理(DBアクセスなど)を書かない
  • 一時停止中のデータ保存は onPause() に書くと安全
  • Androidは「自動で状態遷移する」ので、自分で明示的に呼ばない

■ 状態ごとの処理まとめ(実用視点)

処理内容書く場所
画面の初期レイアウト、Viewの初期化onCreate()
画面を開くたびにリストを更新したいonStart() or onResume()
センサーやカメラの再開onResume()
データの保存、一時停止処理onPause()
監視サービスやアニメーションの停止onStop()
アプリ終了時のクリーンアップonDestroy()

■ まとめ

  • onCreate():初回起動時の準備
  • onStart():表示開始直前(見える状態へ)
  • onResume():ユーザーが操作可能になる直前

それぞれの役割を覚えておくと、アプリの動作に一貫性を持たせやすくなります。

mh

Related Posts

Android application development 第11章:Fragmentの導入とActivityとの連携

■ なぜFragmentが必要なのか? 最初に疑問に思うのは…

Android application development 第10章:Bundleを使ったデータの受け渡し

Androidアプリでは、画面(Activity)間でデータ…

You Missed

Kubernetes Learning 第8章:ServiceとIngress ~クラスタ外との橋渡し~

  • 投稿者 mh
  • 5月 12, 2025
  • 12 views

Android application development 第12章:Activityのライフサイクルと onCreate / onStart / onResume の扱い方

  • 投稿者 mh
  • 5月 12, 2025
  • 14 views

Kubernetes Learning 第7章:Pod / ReplicaSet / Deployment / StatefulSet を理解する

  • 投稿者 mh
  • 5月 11, 2025
  • 22 views

Android application development 第11章:Fragmentの導入とActivityとの連携

  • 投稿者 mh
  • 5月 11, 2025
  • 24 views

Kubernetes Learning 第6章:DeploymentとPodを動かす簡単なハンズオン

  • 投稿者 mh
  • 5月 10, 2025
  • 24 views

Android application development 第10章:Bundleを使ったデータの受け渡し

  • 投稿者 mh
  • 5月 10, 2025
  • 25 views