预期的行为是,该应用在处于ON状态时将一直运行。当应用程序一段时间未激活时,某些手机会将其置于后台模式。我希望该应用程序即使在待机模式下也始终运行(待机模式意味着当我们按下主屏幕按钮时,该应用程序将进入后台运行一段时间。)
我找到了以下代码,并尝试了
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);
}
}
打开应用后,我希望该应用处于无限制模式,对此有什么解决办法?
答案 0 :(得分:0)
您使用的代码用于电池优化。设置->电池->三点菜单项(...)--->电池优化->(从列表中选择一个应用程序)--->优化/不优化。
通过选择Don't optimize
,您实际上是在绕过Doze
,而不是app standby
。
还请注意,按照编程方式进行操作可能会导致Google退出您的应用。按照我上述的路径手动进行操作比较安全。
有关Doze
和应用Standby
here的更多信息