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 第33章:実践ミニアプリ:天気情報アプリ

Android application development 第32章:実践ミニアプリ:シンプルなToDoリスト

You Missed

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 10 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 28 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 36 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 41 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 44 views

Kubernetes Learning 第37章:JenkinsやGitHub ActionsからのKubernetesデプロイ例 ~CI/CDツールとKubernetesをつなげてみよう~

  • 投稿者 mh
  • 6月 17, 2025
  • 43 views