-1

携帯電話のホーム ボタンを長押しすると、最近開始したアクティビティのリストが表示されます。別のアクティビティを開始すると、Android は古いアクティビティをキャッシュ/一時停止します。

最近開始されたアクティビティのリストを取得したいのですが、方法がわかりません。私は StackOverflow と Android SDK のドキュメントを掘り下げてActivityManager、次の 2 つのスニペットを思いつきました。

ActivityManager mgrActivity = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );

System.out.println("getRunningTasks: " + mgrActivity.getRunningTasks(Integer.MAX_VALUE).size());
System.out.println("getRecentTasks: " + mgrActivity.getRecentTasks(Integer.MAX_VALUE, ActivityManager.RECENT_WITH_EXCLUDED).size());

これらのどちらも、最近開始したアクティビティの正しい数を示していません。これらの呼び出しはどちらも、ホーム ボタンを長押ししたときに表示されるアクティビティの数よりも大きな値を返します。誰かが私が間違っていることを指摘できますか?


アクティビティの名前を取得するためにこれを試しました:

ActivityManager mgrActivity = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );

for (RunningTaskInfo run :  mgrActivity.getRunningTasks(Integer.MAX_VALUE)) {
    System.out.println(run.topActivity.getPackageName());
}

for (RecentTaskInfo run :  mgrActivity.getRecentTasks(Integer.MAX_VALUE, ActivityManager.RECENT_IGNORE_UNAVAILABLE)) {
    if (run.origActivity != null) {
        System.out.println(run.origActivity.getPackageName());
    } else {
        System.out.println(run.id);
    }                   
}
4

1 に答える 1

0

これにより、最近のアクティビティの正しい数が返されます。この解決策を他の場所で見つけられなかったのはおかしいです。

ActivityManager mgrActivity = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );

for (RecentTaskInfo run :  mgrActivity.getRecentTasks(Integer.MAX_VALUE, ActivityManager.RECENT_IGNORE_UNAVAILABLE)) {
    if (run.baseIntent.getCategories().contains(Intent.CATEGORY_LAUNCHER)) {
        System.out.println(run.baseIntent.toString());
    }
}
于 2013-07-29T09:35:55.737 に答える