在什麼情況下使用AIDL來定義服務接口是正確的決定(而不是僅創建service
類的擴展)?何時使用基於aidl的服務?
12
A
回答
5
僅僅擴展服務類將不允許您的服務將其方法公開給外部實體。如果你希望你的服務被暴露/使用你的android應用程序中運行的代碼,你將不得不爲它定義一個AIDL。這個AIDL將被分享,並作爲您的服務合同而形成。請參閱此http://developer.android.com/guide/components/aidl.html。
6
如果您希望應用程序進程之外的類能夠訪問服務,則需要使用AIDL。如果您只使用應用程序內部的服務,則可以使用local service。
0
1.如何使用基於aidl的服務。
幾個好處是可以通過你的代碼段部分來獲得到後端服務:
- 解耦前端和後端
- 內存/ CPU密集型處理可堆疊後端服務,GC在服務不會影響前端的用戶體驗
- 服務崩潰不會搞垮整個APP
2.how創建這樣一個服務
我寫了一個好的圖書館,你可以參考作爲一個例子http://github.com/zhchang/hogwarts
0
AIDL
Android的接口定義語言(AIDL)允許開發人員定義的編程接口,客戶端和服務器使用,以使用進程間通信(IPC)相互通信。
本文演示如何連接到Android中正在運行的服務以及如何從遠程/正在運行的服務中檢索數據。
的IPC機構實施例
設RemoteService是客戶服務和RemoteServiceClient是與遠程服務進行通信的活動。
一項服務提供有關給定兩個整數的加法,減法和乘法等數學運算的信息。要公開服務可以執行的功能,請在項目目錄中創建一個.aidl文件。
相關問題
- 1. AIDL服務的java.lang.VerifyError
- 2. 在Eclipse中調試基於AIDL的遠程服務
- 3. 使用aidl的Android遠程服務
- 4. 服務使用AIDL的問題?
- 5. 的Android綁定服務和AIDL服務
- 6. Android的 - 通過AIDL服務
- 7. aidl服務是如何啓動的?
- 8. 如何在應用啓動時調用AIDL服務
- 9. 爲什麼以及何時使用基於EJB的Web服務?
- 10. AIDL服務和Android開源
- 11. 綁定使用AIDL與綁定使用操作的服務?
- 12. 如何測試遠程Android AIDL服務
- 13. 使用aidl調用另一個應用中的服務方法
- 14. 什麼是基於C的服務和基於Java的服務?
- 15. 如何使用WCF異步使用基於REST的服務?
- 16. UTC時鐘基於服務器時間?
- 17. 在Grails中使用基於範圍的服務時的問題
- 18. 使用Messenger類的用法替換AIDL服務
- 19. 在基於服務器的代理中使用REST服務
- 20. jQuery Mobile的服務器使用基於登錄REST API服務
- 21. 基於位置的時區Web服務
- 22. 基於cron作業時間還是基於服務器時區?
- 23. 在WCF或基於ASMX的web服務中使用計時器?
- 24. 沒有aidl的Android遠程服務?
- 25. 如何使用ajax + jquery調用基於web服務的休息
- 26. 如何使用Android應用程序的wsdl服務(基於Azure)
- 27. 如何使用基於用戶信息服務的util類
- 28. 基於主題的服務
- 29. 基於訂閱的服務
- 30. 如何使用Asp.NET MVC的基於休息的服務Backbone.js 4
不過,假設只有你的應用程序,使得使用該服務的,沒有理由使用AIDL - 是正確的? – MalcomTucker 2010-07-26 13:49:24
正確。但是,那麼爲什麼你還想在這種情況下創建一個服務。 – 2010-07-26 13:53:53
我在我的應用中創建了一個本地服務來做更大的下載。通過這種方式,我可以擁有更多的控制和安全性,然後只需要一個可以每次都被殺死的異步任務。據我所知,如果資源不足,那麼與活動相關的服務不會被殺死。 – Janusz 2010-07-26 14:11:18