質問

数秒前にウィジェットをデバッグしていましたが、 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状態を変更するには)、ウィジェット画像を(オフからオンラインまたはその逆に)更新します。

明らかに、ウィジェットが実際にホーム画面でアクティブでない場合、2つの方法の2つの方法の呼び出し(そして完全なオンレセイブ)は役に立たない。

だから、私は私のものが欲しい onReceive ウィジェットがホーム画面に効果的に配置されている場合にのみ呼び出されます。これを行う方法はありますか? :)

答えを前もってありがとう

役に立ちましたか?

解決

なぜあなたの放送レシーバーは呼ばれないのですか?それが、プロセス/アクティビティが実行されていないときに、ブロードキャストレシーバーのポイントです。

特定の時間にのみ電話をかけたい場合は、ウィジェットのコードに登録し、放送を受けたくないときに登録解除する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top