Android跨進程通訊的幾種方式

     Android系統的每個應用都是運行在一個單獨的虛擬機中(不同的進程)。因此不同的app間不能直接通訊,但是可以間接進行通訊。

今天我要介紹的四種跨進程通訊方式就是四種間接通訊方式。這四種跨進程通訊的方式,

    方式一:Bundle。

    bundle實現了parcelable接口,在Android中不同的應用運行在不同的進程中。通過Intent啓動其他應用的組件Activity,Service,Receiver

時,可以將數據存儲在Bundle中,然後設置在Intent中,就實現了第一種跨進程通訊IPC。


    方式二:通過系統文件。

     不同的多個進程的應用,可以對磁盤裏的同一個文件讀寫。SharedPerference就是xml文件存儲鍵值對實現的。

但是,Android系統基於Linux內核,並沒有對文件的讀寫做併發處理。因此有可能發生異常。


    方式三:利用ContentProvider提供數據分享的接口。

   android應用程序可以使用file或Sqlite來存儲數據。ContentProvider提供一個在多個應用程序之間共享數據的方式。能夠對分享出去的提供增刪改查操作。

ContentProvider與ContentResolver是成對出現的。ContentProvider提供數據分享接口。ContentResolver與其進行對接。android系統本身也提供了很多

ContentProvider例如音頻,視頻,圖片,聯繫人,短信,通話記錄等等。這些表數據將以Cursor形式返回,所以ContentProvider的數據返回類型爲二維表

形式。

   訪問一個ContentProvider對應的數據。需要知道它對應URI。

例如:android.provider.Contacts.Phones.CONTENT_URI

每一個ContentProvider可以控制多個數據集。這種情況下每個數據集對應一個單獨的URI。所有的URI必須以“content://”開頭。

具體步驟:1,編寫ContentProvider的子類,重寫ContentProvider的抽象方法:query,insert,update,detele。

                    2,在AndroidMinifest.xml中註冊ContentProvider。


    方式四:基於消息的跨進程Messenger。

    

    方式五:AIDL。


    










發佈了98 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章