Android 运行getSystemService(Context.USAGE\u STATS\u SERVICE)时复制PackageNames;

Android 运行getSystemService(Context.USAGE\u STATS\u SERVICE)时复制PackageNames;,android,usage-statistics,Android,Usage Statistics,我正试图在我的Android手机上获取每个活动的活动时间 我执行的代码如下 @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public List<UsageStats> getUsageStats() { UsageStatsManager mUsageStatsManager = (UsageStatsManager) getActivity() .getSystemSer

我正试图在我的Android手机上获取每个活动的活动时间

我执行的代码如下

 @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public List<UsageStats> getUsageStats() {
        UsageStatsManager mUsageStatsManager = (UsageStatsManager) getActivity()
                .getSystemService(Context.USAGE_STATS_SERVICE);
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);
        List<UsageStats> queryUsageStats = mUsageStatsManager
                .queryUsageStats(UsageStatsManager.INTERVAL_DAILY, cal.getTimeInMillis(),
                        System.currentTimeMillis());


        return queryUsageStats;
    }
我得到的结果如下

com.whatsapp    2413684
com.google.android.googlequicksearchbox 2344707
com.google.android.youtube      1786804
com.google.android.googlequicksearchbox 1683449
com.google.android.googlequicksearchbox 1577473
com.whatsapp    1040572 
正如你所能看到的,whatsapp和google搜索框有两个,并且有不同的前景时间


有人能告诉我为什么我会得到两次,有没有办法让我只得到活动在前台的时间量。

运行命令时:

adb shell "ps -x | grep google"
我得到以下输出(截断):

这意味着
googlequicksearchbox
应用程序在两个不同的进程中运行(进程名称和PID有所不同)

您得到的时间用于前台进程。描述了这意味着什么。这不仅意味着这些是活动

当应用程序以一种简单的方式打开时,通常没有其他方法来获取时间。这是因为,应用程序可以显示活动、服务和持续通知。所有这些都可能会影响用户体验。考虑一下脸谱网聊天头。它们可能位于屏幕的一角,用户可以看到,但另一个应用程序被打开(它的一个活动是在
onResume
事件之后)。但Facebook是在前台运行的,用户可以看到它。所以前台至少有两个正在运行的应用程序


如果包名完全相同,那么解决方案就是对结果进行汇总。或者另一种方法是在后台运行常量服务,偶尔检查一下正在运行的应用程序。但这是一个更加耗时和劳动密集型的解决方案。

对我来说很有意义!
adb shell "ps -x | grep google"
u0_a22    1977  1267  1480140 46296    ep_poll 0000000000 S com.google.android.googlequicksearchbox:interactor (u:2, s:7)
u0_a22    2115  1267  1895332 210352    ep_poll 0000000000 S com.google.android.googlequicksearchbox:search (u:1866, s:7987)