窗口小部件导致DeadObjectException - 小包裹上的事务失败

pro*_*m85 6 android widget

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

// 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)
    ...
Run Code Online (Sandbox Code Playgroud)

我的代码中的源代码如下:

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

意见

  • 我的应用程序在很多手机上正常工作(实际上只有一个)
  • 以上崩溃只发生在一个用户设备上(SM-N910C(Samsung Note 4),Android 6.0.1)
  • 用户说,这些小部件在他的发射器中工作正常

有谁知道可能导致这种情况的原因是什么?这是我可以在我的应用程序中解决的问题吗?用户说小部件在他的发射器中正常工作......

cha*_*rma 0

DeadObjectException :
Run Code Online (Sandbox Code Playgroud)

您正在调用的对象已经死亡,因为它的托管进程不再存在。

可能的解决方案:

1) 覆盖您的服务的onDestroy()方法并观察导致它的事件流。如果你DeadObjectException没有通过这个方法就捕获了,那么你的服务应该已经被操作系统杀死了。

2)通过删除Typeface,这可能是因为我从资产文件夹中使用的ttf请尝试评论字体并测试它希望它肯定能工作

3)将所有代码放入onCreate. 从那里你会看到罪魁祸首是什么,例如NullPointerException,但你的代码已经可以顺利运行了。