2012-03-03 61 views
1

這裏是我的問題:安卓:如何讓結果從服務早在開展活動

我有一個活動是用戶輸入一個「問題」
的數據 - 該活動推出一項服務(由意圖)與問題的數據
- 該服務計算問題的解決方案
- 我想發送此解決方案的活動,以便它可以打印,如果在屏幕上。

問題是,我不想再次開始活動......你知道我該怎麼做嗎?

謝謝!

回答

3

如果用戶在「解決方案」準備好之前輸入「問題數據」後按下BACK或HOME,會發生什麼情況?

如果答案是你不需要做任何事情,那麼擺脫Service,並讓Activity做計算解決方案的工作(可能使用AsyncTask)。在這種情況下,您使用Service沒有獲得任何收益。

然而,如果用戶仍希望「解決方案」,然後用Service是好的,但你必須考慮到啓動該服務Activity可能不再存在或可能不會在前臺。

處理此問題的一種方法是使用有序廣播。讓Activity在前臺(通過onResume()onPause())爲廣播註冊高優先級BroadcastReceiver,並通過清單爲同一廣播註冊低優先級BroadcastReceiver。工作完成後,ServicesendOrderedBroadcast()Activity - 註冊BroadcastReceiver將更新其用戶界面與結果並中止廣播。清單登記的BroadcastReceiver將引發Notification以讓用戶瞭解完成的工作。 Here is a blog post與更多關於這種模式,和here is a sample project演示其使用。