我有一个拥有主屏幕小部件的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)
我尝试调试我能想到的每一种方式(在异常上启用断点,逐步执行在异常之前执行的代码等)无济于事。异常似乎不是来自我的代码,而是来自我无法访问的另一个进程。我该如何解决这个问题?
答案 0 :(得分:0)
经过一些实验后,我发现异常发生在这一行之后:
rv.setInt(R.id.task_item_color_header, "setBackgroundColor", Color.parseColor(color));
原来,在某些情况下,color
(String
}确实有一个值,但它是"null"
。当尝试将不存在的颜色设置为RemoteView
的背景时,这会导致崩溃。但是,由于RemoteView
的值未直接设置,而是委托给要设置的操作系统,因此崩溃发生在另一个进程中。
因此,如果您遇到类似问题 - 请检查您尝试在RemoteView
上设置的值