Q
爲服務回撥
0
A
回答
0
來實現,這將是創建一個廣播接收器在您的活動,並有服務使用sendBroadcast用自定義的意圖的最簡單方法。數據可以通過使用Intent的putExtra()方法傳輸。確保你在活動的onResume()中註冊接收者,並在onPause()中取消註冊。
0
你遵循的教程有一個失敗的設計:
public class BillingService extends Service implements ServiceConnection {
... ...
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
... ...
}
@Override
public void onServiceDisconnected(ComponentName name) {
... ...
}
}
AHHHH,看起來像博客正試圖做一些代碼重新分解,他認爲將是由活動了移動ServiceConnection更聰明,實現它隨着服務的實施。這絕對是一個有效的代碼重新分解,但卻是失敗的設計,因爲它會喪失活動和服務之間IPC(進程間通信)的好處和便利。當從面向對象的角度談論代碼重構時,從問題抽象層面思考更多問題,而不是粗暴地將內部類從代碼級剝離。
您應該遵循從official dev guide正確的設計模式,定義和實現ServiceConnection作爲一個內部類的活動,你將重新獲得IPC的好處和便利,只需撥打您在活動中onServiceConnected回調定義的所有方法,一旦該服務已準備就緒:
public class BindingActivity extends Activity {
... ...
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
... ...
// call a function in my main activity once the service is connected:
this.foo();
}
@Override
public void onServiceDisconnected(ComponentName name) {
... ...
}
};
}
請注意,官方開發指南建議做的事情的方式總是最合理和最有效的。 Android開發者不會僅僅爲了好玩才寫官方的開發指南。希望這可以幫助。
相關問題
- 1. 服務回撥爲android
- 2. 支持回撥服務的WCF協議
- 3. 從服務器回撥到客戶端
- 4. Android撥打WCF服務
- 5. Angular2 - 多次撥打服務
- 6. Android:撥打服務電話
- 7. 撥打GSM服務#123#
- 8. 使用AlarmManager撥打服務
- 9. 在下面的代碼(wcf服務器)中回撥繼續
- 10. 檢查WCF回撥服務的可用性
- 11. WCF雙工服務回撥電話凍結
- 12. 來自服務Android的回撥按鈕(系統範圍)
- 13. 從服務中運行的線程回撥(通知)
- 14. 可回撥的回撥/驗證提示
- 15. 回調不回撥
- 16. 從GAE/J撥打SOAP服務
- 17. 從瀏覽器撥打Windows服務
- 18. 防止多次撥打網絡服務
- 19. 從ios撥打多個網絡服務
- 20. 從SL3多次撥打數據服務?
- 21. 從Windows Mobile撥打網絡服務
- 22. 從javascript撥打WSO2 ESB服務
- 23. 如何從Iphone撥打wcf服務
- 24. 用於撥入電話的SIP服務
- 25. 從服務器撥打電話 - 有哪些服務?
- 26. Facebook messenger回撥
- 27. Android SyncAdapter回撥
- 28. 用Python回撥
- 29. touchesBegan不回撥?
- 30. 回撥機制
他實際上是使用官方指南說做應用程式內結算與BillingService有路,似乎有點不同,但以下他們做了什麼,他們也做了同樣的事情 – DRing 2012-04-05 22:34:20
正如我所說,本教程中的代碼肯定是有效的,你仍然可以通過做一些額外的工作來實現你想要的(即將Activity上下文作爲對Service的引用,然後調用它的方法)。這裏的要點是如何根據不同的用例做更合理高效的事情。在你的情況下,除了增加編碼複雜度來解決你的問題之外,這種FAIL代碼重構不會幫助你獲得任何好處。我之前做過類似的事情,但最終意識到Google建議的方式總是最合理和最有效的,至少在大多數常見的使用案例中。 – yorkw 2012-04-05 22:49:35