Определить источник Context.startForegroundService () в трассировке стека? - PullRequest
0 голосов
/ 28 декабря 2018

Иногда я получаю это исключение:

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 голосов
/ 28 декабря 2018

Если происходит сбой «в лаборатории», вы можете посмотреть на Logcat, чтобы увидеть, какая служба была запущена за 10 секунд до сбоя.

Помимо этого, используйте вкладку «Объединенный манифест» в Android Studio.Редактор манифеста и посмотрите, какие сервисы отображаются в вашем манифесте (плюс, какие библиотеки предоставили эти записи манифеста).Это по крайней мере сужает, какие библиотеки могут быть виновником.Если какой-либо из них имеет открытый исходный код, вы можете просмотреть исходный код, чтобы узнать, не вызывают ли они, по-видимому, startForegroundService().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...