IllegalArgumentException при вызове Tile # updateTile () в TileService # onStartListening () - PullRequest
0 голосов
/ 20 октября 2018

У некоторых пользователей моего приложения происходит сбой, который я не могу воспроизвести.Это лишь небольшой процент пользователей, получающих этот сбой, но в настоящее время это самый большой сбой в моем приложении, который я хотел бы решить.Это трассировка стека, которую я получил в 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.
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...