0

数秒前にウィジェットをデバッグしていたところ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だから、ウィジェットがホーム画面に効果的に配置されている場合にのみ呼び出されたい..これを行う方法はありますか? :)

答えてくれてありがとう

4

1 に答える 1

2

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

特定の時間にのみ呼び出す場合は、ウィジェットのコードに登録し、ブロードキャストを受信したくない場合は登録を解除する必要があります。

于 2011-01-12T21:21:35.887 に答える