У некоторых пользователей моего приложения происходит сбой, который я не могу воспроизвести.Это лишь небольшой процент пользователей, получающих этот сбой, но в настоящее время это самый большой сбой в моем приложении, который я хотел бы решить.Это трассировка стека, которую я получил в Firebase Crashlytics:
Fatal Exception: java.lang.IllegalArgumentException: Service not registered: com.android.systemui.qs.external.TileLifecycleManager@775810d
at android.os.Parcel.readException(Parcel.java:1947)
at android.os.Parcel.readException(Parcel.java:1889)
at android.service.quicksettings.IQSService$Stub$Proxy.updateQsTile(IQSService.java:215)
at android.service.quicksettings.Tile.updateTile(Tile.java:182)
at com.my.app.MyTileService.updateTile(SourceFile:110)
at com.my.app.MyTileService.onStartListening(SourceFile:83)
at android.service.quicksettings.TileService$H.handleMessage(TileService.java:407)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6592)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
Сбой происходит только на Android 8-9.Авария появляется на всех устройствах, включая Google Pixel.Как ни странно, этого не происходит на устройствах Samsung.
Класс MyTileService
переопределяет метод onStartListening()
и затем вызывает updateTile()
.Это код (Kotlin):
package com.my.app
import android.service.quicksettings.TileService
...
class MyTileService : TileService() {
override fun onStartListening() {
super.onStartListening()
updateTile() // line 83
}
private fun updateTile() {
// qsTile is the same as calling getQsTile()
qsTile?.apply {
state = ...
label = ...
icon = ...
// Because of the way how Kotlin works, this calls qsTile.updateTile() and not the updateTile() method above.
updateTile() // line 110.
}
}
}