我很困惑reading this,并试图弄清楚当设备进入深度打ze模式时前台服务是否将运行。有人可以澄清。我想知道棉花糖和棉花糖是否可以继续运行。我一直以为设备休眠时所有线程都将被挂起,即使是前台服务也是如此。
我看到doze mode restrictions,但前台服务什么都没有。如果我的服务超过打ze模式安全设置,我会很困惑。
据我所知,在打ze模式限制下,仅网络呼叫停止了。但是可以说我正在做一些长时间运行的主线程工作,这意味着它可以继续正常运行吗?即使在打ze睡模式下?
答案 0 :(得分:1)
打ze模式用于节省电池电量。您应该将您的应用列入白名单以停用打ze模式。
来源:https://developer.android.com/training/monitoring-device-state/doze-standby
对其他用例的支持 几乎所有应用程序都应该能够通过管理网络连接,警报,作业和正确同步以及使用FCM来支持Doze。 高优先级消息。对于少数用例,这可能不会 足够。对于此类情况,系统提供了可配置的 部分免于Doze和App Standby的应用程序的白名单 优化。
An app that is whitelisted can use the network and hold partial wake locks during Doze and App Standby. However, other restrictions
仍然适用于列入白名单的应用程序,就像对其他应用程序一样。对于 例如,列入白名单的应用的工作和同步被推迟(在API上 23级及以下),并且常规的AlarmManager警报不会触发。 应用可以通过以下方法检查其当前是否在免除白名单中 调用isIgnoringBatteryOptimizations()。
在这里,如何将您的应用插入白名单: 1.步骤->在您的xml文件中添加此权限。
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
2。步骤İgnore电池优化
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Intent intent = new Intent();
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
}
}
答案 1 :(得分:1)