Activity のライフサイクル
Android を調べていると、Activity のライフサイクル「生成→起動→動作中→停止→終了」というようなのが、やたらと出てくる。ちょっとまとめてみた。
Method | Detail |
---|---|
onCreate() | Activity が起動するときにコールされ、View の作成や変数の初期化などが行われる。onStart() が続く。契機は LAUNCH_ACTIVITY |
onRestart() | Activity の停止後、再開するときにコールされる。onStart() が続く。契機は RESUME_ACTIVITY |
onStart() | Activity がユーザによって表示されたときにコールされる。この後、Activity が前面に出てきたときは onResume() が続き、隠れたときは onStop() が続く。契機は LAUNCH_ACTIVITY, RESUME_ACTIVITY |
onResume() | Activity が前面に表示され、ユーザの操作が可能となったときにコールされる。onPause() が続く。契機は LAUNCH_ACTIVITY, RESUME_ACTIVITY |
onPause() | 他の Activity を起動するときにコールされ、処理中のデータ保存やアニメーション停止を行う。Activity が前面に出てきたときは onResume() が、隠れたときは onStop() が続く。契機は PAUSE_ACTIVITY, PAUSE_ACTIVITY_FINISHING |
onStop() | Activity が隠れたとき(他の Activity が起動した場合など)にコールされる。ユーザ操作が再開したときは onRestart() が続き、Activity が終了したときは onDestroy() が続く。契機は STOP_ACTIVITY_HIDE, DESTROY_ACTIVITY |
onDestroy() | Activity が終了するときにコールされる。契機は DESTROY_ACTIVITY |
現行の Android は「アプリ終了したように見せかけ」っぽいね。Activity.finish()が呼ばれたら終了済みアプリ対象となって ActivityManager.getRunningTasks() のリストには載らないけど、HOMEキー長押下で表示されるタスクにはおるしな。。ん、タスク表示側の不整合?ただ起動してきたタスクを ActivityManager.getRecentTasks() のリストで表示してるだけ?「Activity の終了」=「Application の終了」では無いような気がしてならない。メッセージに「EXIT_APPLICATION」ってのあるしなあ。Looper.quit() に繋がるのだが、スレッドの終了になるはず。
→
~/frameworks\policies\base\phone\com\android\internal\policy\impl\RecentApplicationsDialog.java
やはり HOME キー長押下のタスク表示は ActivityManager.getRecentTasks() で起動履歴をすべて表示していた。