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 секунд. Это опять к слову о том, что не надо работать с сетью тут.
+1
Добрый день, Михаил! Принимаю первое замечание, исправил «обновление в реальном времени» на «обновление по клику».
Решил не выносить механизм обновления в отдельный сервис, так как посчитал это излишне затратным с точки зрения ресурсов. Тестирование показало, что поток интернет-активности в худшем случае отрабатывет в секунду. В общем случае Ваше предложение, конечно, правильно.
По поводу проверки на корректность JSON: программа в принципе мало что проверяет, не в этом была цель. Возможные исключения ловятся и выводятся в TextView виджета.
Решил не выносить механизм обновления в отдельный сервис, так как посчитал это излишне затратным с точки зрения ресурсов. Тестирование показало, что поток интернет-активности в худшем случае отрабатывет в секунду. В общем случае Ваше предложение, конечно, правильно.
По поводу проверки на корректность JSON: программа в принципе мало что проверяет, не в этом была цель. Возможные исключения ловятся и выводятся в TextView виджета.
+1
Sign up to leave a comment.
Разработка виджета под Android для отображения курса bitcoin