AppWidgetManager.updateAppWidget中的android.os.TransactionTooLargeException

时间:2013-11-22 09:51:02

标签: android exception widget

我从我的小部件用户那里收到有关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 个答案:

答案 0 :(得分:0)

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

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

确保相同的RemoteViews对象不会被大量的操作重复使用,似乎可以解决此问题。