atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
Androidアプリ開発ノート
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
Androidアプリ開発ノート
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
Androidアプリ開発ノート
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • Androidアプリ開発ノート
  • アクティビティのライフサイクル

Androidアプリ開発ノート

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

最終更新:2012年09月30日 14:53

conn

- view
メンバー限定 登録/ログイン

基本的なアクティビティのライフサイクル


ほとんどのAndroidアプリは、起動するとデフォルトアクティビティを実行し、doCreateメソッドが呼ばれる。
onCreateメソッドは、その名の通りアクティビティのインスタンスが生成された直後に呼ばれる。
このようにアクティビティの状態が変化するごとに呼ばれるメソッドが他に幾つかある。

onCreate アクティビティの生成直後、画面表示前。生成から破棄までの間に1度だけ
onStart アクティビティにレイアウトをセットし、画面に表示した直後
onResume アクティビティを表示し、ユーザーの入力を受け付け開始した直後
onPause アクティビティを一時停止した直後。表示したまま、もしくは一部を表示したままの状態
onStop アクティビティを停止、画面は完全に非表示
onRestart アクティビティを再開、Stopedから戻ったときなど
onDestroy アクティビティを破棄。生成から破棄までの間に1度だけ


アクティビティの起動


アクティビティが起動すると、onCreate が実行され、onCreate内の処理が終わり画面に表示されるとonStartとonResumeが続けて実行される。
onStartとonResumeの違いは次の通り
  • Stopedからの復帰 onRestart > onStart > onResume の順に続けて実行
  • Pausedからの復帰 onResumeが実行
onPauseとonResume、onStopとonStartがそれぞれ対応し、確保したリソースの解放など、対応する処理は対応するメソッドに記述するのが良い。
onRestartはアプリが再開されるときに特別な処理を行う場合に記述する。ほとんどの場合において、起動時(onStart)にリソースが確保され停止時(onStop)に解放される。そのためonStopで解放するリソースを確保するタイミングは、再開時のみに実行されるonRestartではなく、onStartにあるのが正しい。


アクティビティの破棄


アクティビティが破棄されるとonDestroyが実行されるが、onDestroyに終了処理を記述すべきではない。ほとんどの場合はonPauseかonStopで記述するのが良い。アプリ起動中にホームに戻り他のアプリを起動させると、元のアプリではonDestroyは実行されず余計なリソースを確保したままになることが予想される。onDestroyでは、onCreateで開始されたバックグラウンド処理を停止させたりなど用途は限定される。
なお、onCreateメソッド内でfinish()を実行した場合を除き、onDestroyの前には、必ずonPauseとonStopが実行される。


アクティビティの一時停止と停止

一時停止はTransparentなアクティビティを表示し元のアクティビティが一部見えている状態、停止は他のアクティビティを起動させ完全に見えなくなった状態を表す。
onPauseではCPUに負荷のかかる処理やデータの永続化などの処理は避け、比較的軽いシンプルな処理にするのが良い。たとえば動画の停止、カメラやGPSなどのデバイス解放などを行う。
onStopでは、CPUに負荷のかかりやすい終了処理や、データの永続化などを行う。
と言った内容がマニュアルにはあるが特に決まりは無い。要するに使い分け方はアプリの特性を踏まえた開発者の判断(あるいはセンス)に委ねられている。


アクティビティの強制破棄と再開

アクティビティがシステムにより強制破棄され、その後復帰するケースでは保存されたアクティビティの状態へ復帰することができる。長い間使用されてないアプリや、実行中のアプリが多量のリソースを要求した場合、省電力モードなどに発生する。
その場合は、前述とは別のライフサイクルメソッドが実行され、必要な処理をその中に記述する。

  • onSaveInstanceState 強制破棄前にアクティビティの状態を保存する
  • onRestoreInstanceState 強制破棄からの復帰時にアクティビティの状態を復元する。
onCreate > onStart > onRestoreInstanceState > onResume の順に実行される
onPause > onSaveInstanceSate > onStop > onDestroy の順に実行される。onDestroyが実行されないまま再開される場合はアクティビティの状態は保持されたままなので onRestore~ は実行されない(Homeボタンを押し、すぐにアプリを再開した場合など)

