2012-06-12 85 views
1

我有一個應用程序接收短信並啓動某些「工作」,現在這項工作是通過相機和其他一些第三方API完成的。因此,當我收到適當的START消息(短信)爲我的應用程序,我開始工作,並繼續,直到應用程序收到來自遠程設備的STOP消息。Android:BroadcastReceiver.onReceive()之間的持續對象調用

接收方在manifest.xml文件中註冊,否則工作正常。

現在的問題是,我的應用程序在接收到START消息時開始工作正常,但是當我在一段時間後收到STOP消息時,我無法真正停止工作,因爲我爲相機提供的手柄/對象引用以及第三方API都是空的。我對他們中的任何一個都沒有任何控制權 - 並且不能讓他們成爲單身人士。所以我需要在BroadcastReceiver這兩個調用之間持續保存這些對象引用,我無法找到正確執行此操作的方法。現在,我剛剛創建了這個類的兩個靜態成員,並且工作正常,但這不是一個很好的解決方案。在這種情況下處理情況的最佳方式是什麼?如何使用BroadcastReceiver的多個onReceive()調用之間的初始化對象?

任何幫助/指針將不勝感激!

TIA, - 和Manish

回答

0

也可以在ApplicationClass即添加對象引用從Application類擴展的類。您的應用程序類將保留在內存中,直到任何ActivityService正在運行。它將在所有的ActivityService遇難後纔會死亡。

我認爲這是一個更好的方法,即靜態字段。 但這也不是Full-Proof。我也在尋找這個問題。

+0

我無法訪問'BroadcastReceiver'中的'Application',這裏沒有任何活動。 – Manish

1

你不能使用singleton這個類,但是你可以創建一個普通的類,並讓它成爲singleton。這個類有一個HashMap,並用一個鍵存儲你的api和相機對象。當你需要停止特定的任務時,你可以通過某個鍵找到它,並通過該對象停止它們。

當你啓動任務存儲該單例中的對象,並且當你想停止從哈希映射中找到該對象並停止/處置該任務時。

我建議你創建一個單例對象volatile。

private static volatile Utils _instance = null; 


public static Utils Instance() { 
    if (_instance == null) { 
     synchronized (Utils.class) { 
      _instance = new Utils(); 
     } 
    } 
    return _instance; 
} 
+0

讓我試試這個。聽起來很合理 – Manish

相關問題