我的服务在android Oreo下启动时出现了问题。我有一个警报管理器,他在一天中的特定时间安排服务。我有一个BootCompleted广播接收器,如果用户重新启动他们的电话,它会重新设置警报。
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
new AlarmHelper(context).setAlarm(timeInMillis); // i get timeInMilis from SharedPref
}
}我有一个AlarmReceiver,它在警报管理器唤醒时启动服务。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Constants.ACTION_SET_REPETITIVE_ALARM)) {
if(!isMyServiceRunning(context, PostReportsService.class)){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(background);
}else{
context.startService(background);
}
}
}
}Oreo上面和下面的设备都可以访问context.startService(后台)(或context.startForegroundService(后台)),但只有Oreo上面的设备才会实际启动服务。这仅在设备重新启动后发生,否则该服务在Oreo下和Oreo之上都有效。我能做些什么来解决这个问题吗。
发布于 2021-08-03 09:48:43
原来我正在测试的设备有省电模式,在重启时禁用了服务。
https://stackoverflow.com/questions/68633829
复制相似问题