несколько секунд назад я отлаживал свой виджет и обнаружил, что метод onReceive
вызывается, даже если мой виджет не на домашнем экране (он прослушивает WIFI_STATE_CHANGED_ACTION
). Даже если процесс моего виджета не запущен, он запустится и будет вызван метод.
Код в манифесте следующий:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<receiver android:name="WiFiWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
</application>
Метод onReceive
просто вызывает другой метод toggleState
(для изменения состояния Wi-Fi), а затем обновляет изображение виджета (с выключенного на включенное изображение или наоборот).
Очевидно, что вызов двух методов toggleState и updateWidget (и, следовательно, полного onReceive) бесполезен, если виджет фактически не активен на домашнем экране.
Итак, я хочу, чтобы мой onReceive
вызывался только в том случае, если мой виджет эффективно размещен на домашнем экране. Есть ли способ сделать это? :)
Заранее спасибо за ответы