一旦我想要显示一个小部件并开始收听,我就会得到以下异常:
// 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)
意见
有谁知道可能导致这种情况的原因是什么?这是我可以在我的应用程序中解决的问题吗?用户说小部件在他的发射器中正常工作......
DeadObjectException :
Run Code Online (Sandbox Code Playgroud)
您正在调用的对象已经死亡,因为它的托管进程不再存在。
可能的解决方案:
1) 覆盖您的服务的onDestroy()方法并观察导致它的事件流。如果你DeadObjectException没有通过这个方法就捕获了,那么你的服务应该已经被操作系统杀死了。
2)通过删除Typeface,这可能是因为我从资产文件夹中使用的ttf请尝试评论字体并测试它希望它肯定能工作
3)将所有代码放入onCreate. 从那里你会看到罪魁祸首是什么,例如NullPointerException,但你的代码已经可以顺利运行了。