服务要停止时,应用崩溃了

时间:2018-09-18 05:59:58

标签: android android-service android-8.0-oreo

我已经启动了这样的服务:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    context.startForegroundService(intent);
} else {
    context.startService(intent);
}

但是当我想停止此服务时,我遇到的错误是:

android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1768)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6501)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

为解决此错误,我尝试: 1.在onDestroy()方法中使用了stopSelf();。 2.在onCreate()方法中使用startForeground(0, new Notification());

但是错误仍然存​​在。我也在StackOverflow和android官方网站上搜索了很多。找不到解决我问题的合适答案。顺便说一句,此错误始于Android OREO版本。

1 个答案:

答案 0 :(得分:0)

如上所述here

  

“ Android 8.0引入了新方法startForegroundService()来   在前台启动新服务。系统创建后   服务,该应用有五秒钟的时间来调用该服务的   startForeground()方法以显示新服务的用户可见   通知。如果该应用未在以下位置调用startForeground()   时间限制,系统停止服务并声明该应用为   ANR。”