我的应用程序在MainActivity
的onCreate
中调用startForegroundService(intent)
。我在Service
的onCreate
和startCommand
中都放置了startForeground(ON_SERVICE_CONNECTION_NID, notification)
,但有时仍然会收到错误。
Exception android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1775)
android.os.Handler.dispatchMessage (Handler.java:105)
android.os.Looper.loop (Looper.java:164)
android.app.ActivityThread.main (ActivityThread.java:6541)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)
这是怎么发生的呢?
onCreate
或者startCommand
在5秒内没有被调用,这有可能吗?
如果是这样的话,我们应该如何调用startForegroundService
而不出现错误?更新于2017-12-09
我不知道为什么每个人都说这和这个问题一样:Context.startForegroundService() did not then call Service.startForeground() 你甚至可以在那里找到我的评论。
它之所以不同,是因为你可以看到这个问题的第一行。我已经将
startForegroundService
和startForeground
放在了正确的位置,但它仍然会随机显示此错误。这里是Google的问题跟踪器:https://issuetracker.google.com/issues/67920140
这是关于服务生命周期的另一个问题。 在服务关闭后,可能会错误地触发断言。在此之前停止服务会导致崩溃。
Service
的onCreate
中使用了startForeground
。只是让你知道,我已经在那里的“答案”下面进行了评论。 - Kimi ChiustartForegroundService
和startForeground
放在了正确的位置。 - Kimi ChiustartForegroundService(intent)
不应该在活动的onCreate
中。所以我将其移动到onPause
中,这样只有在 Activity 处于后台状态时才会将服务提升到前台。而startForeground(ON_SERVICE_CONNECTION_NID, notification)
应该只在服务的onCreate
中。最终错误报告停止了。 - Kimi Chiu