AppWidgetManager.updateAppWidget中出现了android.os.TransactionTooLargeException异常

6

我收到我的小部件用户反馈关于 android.os.TransactionTooLargeException 的报告:

android.os.TransactionTooLargeException
android.os.BinderProxy.transact(Native Method)
com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.updateAppWidgetIds(IAppWidgetService.java:611)
android.appwidget.AppWidgetManager.updateAppWidget(AppWidgetManager.java:378)
android.appwidget.AppWidgetManager.updateAppWidget(AppWidgetManager.java:445)
com.alonedroid.ooswitcher.animationRunnable.run(ProvidersShared.java:1804)
java.lang.Thread.run(Thread.java:841)

当我尝试通过AppWidgetManager.updateAppWidget(widget_id, RemoteView)在单独的线程中更新小部件时,会出现该异常。我从文档中了解到TransactionTooLargeException,并且一开始认为这是由于RemoteViews实例的大小所致。因此,我开始在我的RemoteViews实例中设置更多的布局,但从未在我的设备上看到此错误。

有人也遇到过这个问题,甚至解决了吗?如何重现此错误以调试应用程序?

1个回答

2

看RemoteViews的实现,如果在单个RemoteViews实例上执行太多操作,则可能会发生这种情况。

例如,使用相同参数1000次调用setTextViewText将向RemoteViews添加1000个操作,这些操作必须跨进程传输并作为更新应用。

确保不要对同一个RemoteViews对象进行过多的操作似乎可以解决此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接