AppWidgetManager.updateAppWidget 中的 android.os.TransactionTooLargeException

alo*_*oid 6 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)
Run Code Online (Sandbox Code Playgroud)

当我尝试通过AppWidgetManager.updateAppWidget(widget_id, RemoteView). 我阅读了有关 TransactionTooLargeException 的文档,首先,我认为 - 这是因为 RemoteViews 实例的大小。所以我开始在我的 RemoteViews 实例中设置更多布局,但从未在我的设备上看到这个错误。

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

小智 2

查看 RemoteViews 的实现,如果对单个 RemoteViews 实例执行太多操作,就会发生这种情况。

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

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