基本的に、しばらくすると私のウィジェットがランチャーを動かし始めます。プロファイリング、ログ記録、コメント アウト、および古き良き目視検査を行った後、問題の領域を絞り込んでウィジェット テキストを更新しました。これは私がこれを行うために使用している方法です:
public static void setText(Context context, String text) {
if (appWidgetManager == null)
appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews = Widget.getView(context);
ComponentName thisWidget = new ComponentName(context, Widget.class);
remoteViews.setTextViewText(R.id.PrimaryWidgetButton, text);
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
奇妙なことに、ラグが発生し始めるまでに数分かかるということです。これは、このコードによる何らかの長引く副作用があるかのようです。ウィジェットを削除すると、このコードがまだ呼び出されていても、吃音が停止します。ウィジェットを再度追加すると、吃音がすぐに再開されます。
注: 吃音は、テキストが変更された場合にのみ発生します。したがって、テキストを変更した後、ランチャーは問題ありませんが、調整中に途切れます。
この吃音の原因は何ですか? ウィジェットのテキストを更新するより良い方法はありますか?