1

画面に最初にウィジェットを追加すると、エラーなしで動作し、ウィジェットのボタンをクリックしてアクティビティに入って閉じます。ウィジェットの更新が停止し、このエラーが表示されます

12-19 19:14:52.370: E/JavaBinder(14805): !!! FAILED BINDER TRANSACTION !!!

ここに私のコードがあります:

Widget4x2.remoteViews.setProgressBar(R.id.widget_progressbar, 100, (int)(NowPlayingService.progress * 100), false);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(Widget4x2.context);
appWidgetManager.updateAppWidget(new ComponentName(Widget4x2.context,Widget4x2.class), Widget4x2.remoteViews);

コードに問題はありますか?

4

2 に答える 2

1

Widget4x2.remoteViews は静的変数だと思います。静的変数が割り当てられていないか、適切に開始されていない可能性があります。

于 2012-12-22T02:16:11.413 に答える
0

でセッター ( などsetProgressBar)を呼び出すとRemoteViews、ビューが直接変更されることはありません。代わりに、一連の変更 (アクションと呼ばれる) を保存し、シリアル化して通知またはウィジェット マネージャーに送信します。

オブジェクトを格納するために静的変数を使用しているためRemoteViews、remoteViews に関連付けられたアクションのリストは、更新すると無限に大きくなりますremoteViews。これは、serialized のremoteViewsサイズがバインダー トランザクションの最大ペイロード サイズである 1Mb に達すると停止します。

アクションのリストをクリアまたは重複排除する方法はないため、再作成RemoteViewsが解決策です。

于 2015-10-16T12:34:32.990 に答える