确定堆栈跟踪中的Context.startForegroundService()源?

时间:2018-12-27 23:19:42

标签: android service

我偶尔会遇到此异常:

  

Context.startForegroundService()随后未调用   Service.startForeground()android.app.ActivityThread.main

有趣的是,我不知道何时或在何处调用startForegroundService的堆栈跟踪。我知道它不在我的代码中,但是可能在我正在使用的第三方库之一中。不幸的是,堆栈跟踪几乎毫无用处。当然,我不能可靠地复制它,那太容易了!有人对如何追踪原点有任何提示/想法吗?

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

1 个答案:

答案 0 :(得分:0)

如果它在“实验室”中崩溃,则可以查看Logcat以查看崩溃前10秒钟启动了什么服务。

除此之外,还可以使用Android Studio清单编辑器中的“合并清单”标签,查看清单中显示了哪些服务(以及哪些库贡献了这些清单条目)。这至少缩小了哪些库可能是罪魁祸首。如果其中任何一个是开源的,则可以在源代码中查找它们是否似乎调用了startForegroundService()