Pull to refresh

Comments 2

Столкнулся со следущей сложностью: система позволяет виджету обновляться (методом updateAppWidget) не чаще чем раз в 30 минут по соображениям экономии батареи. Но мне хотелось иметь возможность видеть данные в реальном времени и я нашел способ обойти это ограничение. Для этого виджет был запрограммирован к принудительному обновлению по клику на него.

Вы серьёзно? Нет вы серьёзно назвали реал тайм обновление, обновлением по клику? =)
Виджет это BroadcastReceiver, поэтому нет никаких проблем по его обновлению. Вот кусок моего кода
     	@Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);

        int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

        switch (intent.getAction()) {
            case ACTION_CHECKPOINT_LIST_CLICKED:
                if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
                    return;
                }
                updateWidget(context, appWidgetManager, widgetId, WidgetPreference.LIST_TYPE_CHECKPOINTS);
                appWidgetManager.notifyAppWidgetViewDataChanged(widgetId, R.id.list_view);
                break;
		}
	}

У меня виджет обновляется с помощью оповещениия сервисом о том, что данные обновились. Эти данные могут и каждую секунду у меня обновляться.

Делать логику работы с сетью в бродкастресивере (виджете), не самая лучшая идея. Куда правильней сделать для этого какой-нибудь сервис, к примеру IntentService.

В JSON парсере нет проверки на валидность.

Учитывайте что BroadcastReceiver живёт 10 секунд. Это опять к слову о том, что не надо работать с сетью тут.
Добрый день, Михаил! Принимаю первое замечание, исправил «обновление в реальном времени» на «обновление по клику».
Решил не выносить механизм обновления в отдельный сервис, так как посчитал это излишне затратным с точки зрения ресурсов. Тестирование показало, что поток интернет-активности в худшем случае отрабатывет в секунду. В общем случае Ваше предложение, конечно, правильно.
По поводу проверки на корректность JSON: программа в принципе мало что проверяет, не в этом была цель. Возможные исключения ловятся и выводятся в TextView виджета.
Sign up to leave a comment.

Articles