我已經實現了一個在我的應用程序和Google文檔之間執行異步同步的服務。我想在同步完成後更新我的應用程序的頂級活動。但是,由於該服務,應用可能處於未知狀態。有沒有辦法讓頂級活動成爲可能,從服務中的asynchtask重新創建自己。從異步服務更新活動
回答
在您的服務中,只需致電startActivity(new Intent(this, TopLevelActivity.class))
。如果它尚未運行,它將啓動您的TopLevelActivity,或者在您的TopLevelActivity的方法正在運行時調用您的TopLevelActivity方法,並將其帶到最前面。如果您想收到通知,您可以覆蓋onNewIntent()
並捕獲意圖。
正確的方式做到這一點,我相信,是使用使用遠程接口AIDL: https://developer.android.com/guide/components/aidl.html
您做一個簡單的*.aidl
文件與它的接口,和Android工具將生成接口類爲你。它將允許您註冊回調方法。比折騰startActivity意圖來得更乾淨。
謝謝本。我會研究這個。 – 2010-04-02 20:58:51
我讀過廣播不應該在你的應用程序內部進行通信時因爲開銷。我認爲本託賓的解決方案可能是最好的答案。 – 2010-04-03 04:20:29
- 1. 更新前臺服務notificaton從活動
- 2. android服務更新活動
- 3. 從活動,異步和服務訪問SQLite
- 4. ProgressBar沒有從異步任務更新
- 5. 異步任務更新UI
- 6. Android異步用戶界面從服務更新失敗
- 7. 角度 - 異步更新和呈現從服務到控制器
- 8. SQL服務器更新/活動列
- 9. 更新服務中的活動數據
- 10. 服務sharedpreferences更新活動中的值
- 11. 在Android中啓動活動時的異步服務調用
- 12. 同步和異步活動
- 13. 異步任務服務未啓動
- 14. 異步更新
- 15. 從服務啓動活動
- 16. 差異同步活動ANS異步活動之間
- 17. Android服務和活動更改活動中的服務價值
- 18. 更新從服務到活動的下載進度
- 19. 調用方法從服務中更新活動中的TextViews
- 20. 從多個活動中執行異步服務器通信的最佳方法
- 21. 在使用異步任務的活動中完成任務呼叫服務
- 22. 從服務和異步任務啓動PopupWindow
- 23. 從另一個活動更新活動
- 24. 異步任務沒有更新屏幕
- 25. 異步任務無法更新GUI
- 26. 從活動呼叫服務
- 27. 從活動開始服務
- 28. 從活動開始服務
- 29. 從活動停止服務
- 30. ResultReceiver從服務到活動
請記住,用戶不一定會欣賞在他們正在做的事情(例如,玩遊戲,鍵入文字消息,在撥打電話時使用撥號盤)突然冒出來的活動。 – CommonsWare 2010-04-02 18:53:38
謝謝合作。這工作!但是我確實需要爲我的活動類添加一個靜態標誌,告訴我他們是否當前處於活動狀態。我暫停翻轉此標誌並繼續。這樣我就不會改變手機的狀態。如果活動已打開,我只需更新UI。我沒有覆蓋onNewIntent(),我檢查了一個布爾值,它被添加到我的服務發送的意圖中。這樣,如果意圖來自我的服務,我更新了用戶界面。由於布爾運算符的原因,我不太喜歡這種方法,但它的功能。再次感謝。 – 2010-04-02 18:55:33
或者,您可以在'onResume()'中使用您添加到服務中的一些自定義方法將您的活動註冊到服務中。像'mService.registerActivity(this)'和'onService()'中的'mService.unregisterActivity(this)',這樣服務就知道Activity是否當前處於活動狀態。 – synic 2010-04-02 19:09:38