それぞれのメソッドには Bandleクラスのインスタンスが渡され、onSave~ で Bundle に値をセットし、onRestore~ でBundleクラスのインスタンスから値を取り出す。onCreate にも同様に、Bundleクラスのインスタンスが渡されるため、onRestore の代わりに値を取り出すことも可能。ただしインスタンスが null の場合があるのでチェックが必要。onRestore ではチェックは必要ないし、たとえ再開時でもBundleに何も保存しなかった場合は実行されない。
「アクティビティのライフサイクル」をウィキ内検索
LINE
シェア
Tweet
Androidアプリ開発ノート
記事メニュー

メニュー


各種手順
  • トップページ
  • 開発環境構築
    • PATH設定
    • ソースコード管理
  • 仮想端末でHello,world
  • 実機で動作確認
基礎知識
  • Androidアプリの基本構成
    • Androidプロジェクト
    • アクティビティのライフサイクル
  • ログ出力
  • 異なる環境への最適化

逆引き
  • リストから値を選択する
    • Spinnerの使用
    • ListViewの応用
  • タイマーを使う
  • 着信音を鳴らす
  • ステータスバーに通知を出す







更新履歴

取得中です。

ここを編集
記事メニュー2

wiki内検索

検索 :



管理人のオススメ


Javaの基本から学ぶならコレ。定番の一冊

独習Java 第4版



名著。オブジェクト指向を深く学ぶなら。

オブジェクト指向でなぜつくるのか 第2版 知っておきたいOOP、設計、関数型言語の基礎知識



作りながら体で覚えることが大事

作ればわかる!Androidプログラミング―10の実践サンプルで学ぶAndroidアプリ開発入門 (Smart Mobile Developer)



その他のアイテムを探す








ここを編集
人気記事ランキング
  1. 着信音を鳴らす
  2. Spinnerの使用
もっと見る
最近更新されたページ
  • 4659日前

    トップページ
  • 4665日前

    ServiceのBind
  • 4667日前

    wiki初期画面のバックアップ
  • 4668日前

    ソースコード管理
  • 4668日前

    メニュー
  • 4668日前

    着信音を鳴らす
  • 4671日前

    ステータスバーに通知を出す
  • 4673日前

    タイマーを使う
  • 4674日前

    ListViewの応用
  • 4676日前

    TextViewの応用
もっと見る
人気記事ランキング
  1. 着信音を鳴らす
  2. Spinnerの使用
もっと見る
最近更新されたページ
  • 4659日前

    トップページ
  • 4665日前

    ServiceのBind
  • 4667日前

    wiki初期画面のバックアップ
  • 4668日前

    ソースコード管理
  • 4668日前

    メニュー
  • 4668日前

    着信音を鳴らす
  • 4671日前

    ステータスバーに通知を出す
  • 4673日前

    タイマーを使う
  • 4674日前

    ListViewの応用
  • 4676日前

    TextViewの応用
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. 鹿乃つの氏 周辺注意喚起@ウィキ
  2. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  3. MadTown GTA (Beta) まとめウィキ
  4. R.E.P.O. 日本語解説Wiki
  5. シュガードール情報まとめウィキ
  6. ソードランページ @ 非公式wiki
  7. AviUtl2のWiki
  8. Dark War Survival攻略
  9. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  10. 星飼いの詩@ ウィキ
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 発車メロディーwiki
  6. 検索してはいけない言葉 @ ウィキ
  7. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  8. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  9. パタポン2 ドンチャカ♪@うぃき
  10. オレカバトル アプリ版 @ ウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. Trickster - ストグラ まとめ @ウィキ
  3. ガヴァイ アッカンマン - ストグラ まとめ @ウィキ
  4. 過去の行動&発言まとめ - 鹿乃つの氏 周辺注意喚起@ウィキ
  5. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  6. マイティーストライクフリーダムガンダム - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  7. コメント/雑談・質問 - マージマンション@wiki
  8. 機体一覧 - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  9. 猗窩座(鬼滅の刃) - アニヲタWiki(仮)
  10. MOZU - ストグラ まとめ @ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.