Android context.startService在Oreo上崩溃

Android context.startService在Oreo上崩溃,android,broadcastreceiver,android-8.0-oreo,Android,Broadcastreceiver,Android 8.0 Oreo,我有一个android应用程序,每30分钟采集一次位置数据。下面是我如何注册广播接收器的 AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, AlarmReceiver.class); intent.setAction("com.example.partners.alarms"

我有一个android应用程序,每30分钟采集一次位置数据。下面是我如何注册广播接收器的

    AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

    Intent intent = new Intent(context, AlarmReceiver.class);
    intent.setAction("com.example.partners.alarms");
    PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
    Calendar time = Calendar.getInstance();
    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
            time.getTimeInMillis(),
            1000 * 60 * 30, alarmIntent);
然后它被称为这样的:

public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    context.startService(new Intent(context, AttendanceChecker.class));
    ((OperationsApplication)context.getApplicationContext()).getJobManager().start();
}

}
到目前为止,它一直运行良好,但随着Android O的出现,它将崩溃。我在网上看到了这方面的信息,但没有找到正确的解决方案

编辑: startService()方法引发IllegalStateException

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3303)
  at android.app.ActivityThread.-wrap17 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1746)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:192)
  at android.app.ActivityThread.main (ActivityThread.java:6688)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:445)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:867)
Caused by: java.lang.IllegalStateException: 
  at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1526)
  at android.app.ContextImpl.startService (ContextImpl.java:1482)
  at android.content.ContextWrapper.startService (ContextWrapper.java:650)
  at android.content.ContextWrapper.startService (ContextWrapper.java:650)
  at com.example.app.AlarmReceiver.onReceive (AlarmReceiver.java:11)
Android 8.0(API级别26)还包括对特定方法的以下更改:

如果针对Android 8.0的应用程序在不允许创建后台服务的情况下尝试使用该方法,startService()方法现在会抛出一个非法状态异常

新的
Context.startForegroundService()
方法启动前台服务。系统允许应用程序在后台调用Context.startForegroundService()。但是,应用程序必须在创建服务后的五秒钟内调用该服务的startForeground()方法。读一下这个,它会对你有帮助的 Android 8.0(API级别26)还包括对特定方法的以下更改:

如果针对Android 8.0的应用程序在不允许创建后台服务的情况下尝试使用该方法,startService()方法现在会抛出一个非法状态异常

新的
Context.startForegroundService()
方法启动前台服务。系统允许应用程序在后台调用Context.startForegroundService()。但是,应用程序必须在创建服务后的五秒钟内调用该服务的startForeground()方法。读一下这个,它会对你有帮助的

context.startService在Android O上崩溃
你的崩溃日志在哪里?在编辑中添加@NileshRathod
context.startService在Android O上崩溃
你的崩溃日志在哪里?在编辑中添加@尼勒什拉特霍德