2011-01-11 38 views
0

数秒前私は自分のウィジェットをデバッグしていましたが、onReceiveメソッドが呼び出されました。私のウィジェットがホーム画面にない場合でも(WIFI_STATE_CHANGED_ACTIONを聞きます)。私のウィジェットのプロセスが実行されていなくても、起動されメソッドが呼び出されます。 マニフェスト内のコード以下である:onReceiveが呼び出されないときに呼び出される

<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> 

単に別の方法toggleStateを(無線LANの状態を変化させる)を呼び出し、その後、ウィジェット画像を更新onReceive方法(画像オフからオン又は逆に )。

ウィジェットがホーム画面上で実際にアクティブでない場合は明らかに二つの方法toggleStateとupdateWidgetの呼び出し(およびその完全onReceive)は役に立たない。..

だから、私は私のonReceiveが場合にのみ呼び出さたいです私のウィジェットは効果的にホームスクリーンに置かれます。これを行う方法はありますか? :)

お返事ありがとうございました

+0

この「BroadcastReceiver」の設定方法についてもう少し具体的に質問を編集できますか? – CommonsWare

+0

あなたは正しい、申し訳ありません:) ..コードが追加されました。 – Salv0

答えて

2

あなたの放送受信機はなぜ呼び出されませんか?これは、プロセス/アクティビティが実行されていないときに呼び出されることです。

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

+0

私のウィジェットがホーム画面に表示されない場合、なぜシステムはonReceiveを呼び出さなければならないのでしょうか? :)それは役に立たないです – Salv0

+0

システムはそれをどのように知っていますか?あなたが知っているのは、WIFI_STATE_CHANGEDで放送を受信するために登録された放送受信機があることだけです。それで、それはそれを届けます。 – Falmarri

+0

これは、私のウィジェットがホーム画面になく、onReceiveへの呼び出しが役に立たないことをシステムに知らせるためのメソッド(存在する場合)を要求している理由です:P – Salv0