数秒前にウィジェットをデバッグしていたところ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
て (wifi の状態を変更する)、ウィジェット イメージを更新します (off から on に、またはその逆に)。
ウィジェットが実際にホーム画面でアクティブでない場合、toggleState と updateWidget (および完全な onReceive ) の 2 つのメソッドの呼び出しは明らかに役に立ちません。
onReceive
だから、ウィジェットがホーム画面に効果的に配置されている場合にのみ呼び出されたい..これを行う方法はありますか? :)
答えてくれてありがとう