我讀了關於進程間通信(IPC)和創建發送數據從一個組件到另一個組件。
我知道的是IPC定義了不同組件之間的通信通道。
該通道將具有用於組件發送數據的編程接口。創建界面的方法如AIDL,Binder和Messenger。
創建接口後,要發送的數據必須爲Parcel。 所以總結步驟如下:
1.創建一個編程接口。
2.將接口綁定到應用程序組件。
3.向該組件發送數據的組件必須將數據轉換爲Parcel。
但是突然發現了什麼叫意圖可以發送數據從一個組件到另一個沒有這種開銷。
我需要解釋有關Intent如何發送數據而無需創建接口?
意圖內部有一個接口?
意圖與IPC,綁定服務和接口之間的關係是什麼?Android:意圖和組件之間的數據交換
0
A
回答
2
哇你在這裏有很多困惑。讓我們看看我能否清理一些事情。
1)IPC不會將數據從一個組件發送到另一個組件(它可以,但它是一種低效的方法)。 IPC將數據從一個進程發送到另一個進程。一個Android應用程序通常是一個進程,儘管它不一定是(開發人員有時會將服務放入另一個進程中)。這是一個重要區別的原因是進程不能共享內存,所以需要像IPC這樣的特殊方法來在它們之間發送任何數據。
2)組件之間發送的數據不一定是parcel。這是一種方式,也是Android在發送啓動參數時使用的方式。但沒有必要。
3)使用Binder與服務交談只有在兩者處於同一進程中時纔可能。它是完全避免使用IPC的一種方法。
4)AIDL是IPC方法的一個包裝。 AIDL使用IPC,它只是試圖使它看起來像正常的函數調用客戶端。
5)Intent對象是在Android中啓動服務或活動所需的所有數據的抽象。它將包含可能或不可以在Parcel中的參數。它可能會也可能不會使用IPC來發送這些參數(如果目標Activitiy或服務在另一個APK中,它將會發生,如果不是這樣的話)。
我認爲這裏的問題在於你並不真正瞭解過程是什麼,Android組件是什麼,以及過程如何實際進行通信。我建議做一些研究。
相關問題
- 1. 在父組件和子組件之間交換數據
- 2. Android Studio:在類之間交換數據
- 3. 在xaml和aspx之間交換數據
- 4. 在Ruby和C++之間交換數據
- 5. 在interactive_mode和script_mode之間交換數據?
- 6. 在nodejs和Python之間交換數據
- 7. 在React組件之間交換事件
- 8. 如何在活動和佈局xml之間交換數據android
- 9. 如何在java類和android活動之間交換數據?
- 10. 如何在renderscript和android框架之間交換數據?
- 11. 通過Wifi在電腦和Android手機之間交換數據
- 12. 意圖額外和意圖數據之間有什麼區別?
- 13. Android之間交換活動
- 14. JavaFX和Swing控件之間的交換
- 15. Rails引擎之間的交換數據
- 16. 在數組之間交換元素 - java
- 17. Android之間交換數據之間運行的異步服務器
- 18. 在Android中的EditText之間交換數據
- 19. 活動之間交換數據
- 20. 在網站之間交換數據
- 21. 在行之間交換MySQL數據
- 22. 在類之間交換數據
- 23. 在兩行數據之間交換值
- 24. CPropertySheet屬性頁之間交換數據
- 25. 在Android地圖v2片段和列表片段之間交換
- 26. OSGi中的服務和包之間的數據交換如何?
- 27. WordPress的:兩個插件之間的數據交換
- 28. 如何在Android服務之間交換數據
- 29. Android手機之間的位置交換
- 30. 在Android和Spring服務之間交換數據的應用程序
因此,我們可以說是在同一個進程中的兩個活動之間進行通信Binder被使用,Intent是Android爲Binder提供的實現嗎? –