0

次のように、アプリケーションのマニフェスト ファイルにブロードキャスト レシーバーを登録しました。

<receiver android:name="com.example.devicecommunication.MainActivity$proximityOffReceiver" android:enabled="true"> 
        <intent-filter> 
            <action android:name="com.example.devicecommunication.PROXIMITYOFF" /> 
        </intent-filter> 
</receiver> 

MainActivity でレシーバーを定義しました (アクティビティがフォアグラウンドにない場合でもレシーバーを実行したいため)。リンクAndroid - how to unregister a receiver created in the manifest?を見ました。. しかし、アプリケーションが終了するたびに、または戻るボタンが押されるたびに、受信者を明示的に登録解除する必要がある場合、私は混乱していますか? 前もって感謝します!

4

3 に答える 3

2

MainActivity でレシーバーを定義しました (アクティビティがフォアグラウンドにない場合でもレシーバーを実行したいため)。

proximityOffReceiverは static 内部クラスであるため、内部にあるからといって、MainActivity「アクティビティがフォアグラウンドにない場合」に影響があるわけではありませんproximityOffReceiver

しかし、アプリケーションが終了するたびに、または戻るボタンが押されるたびに、受信者を明示的に登録解除する必要がある場合、私は混乱していますか?

その質問に対する受け入れられた回答は、マニフェストに登録されている受信者を「登録解除」しないことを指摘しています。レシーバーを有効または無効にします。

したがって、あなたの場合、動作させたいときにレシーバーを有効にし、動作させたくないときにレシーバーを無効にします。あなたの場合、常に動作させたいように見えますが、その場合、おそらく無効にすることはありません。

于 2013-07-03T11:22:06.243 に答える
1

受信機を登録するか登録解除するかは、使用状況によって異なります。アプリケーションを終了するたびに、または戻るボタンを押すたびに、レシーバーを明示的に登録解除する必要はありません。

于 2013-07-03T11:17:58.100 に答える
1

アクティビティが実行されているかどうかに関係なくレシーバーを発生させたい場合にのみ、レシーバーをマニフェストに配置する必要があります。アプリの起動後にのみオンにする場合は、アクティビティによってコードに登録する必要があります。ほぼ常にオンにして、短時間だけオフにする受信機がない限り、マニフェストに設定したら登録を解除する理由はありません。

于 2013-07-03T11:24:50.597 に答える