Виджет с разным временем обновления.

Интерфейс, диалоги, темы, стили, меню
Ответить
Novatom
Сообщения: 3
Зарегистрирован: 26 окт 2012, 05:37

Виджет с разным временем обновления.

Сообщение Novatom » 26 окт 2012, 05:58

Привет!

Создал виджет для проверки баланса у провайдера. Он отлично работает. Теперь хочу его развить - добавить возможность выбора интервала обновления. Добавил произвольный интервал обновления по примеру отсюда http://www.parallelrealities.co.uk/2011 ... droid.html Всё работает, но все мои виджеты обновляются одновременно и у меня никак не получается сделать для каждого виджета свой интервал обновления.
Моя идея выглядит так:

Код: Выделить всё

	public static void updateAppWidget(Context context, int[] appWidgetIds) {
		Log.v(TAG, "updateAppWidget");

		final AlarmManager alarmManager = (AlarmManager) context
				.getSystemService(Context.ALARM_SERVICE);
		final Calendar TIME = Calendar.getInstance();
		final Intent intent = new Intent(context, WidgetUpdateService.class);

		intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);

		if (pendingIntent == null) {
			pendingIntent = PendingIntent.getService(context, 0, intent,
					PendingIntent.FLAG_CANCEL_CURRENT);
		}

                      // БЫЛО В ОРИГИНАЛЕ
		// alarmManager.setRepeating(AlarmManager.RTC, TIME.getTime().getTime(),
		// 1000 * 60 * 5, pendingIntent);
		
		
                      // МОЯ НЕ РАБОТАЮЩАЯ ИДЕЯ
		SharedPreferences prefs = context.getSharedPreferences("statPrefs",
				Context.MODE_PRIVATE);

		for (int appWidgetId : appWidgetIds) {
			int updateInterval = prefs.getInt(UPDATEINTERVAL + appWidgetId,
					1000 * 60 * 30);

			//Log.v(TAG, "updateInterval: " + updateInterval + " appWidgetId: " + appWidgetId);

			alarmManager.setRepeating(AlarmManager.RTC, TIME.getTime()
					.getTime(), updateInterval, pendingIntent);
			
			context.startService(intent);
		}
	}
Вопрос - а вообще возможно сделать то, что я хочу. И если возможно - куда копать, где почитать как это сделать?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Виджет с разным временем обновления.

Сообщение damager82 » 29 окт 2012, 16:44

Novatom писал(а): Добавил произвольный интервал обновления по примеру отсюда http://www.parallelrealities.co.uk/2011 ... droid.html Всё работает, но все мои виджеты обновляются одновременно и у меня никак не получается сделать для каждого виджета свой интервал обновления.
А в сервисе у вас код такой же как в примере по ссылке?
Там используется реализация метода, которая апдейтит все виджеты:
updateAppWidget(ComponentName provider, RemoteViews views)
Set the RemoteViews to use for all AppWidget instances for the supplied AppWidget provider.


А вам надо вот эту:
updateAppWidget(int appWidgetId, RemoteViews views)
Set the RemoteViews to use for the specified appWidgetId.


Т.е. в сервис дополнительно передавайте в интенте ID виджета.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Novatom
Сообщения: 3
Зарегистрирован: 26 окт 2012, 05:37

Re: Виджет с разным временем обновления.

Сообщение Novatom » 31 окт 2012, 13:10

Нет, у меня там сборная солянка из разных мест. Сервис запускает AsyncTask, которая отправляет запросы на сервер и обрабатывает ответы. У самого куча вариантов как можно попробовать исправить, да еще и советы с форумов надо опробовать, времени не хватает.

Novatom
Сообщения: 3
Зарегистрирован: 26 окт 2012, 05:37

Re: Виджет с разным временем обновления.

Сообщение Novatom » 13 ноя 2012, 08:31

Всем привет!

Наконец-то я нашел внятное описание, как сделать сабж. Прикрутил к себе в проект, всё работает - виджеты обновляются в заданное время. Что бы облегчить жизнь другим разработчикам оставлю ссылку на эту статью: http://malubu.wordpress.com/2012/06/05/ ... rmmanager/

Ответить