我已经启动了这样的服务:
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版本。
答案 0 :(得分:0)
如上所述here
“ Android 8.0引入了新方法startForegroundService()来 在前台启动新服务。系统创建后 服务,该应用有五秒钟的时间来调用该服务的 startForeground()方法以显示新服务的用户可见 通知。如果该应用未在以下位置调用startForeground() 时间限制,系统停止服务并声明该应用为 ANR。”