-1

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

我想获取最近启动的活动列表,但我似乎无法弄清楚如何。我翻阅了 StackOverflow 和 Android SDK 文档,ActivityManager并提出了以下两个片段:

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 回答