如何判断Android应用是否在"已停止"州?

时间:2016-05-26 15:09:25

标签: android broadcastreceiver

我有一个Android应用程序注册BroadcastReceiver来处理振铃模式更改。接收器通过清单注册,而不是动态注册。一些用户报告说,虽然手动启动应用程序并随后更改铃声模式确实会触发应用程序,但应用程序偶尔会响应铃声模式更改。但是,一段时间后,应用程序再次停止响应振铃模式更改。

这个症状听起来很可疑,就像应用程序正在进入"停止"州;但我没有任何理由相信用户明确强行关闭应用程序,而且我也不知道应用程序可以进入“停止”的任何其他方式。状态。

用户是否有办法确定他们(非根电话)手机上的应用是否处于停止状态,这样我就可以验证/停止"停止"国家理论?我不认为看看"力量是否接近"按钮已启用,因为对于已停止的应用以及当前未运行的应用,它都将被禁用。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码查询设备上的所有应用程序并查看哪些应用程序处于停止状态:

private List<String> getStoppedPackages() {
    ArrayList<String> stoppedPackages = new ArrayList<String>();
    final PackageManager pm = getPackageManager();
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

    for (ApplicationInfo packageInfo : packages) {
        boolean appStopped = (packageInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0;
        if (appStopped) {
            String description = packageInfo.packageName;
            stoppedPackages.add(description);
        }
    }
    return stoppedPackages;
}

我制作了一个实用程序应用程序,可以在这里为您执行此操作:

https://github.com/davidgyoung/stopped-app-detector