私は、携帯電話のWiFi、Bluetooth、モバイルネットワークと対話するアプリケーションを開発しています。 アプリは主にサービスであり、GUIは中心的な役割を果たしません。Android:非同期イベント(インテント)の処理のためのデザインパターン
アプリケーション、およびサービス・クラスの主要メソッドのコアアプリケーションが受信する必要があるすべてのインテントを受信する単一の方法であって
public void handleIntent(Intent intent){
次に意図の行動を抽出し、特定の呼び出し例えば、対応する目的のアクションのためのハンドラメソッド、SCREEN_ONを受信したとき、それは
private void handleScreenOn(){
を呼ぶような問題は、携帯電話上でいくつかのタスクには時間がかかるということで、いくつかの他のイベントとなるようタスクの処理の途中で発生する可能性があり、処理を変更する必要があります。
例えば、Wi-Fiをオンにするには数秒かかりますが、実際に完了するまでにはWIFI_STATE_CHANGED_ACTIONが送信されます。 WiFiが有効になっている途中で、ユーザーはSCREEN_OFFのインテントを受信するように画面をオフにすることができます。
私のアプリの目標は、画面がオフになったときにWiFiをオフにすることです。問題が発生した状況があります:
- 初期状況:画面は、オンでのWiFiがオフの
- ユーザーがそれを可能にするための無線LANの設定を切り替えます。無線LANが有効になって
- ユーザーを得ることはほとんどすぐにアプリがSCREEN_OFFが意図受信するが、無線LANがまだ有効になっていないので、それはそれ
- に有効が終わっます無線LANを無効にする必要がないと考えている、と
- オフ画面をオンに開始します画面がオフになっているにもかかわらず、Wi-Fiは有効なままです。
解決方法
現在、ステップ5では、Wifiが有効になったときに、画面がオフになっているかどうかを確認して、Wi-Fiをもう一度オフにします。 この解決策は、すべての可能な場合を処理する多くのif/elseを必要とします。
私は、それを行う意図のスタック、またはこのようなものを扱ういくつかのクリーンな方法がなければならないと確信している...それをきれいに行う方法についていくつかの良いデザインのパターや良いアドバイスと
誰でも?