当服务开启时,如何强制应用程序选择退出省电模式?

How force the app to opt out of battery saver mode when the service is ON?

预期的行为是应用程序在处于打开状态时将一直 运行ning。当应用程序一段时间未激活时,某些手机会将应用程序置于后台模式。我希望该应用程序即使在待机模式下也一直处于 运行 状态(待机模式意味着当我们按下主页按钮时,该应用程序将进入后台。并且它会 运行 一段时间)。

我找到了以下代码并试过了

    PowerManager powerManager = (PowerManager) getApplicationContext().getSystemService(POWER_SERVICE);
    String packageName = "org.traccar.client";
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Intent i = new Intent();
        if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
            i.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
            i.setData(Uri.parse("package:" + packageName));
            startActivity(i);
        }
        else{
            i.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
            i.setData(Uri.parse("package:" + packageName));
            startActivity(i);

        }
    }

即使在使用代码后,默认状态也是节电模式(推荐)

我希望应用程序在打开后处于无限制模式,对此有什么解决方案吗?

您使用的代码用于电池优化。设置-->电池-->三点菜单项(...)--->电池优化-->(从列表中选择一个应用程序)--->优化/不优化。

通过选择 Don't optimize,您实际上是在绕过 Doze,而不是 app standby

另请注意,像您一样以编程方式执行此操作 可能会导致 Google 将您的应用从商店中移除 。按照我上面描述的路径手动更安全。

更多关于 Doze 和应用 Standby here