Страница 1 из 1

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

Добавлено: 26 окт 2012, 05:58
Novatom
Привет!

Создал виджет для проверки баланса у провайдера. Он отлично работает. Теперь хочу его развить - добавить возможность выбора интервала обновления. Добавил произвольный интервал обновления по примеру отсюда 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);
		}
	}
Вопрос - а вообще возможно сделать то, что я хочу. И если возможно - куда копать, где почитать как это сделать?

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

Добавлено: 29 окт 2012, 16:44
damager82
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 виджета.

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

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

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

Добавлено: 13 ноя 2012, 08:31
Novatom
Всем привет!

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