我开始使用Android O在Nexus 5x上测试我的应用
我的targetSdkVersion
是22.
在开发者网站中,我读到了Background execution limits:
其中:
默认情况下,这些限制仅适用于以O为目标的应用。但是,即使应用未定位O,用户也可以从“设置”屏幕为任何应用启用这些限制。
targetSdkVersion
?答案 0 :(得分:0)
来自the docs:
新的Context.startForegroundService()
方法启动前台服务。即使应用在后台,系统也允许应用调用Context.startForegroundService()
。但是,应用必须在创建服务后的五秒钟内调用该服务的startForeground()
方法。 (startForeground推送通知)
答案 1 :(得分:0)
我在App info > Battery usage
下找到了该设置,但并非所有应用都有此设置。
当此设置为OFF时,我会看到以下日志:
W / BroadcastQueue:不允许后台执行:接收Intent {act = android.intent.action。$ ACTION dat = package:$ APP_PACKAGE flg = 0x4000010(有额外内容)}到$ APP_PACKAGE / $ APP_RECEIVER
[更新于2017年9月27日]
如上所述here:
但是,开发人员无法使用“设置”应用来应用此限制,除非他们的应用恰好位于电池责任列表中,理想情况下不会发生。
本文提供了通过以下命令测试背景限制的无证方法(可能ignore
和allow
值)
adb shell appops set your.application.id.here RUN_IN_BACKGROUND ignore
最佳做法是
如果您打算坚持使用较低的targetSdkVersion一段时间,并且您确实非常确定您的应用程序不会出现在电池责任列表中,并且您想忽略现在的背景限制,那就是你的决定。
但是,如果您打算坚持使用较低的targetSdkVersion并且您的应用确实会消耗相当多的电池寿命,那么您应该使用上面引用的adb shell appops命令测试您的应用。如果没有别的,您可以通过“设置”中的“电池”屏幕识别用户在限制后台工作时可能遇到的症状。这样,如果您收到关于这些症状的客户服务电话/电子邮件/文本/ Play商店评论/糖果图,您可以更好地建议用户做什么。
答案 2 :(得分:0)