gpt4 book ai didi

android - 运行 getSystemService(Context.USAGE_STATS_SERVICE) 时重复 PackageNames;

转载 作者:行者123 更新时间:2023-11-29 19:26:44 25 4
gpt4 key购买 nike

我正在尝试获取每个 Activity 在我的 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;
}

这是打印语句

for(UsageStats usageStats:getUsageStats()){
Log.i("Usage Stats",usageStats.toString()+"\t"+usageStats.getPackageName()+"\t"+usageStats.getTotalTimeInForeground());
}

我得到的结果如下。

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 搜索框有两次,并且有不同的前台时间。

谁能告诉我为什么我得到它两次,有没有办法让我只得到 Activity 在前景中的时间量。

最佳答案

运行命令时:

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)

这意味着 googlequicksearchbox 应用程序在两个不同的进程中运行(通过进程名称和 PID 区分)。

您获得的时间用于前台进程。描述了这意味着什么 here .这不仅意味着这些是 Activity 。

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

解决办法就是如果包名完全一样就把结果加起来。或者另一种方法是在后台运行常量服务,每隔一段时间检查正在运行的应用程序。但这是一个更耗时且劳动密集型的解决方案。

关于android - 运行 getSystemService(Context.USAGE_STATS_SERVICE) 时重复 PackageNames;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41165117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com