◇ createtest 2012/03/13 Hiroaki GOTO as GORRY. ======================================================================== Androiアプリケーションライフサイクル遷移が正しくないことがあるのを テストするプログラムです。 ======================================================================== ■ 現象 ======================================================================== 以下の手順で、正しくないライフサイクル遷移が行われます。 1. createtestアプリのショートカットを、ランチャーの「起動しやすい所」へ 設置する。 2. ショートカットでcreatetestアプリを起動する。 3. Backボタンでアプリをクローズし、もう一度起動する。 4. 通常は、以下のような表示になる。 (初回起動の場合) -- Created Started Not Restarted Resumed Not Paused Not Stopped Not Destroyed -- (2回目以降の場合) -- Created Started Not Restarted Resumed Paused Stopped Destroyed -- 3. 今度は、Backボタンでアプリをクローズすると同時に、createtestアプリの ショートカットが表示されるところを連打し、アプリを起動する。 4. 以下のような表示になったら、正しくないライフサイクル遷移が行われた ことを意味する。 -- Created Started Not Restarted Resumed Paused Not Stopped Not Destroyed -- ======================================================================== ■ 解説 ======================================================================== 正しくないライフサイクル遷移が行われたときは、LogCatで以下のような ログが表示されます。 ●初回のアプリ起動シーケンス 03-13 20:01:00.115: I/ActivityManager(153): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=net.gorry.test.createtest/.CreateTestActivity bnds=[240,556][360,706]} from pid 13539 03-13 20:01:00.186: I/ActivityManager(153): Start proc net.gorry.test.createtest for activity net.gorry.test.createtest/.CreateTestActivity: pid=16452 uid=10211 gids={} 03-13 20:01:00.244: I/CreateTestActivity(16452): onCreate() 03-13 20:01:00.260: I/CreateTestActivity(16452): onStart() 03-13 20:01:00.260: I/CreateTestActivity(16452): onResume() ●アプリクローズ開始 03-13 20:01:02.639: I/CreateTestActivity(16452): onPause() ●クローズと同時に連打で2回目のアプリ起動開始 03-13 20:01:02.885: I/ActivityManager(153): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=net.gorry.test.createtest/.CreateTestActivity bnds=[240,556][360,706]} from pid 13539 ●クローズ処理の途中で初回と同じ起動シーケンスが始まってしまう 03-13 20:01:02.951: I/CreateTestActivity(16452): onCreate() 03-13 20:01:02.963: I/CreateTestActivity(16452): onStart() 03-13 20:01:02.963: I/CreateTestActivity(16452): onResume() ●2回目の起動シーケンスが終わってから初回のクローズ処理の続きが行われてしまう 03-13 20:01:03.627: I/CreateTestActivity(16452): onStop() 03-13 20:01:03.627: I/CreateTestActivity(16452): onDestroy() ======================================================================== ■ 環境 ======================================================================== 作者は、以下の環境でテストを行いました。 ・Nexus S (4.0.3) - 標準ランチャー - ADW.Launcher ・ICONIA Tab A500(3.2.1) - 標準ランチャー - ADWLauncher EX ・Galaxy TAB(2.3.3) - 標準ランチャー - ADW.Launcher ======================================================================== ■ ライセンス ======================================================================== 同梱ファイルのライセンスについては、APACHE-LICENSE-2.0.txtを ご覧ください。 ======================================================================== [EOF]