2012-02-12 29 views
0

我在應用程序中實現了一些計算繁重的功能。根據輸入類型的不同,線程可能需要幾分鐘才能返回。在此期間,我希望用戶能夠與其他活動一起執行不同的任務(即爲下一次運行準備數據)。然後,在服務完成它的計算之後,應該向用戶通知Toast結果已經準備好,並且他應該檢查他開始服務的活動。不幸的是,我被困在這一點。Android - 在後臺運行繁重的計算並將結果返回到活動

是否有可能以某種方式與此刻正在被破壞的活動溝通?就像修改已保存的狀態一樣,以便在重新創建時顯示結果。我確實發現的唯一溝通方式是通過服務廣播,但這需要活動進行監聽,這是不可能的,因爲服務完成時不存在。

是發生在我在寫一個文件時,服務完成後再嘗試在活動讀它,但我寧願不與文件系統的工作,如果可能的話,唯一的解決方案。

我在這裏錯過了什麼東西,或者在錯誤的方向思考?

回答

0

你可以只從Service寫入SharedPreference

Activity可以檢查偏好時,它被啓動,你可以有一些標記,以表明其結果是從你的計算。

您也可以從Activity寫入相同的SharedPreference以使其無效,以便它可用於下一個結果。

0

我會使用一個AsyncTask,並將您的計算的值返回到某個有狀態的位置(甚至使用Application類或SharedPreferences)。

擁有的AsyncTask發動對完成你的活動,並讓你有狀態的存儲顯示該值。

基本上,結合前2個答案,你應該設置。