Главная » Разработка для Android » Отслеживание Намерений

0

Поскольку виджеты реализовываются в виде Приемников намерений, вы мо- жете инициировать обновления их состояния и пользовательского интерфейса с помощью регистрации Фильтра намерений для дополнительных действий.

Это динамический подход к обновлению  виджетов. Ввместо указания минимальной частоты обновления, что может повлечь излишнюю  трату ресурсов батареи, используется более эффективная событийная модель.

В листинге 10.13 приведен пример кода в формате XML, в котором Фильтр намерений добавляется в ту часть манифеста, где описывается виджет, соз- данный ранее.

Листинг 10.13. Отслеживание передачи Намерений внутри виджета

<receiver android:name=".MyAppWidget" android:label="My App Widget">

<intent-filter>

<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

</intent-filter>

<intent-filter>

<action android:name="com.paad.chapter9.FORCE_WIDGET_UPDATE" />

</intent-filter>

<meta-data android:name="android.appwidget.provider" android:resource="@xml/my_app_widget_info"

/>

</receiver>

Отредактировав обработчик  onReceive, как показано в листинге 10.14, вы можете отслеживать новое Намерение и использовать его, чтобы обнов- лять свой виджет.

Листинг 10.14. Обновление виджета, основанное на передаче Намерений

public static String FORCE_WIDGET_UPDATE = "com.paad.chapter9.FORCE_ WIDGET_UPDATE";

@Override

public void onReceive(Context context, Intent intent) {

super.onReceive(context, intent);

if (FORCE_WIDGET_UPDATE.equals(intent.getAction())) {

// TODO Обновить пользовательский интерфейс виджета.

}

}

Чтобы  инициировать обновление  виджета  в любой точке вашего при- ложения,  можно передавать Намерение следующим образом:

context.sendBroadcast(new Intent(FORCE_WIDGET_UPDATE));

Этот способ особенно полезен, когда нужно обеспечить реакцию на си- стемные, пользовательские или программные события, такие как обновление данных, нажатие  кнопки  внутри  виджета, а также изменения в состоянии подключения к сети, уровне заряда батареи или яркости  экрана.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии