我目前是一名初級開發者。我聽說過IPC,現在我正在學習Android AIDL。AIDL vs JAR/AAR
我製作了.aidl
文件,我在服務中實現了.aidl
中的方法,並且在另一個應用程序中使用了這些方法,但我沒有看到這一點。
爲什麼我不能只使用.aar
或.jar
包含該服務的文件,而不使用AIDL?當我應該使用AIDL並且當我應該導入.jar
文件時。更一般的說,當我們可以使用.jar
文件時,使用IPC有什麼意義?
我目前是一名初級開發者。我聽說過IPC,現在我正在學習Android AIDL。AIDL vs JAR/AAR
我製作了.aidl
文件,我在服務中實現了.aidl
中的方法,並且在另一個應用程序中使用了這些方法,但我沒有看到這一點。
爲什麼我不能只使用.aar
或.jar
包含該服務的文件,而不使用AIDL?當我應該使用AIDL並且當我應該導入.jar
文件時。更一般的說,當我們可以使用.jar
文件時,使用IPC有什麼意義?
爲什麼我不能只使用包含該服務的.aar或.jar文件,而不使用AIDL?
從技術文檔https://developer.android.com/guide/components/aidl.html:
使用AIDL是必要的前提是你讓來自不同應用的客戶端訪問服務以供IPC和要處理你的多線程服務。
當您將Service
打包到aar或jar中時,此服務可以在任何地方運行,即在應用程序的相同或不同進程中運行。 AIDL專門爲IPC設計,即服務和應用程序在不同的進程中。
更一般的,當我們可以使用.jar文件時使用IPC有什麼意義?
IPC是操作系統提供的數據共享機制,jar是字節碼分配的手段。他們是不同的東西。
假設您想要使用某人提供的服務,並且您沒有它的源代碼或字節代碼。您只能在運行時訪問此服務,由供應商管理,不同於您自己的服務。在這種情況下,您需要提供商指定的AIDL才能與服務進行通信。
謝謝!這是非常豐富的:)。順便說一句,在評論的最後一部分中,您說「您只能在運行時訪問此服務,並且在提供程序管理的進程中」。你能推薦我一些關於這個東西的文章嗎? –
@MateutAlin我不知道是否有任何關於它的文章:(這只是一個具體的案例我彙編。我鏈接和服務指南的文檔應涵蓋該主題:https://developer.android.com/guide/components /services.html – nandsito
好的,無論如何謝謝你的答案。 –
IPC意味着InterProcessCommunication,所以當你想要在兩個不同的應用程序之間傳遞一些數據時,或者如果雙方都在同一個應用程序中,但是由不同的進程託管,你正在使用'AIDL' – pskink