Получение java.lang.IllegalStateException: Binder был завершен!из виджета домашнего экрана - PullRequest
0 голосов
/ 01 июня 2018

У меня есть приложение для Android с виджетом на главном экране.Когда я добавляю один с определенной конфигурацией, я получаю сообщение об ошибке «AppName остановлено».Logcat обнаруживает следующий журнал сбоев:

E/System: java.lang.IllegalStateException: Binder has been finalized!
    at android.os.BinderProxy.transactNative(Native Method)
    at android.os.BinderProxy.transact(Binder.java:748)
    at android.security.IKeystoreService$Stub$Proxy.abort(IKeystoreService.java:1373)
    at android.security.KeyStore.abort(KeyStore.java:529)
    at android.security.keystore.AndroidKeyStoreCipherSpiBase.finalize(AndroidKeyStoreCipherSpiBase.java:744)
    at android.security.keystore.AndroidKeyStoreRSACipherSpi$PKCS1Padding.finalize(Unknown Source:0)
    at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:250)
    at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:237)
    at java.lang.Daemons$Daemon.run(Daemons.java:103)
    at java.lang.Thread.run(Thread.java:764)

Я пытался отлаживать это всеми возможными способами (включение точек останова для исключений, пошаговое выполнение кода, выполняемого перед исключением, и т. Д.) Безрезультатно.Кажется, исключение исходит не из моего кода, а из другого процесса, к которому у меня нет доступа.Как мне решить эту проблему?

1 Ответ

0 голосов
/ 01 июня 2018

После некоторых экспериментов я обнаружил, что исключение произошло после этой строки:

rv.setInt(R.id.task_item_color_header, "setBackgroundColor", Color.parseColor(color));

Оказалось, что в некоторых случаях color (то есть String) действительно имеет значение, но оно "null".Это вызывает сбой при попытке установить несуществующий цвет в качестве фона на RemoteView.Однако, поскольку значения RemoteView не устанавливаются напрямую, а скорее делегируются ОС для установки, сбой произошел в другом процессе.Итак, если у вас есть похожая проблема - проверьте значения, которые вы пытаетесь установить на вашем RemoteView s

...