http://baroqueworksdevjp.blogspot.jp/2012/08/applicationonterminate.html
では、他に何かいい方法がないか調べてみました。
ActivityManagerの公開APIを使う
以下のような、Task情報を取得できるAPIをActivityのonStop()でコールしてみました。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | private void checkRecentTasks(){ Log.e( "" , "checkRecentTasks" ); ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List<RecentTaskInfo> taskInfo = am.getRecentTasks( 10 , ActivityManager.RECENT_WITH_EXCLUDED); for ( RecentTaskInfo info : taskInfo){ Log.e( "" , "" + info.baseIntent.getComponent().getPackageName()); } } private void checkRunningTasks(){ Log.e( "" , "checkRunningTasks" ); ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> taskInfo = am.getRunningTasks( 10 ); for ( RunningTaskInfo info : taskInfo){ Log.e( "" , "" + info.topActivity.getPackageName()); } } |
Homeキー押下によりSampleアプリをBackGroudにさせたlogです。
checkRecentTasks
08-27 21:12:13.314: E/(7511): com.android.launcher 08-27 21:12:13.314: E/(7511): jp.baroqueworksdev.sampleapp 08-27 21:12:13.314: E/(7511): com.android.packageinstaller 08-27 21:12:13.314: E/(7511): jp.r246.twicca 08-27 21:12:13.314: E/(7511): com.alphonso.pulse 08-27 21:12:13.314: E/(7511): com.chnavi.android2ch 08-27 21:12:13.314: E/(7511): jp.mixi 08-27 21:12:13.314: E/(7511): com.facebook.katana 08-27 21:12:13.314: E/(7511): com.android.chrome
checkRunningTasks
08-27 21:12:13.321: E/(7511): com.android.launcher 08-27 21:12:13.321: E/(7511): jp.baroqueworksdev.sampleapp 08-27 21:12:13.321: E/(7511): jp.r246.twicca 08-27 21:12:13.321: E/(7511): com.alphonso.pulse 08-27 21:12:13.321: E/(7511): com.chnavi.android2ch 08-27 21:12:13.321: E/(7511): jp.mixi 08-27 21:12:13.321: E/(7511): com.facebook.katana 08-27 21:12:13.321: E/(7511): com.android.chrome
直近に起動したアプリ順に並んでいました。
Android Developer Siteにも以下のように書いています。
with the most recent being first and older ones after in order.
上記のようなTaskリストを取得して、自アプリがTOPかどうかチェックするのも一つの手段かと思います。.
ただし、ロック画面が表示されている場合、TOPにいても「画面上表示されておらずユーザーには見えない」ことを忘れずに。
0 件のコメント:
コメントを投稿