По сути, через некоторое время мой виджет начинает вызывать лаунчер заикаться.После некоторого профилирования, регистрации, комментирования и просто старого доброго визуального осмотра я сузил проблемную область до обновления текста виджета.Это метод, который я использую, чтобы сделать это:
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);
}
Странно то, что требуется несколько минут, прежде чем он начнет вызывать задержку, как будто есть какой-то отсроченный побочный эффект от этогокод.Удаление виджета останавливает заикание, хотя этот код все еще вызывается.Повторное добавление виджета немедленно возобновляет заикание.
Примечание. Заикание происходит только при изменении текста.Так что после того, как он изменил текст, с лаунчером все в порядке, но во время настройки он заикается.
Что может быть причиной этого заикания?Есть ли лучший способ обновить текст в виджете?