我發現了以下情況例外,只要我想展示一個小部件,並開始收聽失敗:窗口小部件導致DeadObjectException - 交易小包裹
// 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(Samsung Note 4),Android 6.0.1)
- 用戶說,他的發射器
有沒有人有一個想法可能會導致這種情況?這是我可以在我的應用程序中解決的問題嗎?該用戶說小部件在其發射工作正常...
你知道小部件是由其他應用程序實現的,而我只告訴其他應用程序「我使用ID顯示小部件,所以請在小部件需要更新時通知我」。那麼我應該如何攔截其他應用程序代碼? – prom85