如何获得长按主页按钮时看到的暂停/缓存活动列表?

时间:2013-07-29 08:30:21

标签: java android

当我长按手机上的主页按钮时,我可以看到我最近推出的活动列表。当我开始另一项活动时,Android会缓存/暂停旧活动。

我想获得最近推出的活动列表,但我似乎无法弄清楚如何。我挖掘了StackOverflow和ActivityManager的Android SDK文档,并提出了这两个片段:

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);
    }                   
}

1 个答案:

答案 0 :(得分: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());
    }
}