2010-06-16 45 views
0

我目前正在開發一個android應用程序,它正在訪問wifi值,也就是說,應用程序需要掃描所有的接入點及其特定的信號強度。 我知道我必須擴展BroadcastReceiver類,覆蓋方法BroadcastReceiver.onReceive(Context context, Intent intent),這個值在準備就緒時會被調用。
也許存在android系統本身提供的解決方案,但我相對較新的android,所以我可能需要一些幫助。
我遇到的問題是,我得到了一個類(活動,因此由用戶控制),需要此掃描結果的兩個不同的東西(首先將值保存在數據庫中或第二個,用它們進行進一步計算,但不是一次都是!) 那麼如何設計回調系統,以便將來自onReceive(Context context, Intent intent)的掃描結果「傳輸」到用戶所期望的操作? 我的第一個解決方案是爲每個用例定義枚舉(保存或用於計算),在查詢值時需要提交哪些對wlan感興趣的類。但是這會迫使BroadcastReceiver擴展類保存當前枚舉並將其用作查詢類的回調函數中的參數(此查詢類需要知道它在回調時要求的內容)
但是,在我看來,這種類型的髒;)
所以,任何人都是一個好主意呢?Android的回調函數的設計問題

回答

0

您可能希望在每個活動中使用匿名內部類和/或在每個活動中派生的BroadcastReciever的實例,並使用Context#registerReceiver註冊它。然後讓它在調用onRecieve時與它的父級進行交互。我想你要做的是在清單文件中定義一個BroadcastReciever,然後將數據傳遞給一個活動。這不是實現你想要的最好的方式。

+0

我想你誤解了我的問題。我想讓掃描過程完全從GUI活動中分離出來。 GUI擁有一個對象,該對象提供獲取使用wlan值計算的值的方法。這意味着GUI擁有的對象應該啓動某種服務或線程來掃描wlan值,然後這些值會回調或通知所有等待某種「數值就緒」信號的監聽器。問題是,我必須同時處理幾個參數,比如「掃描次數」,「如何掃描」等等,GUI不再知道(因爲它被回調) – 2010-06-22 13:46:02