Java Android Oreo背景限制
我正在使用Eclipse的android库。此库在内部启动一个获取数据的服务。现在,当我的应用程序在后台并发出推送通知时,Paho的服务在oreo之前的设备上运行良好。但在Oreo设备上,在应用程序进入后台状态后,这项工作会持续几分钟。在这段时间之后,虽然我正在发送高优先级GCM消息,但服务不会启动,并在logcatJava Android Oreo背景限制,java,android,android-service,mqtt,Java,Android,Android Service,Mqtt,我正在使用Eclipse的android库。此库在内部启动一个获取数据的服务。现在,当我的应用程序在后台并发出推送通知时,Paho的服务在oreo之前的设备上运行良好。但在Oreo设备上,在应用程序进入后台状态后,这项工作会持续几分钟。在这段时间之后,虽然我正在发送高优先级GCM消息,但服务不会启动,并在logcat后台启动不允许中发出警告。和官方文档一样,对于高优先级GCM消息,应用程序会在几分钟内被列入白名单。在这种情况下,它应该适用于高优先级GCM消息 据我所知,只要高优先级GCM到达,应
后台启动不允许中发出警告。和官方文档一样,对于高优先级GCM消息,应用程序会在几分钟内被列入白名单。在这种情况下,它应该适用于高优先级GCM消息
据我所知,只要高优先级GCM到达,应用程序就会被列入白名单。是否正确?为Android O做好准备:
1) 而不是意向服务;您的服务需要扩展JobIntentService
2) 而不是简单的内容;你需要用手工
3) 而不是startService;您需要使用排队工作
看看这个。
在处理广播时,您需要确保意图是明确的
private static void sendImplicitBroadcast(Context ctxt, Intent i) {
PackageManager pm=ctxt.getPackageManager();
List<ResolveInfo> matches=pm.queryBroadcastReceivers(i, 0);
for (ResolveInfo resolveInfo : matches) {
Intent explicit=new Intent(i);
ComponentName cn=
new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName,
resolveInfo.activityInfo.name);
explicit.setComponent(cn);
ctxt.sendBroadcast(explicit);
}
}
private static void sendImplicitBroadcast(上下文ctxt,意图i){
PackageManager pm=ctxt.getPackageManager();
列表匹配=pm.queryBroadcastReceivers(i,0);
for(ResolveInfo ResolveInfo:matches){
明确意图=新意图(i);
组件名称cn=
新组件名称(resolveInfo.activityInfo.applicationInfo.packageName,
resolveInfo.activityInfo.name);
explicit.setComponent(cn);
发送广播(显式);
}
}
这是来自请将代码放在此处