Можно ли повторно использовать RemoteViews в appWidget вместо того, чтобы каждый раз создавать новые?и как я могу их хранить? - PullRequest
4 голосов
/ 29 декабря 2011

В моем appWidgetProvider каждый раз, когда мне нужно обновить appWidget, мне нужно создать новый объект RemoteViews и назначить его свойства:

RemoteViews views = new RemoteViews(context.getPackageName(),layout);
views.setOnClickPendingIntent(R.id.widgetLayout, pendingIntent);
view.setFloat(R.id.nick, "setTextSize", wParameters.getFontSize()); 
view.setTextViewText(R.id.nick,wParameters.getNick()); 
.........etc

appWidgetManager.updateAppWidget(appWidgetId, views);

Но на самом деле мне нужно изменить только одну вещь, а именно TextView Text.

Могу ли я как-то сохранить RemoteView для повторного использования при следующем обновлении и просто применить

 view.setTextViewText(R.id.nick,wParameters.getNick()); 
 appWidgetManager.updateAppWidget(appWidgetId, views);

снова

Или получить ранее использованный объект RemoteViews?

Я хочу добиться этого, потому что процесс установки новых свойств объекта RemoteViews снова очень дорог в моем appWidget.

Давайте предположим, что мой виджет состоит из TextView и ImageView. Изображение ImageView выбирается в configureActivity виджета (уникально для каждого экземпляра appWidget), но обработка изображения обходится дорого. текст TextView необходимо менять при каждом обновлении. Я хочу оставить изображение ImageView как есть, и только изменить текст TextView. Возможно ли обновить TextView без обновления imageView?

Буду рад любой помощи и идеям! Большое спасибо, Гал.

1 Ответ

2 голосов
/ 30 декабря 2011

Но на самом деле мне нужно изменить только одну вещь, а именно TextView Text.

Затем измените только текст TextView.

AFAIK, если вы сохраняете тот же идентификатор макета, вам не нужно обновлять каждый виджет в макете, если вы этого не хотите. Тем не менее, вам необходимо всегда знать, был ли виджет приложения отображен ранее, и это может оказаться сложным. Поэтому обычно проще каждый раз обновлять каждый виджет.

Можно ли как-то сохранить RemoteView для повторного использования при следующем обновлении

номер

Или получить ранее использованный объект RemoteViews?

Номер * * тысяча двадцать-одна

Я хочу добиться этого, потому что процесс установки новых свойств объекта RemoteViews снова очень дорог в моем appWidget.

Затем выполните работу в IntentService, запущенном вашим AppWidgetProvider, как если бы это было так дорого, вы не хотите выполнять эту работу в главном потоке приложения.

...