這裏是我的問題:安卓:如何讓結果從服務早在開展活動
我有一個活動是用戶輸入一個「問題」
的數據 - 該活動推出一項服務(由意圖)與問題的數據
- 該服務計算問題的解決方案
- 我想發送此解決方案的活動,以便它可以打印,如果在屏幕上。
問題是,我不想再次開始活動......你知道我該怎麼做嗎?
謝謝!
這裏是我的問題:安卓:如何讓結果從服務早在開展活動
我有一個活動是用戶輸入一個「問題」
的數據 - 該活動推出一項服務(由意圖)與問題的數據
- 該服務計算問題的解決方案
- 我想發送此解決方案的活動,以便它可以打印,如果在屏幕上。
問題是,我不想再次開始活動......你知道我該怎麼做嗎?
謝謝!
如果用戶在「解決方案」準備好之前輸入「問題數據」後按下BACK或HOME,會發生什麼情況?
如果答案是你不需要做任何事情,那麼擺脫Service
,並讓Activity
做計算解決方案的工作(可能使用AsyncTask
)。在這種情況下,您使用Service
沒有獲得任何收益。
然而,如果用戶仍希望「解決方案」,然後用Service
是好的,但你必須考慮到啓動該服務Activity
可能不再存在或可能不會在前臺。
處理此問題的一種方法是使用有序廣播。讓Activity
在前臺(通過onResume()
和onPause()
)爲廣播註冊高優先級BroadcastReceiver
,並通過清單爲同一廣播註冊低優先級BroadcastReceiver
。工作完成後,Service
將sendOrderedBroadcast()
。 Activity
- 註冊BroadcastReceiver
將更新其用戶界面與結果並中止廣播。清單登記的BroadcastReceiver
將引發Notification
以讓用戶瞭解完成的工作。 Here is a blog post與更多關於這種模式,和here is a sample project演示其使用。