gpt4 book ai didi

android - 小部件导致 DeadObjectException - 小包裹交易失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:13 26 4
gpt4 key购买 nike

一旦我想显示一个小部件并开始收听,我就会遇到以下异常:

// the relevant stack trace, the rest is comming from my code 
// before the code line I posted below
java.lang.RuntimeException: system server dead?
at android.appwidget.AppWidgetHost.startListening(AppWidgetHost.java:189)
at com.my.app.utils.WidgetUtil.a(SourceFile:231)
...
android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:503)
at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.startListening(IAppWidgetService.java:481)
at android.appwidget.AppWidgetHost.startListening(AppWidgetHost.java:185)
at com.my.app.utils.WidgetUtil.a(SourceFile:231)
...

我代码中的源代码如下:

 mAppWidgetManager = AppWidgetManager.getInstance(context);
mAppWidgetHost = new AppWidgetHost(context, R.string.app_name);
mAppWidgetHost.startListening(); // <= this line leads to the crash

观察

  • 我的应用程序在很多手机上都能正常运行(实际上只有一部手机除外)
  • 以上崩溃仅发生在一台用户设备上(SM-N910C(三星 Note 4),Android 6.0.1)
  • 用户说,这些小部件在他的启动器中运行良好

有谁知道是什么原因造成的?这是我可以在我的应用程序中解决的问题吗?用户说小部件在他的启动器中运行良好...

最佳答案

所以,一个简单的谷歌搜索让我找到了 DeadObjectException 的定义。 :-

The object you are calling has died, because its hosting process no longer exists.

由此可见,您收到此错误是因为托管 mAppWidgetHost 的进程已被终止。

现在的问题是为什么会出现此错误。覆盖并记录 onDestroy() 以监视它可能很有用,绝对值得一试。但是,由于它可以在除一个设备之外的所有设备上运行,因此 onDestroy() 方法很可能没有任何问题。相反,操作系统会在您访问对象之前终止进程。

那么,为什么操作系统要这样做呢?这个问题让我纠结了最长的时间。尽管谷歌搜索了大量与该问题相关的问题,但我仍然没有明确的答案或解决方案。但是,在花了相当多的时间搜索之后,我注意到了一个特殊之处——大多数问题都有这个异常(exception),例如 this , this而你的发生在三星设备上。

我的猜测是三星的底层架构导致了这个问题。而且,虽然我不知道为什么会发生这种情况,或者即使经过大量搜索也没有合理的解决方案,但这仍然是寻找针对三星设备的工作的开始。

更新

我进行了更多搜索,发现了 this回答。看看问题作者对问题的最后评论:-

Finally it is working fine just by a line of code in manifest file, here it is android:hardwareAccelerated="false" If anybody get the following kind of errors please try by adding the above line signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

我不知道这背后的逻辑,也不知道它是否有效。只是分享它,希望它能对您有所帮助 - 即使是最微小的形式。

关于android - 小部件导致 DeadObjectException - 小包裹交易失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46299421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com