日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android ipc简单理解,Android IPC 机制【1】--简介

發布時間:2023/12/31 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android ipc简单理解,Android IPC 机制【1】--简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、android 中進程間通信常用的有以下幾種機制

-----------------------------------------------------------------------------------------------------------------------

名稱 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 優點????????????????????????? ? ? ? ? ? ? ? ? ?缺點????????????????????????????????????? ? ? ? ? ? ? ? 適用場景

-----------------------------------------------------------------------------------------------------------------------

Bundle ? ? ? ? ? ? ? ? ? ? ? ? ? ? 簡單易用 ? ? ? ? ? ? ? ? ? ? 只能傳輸Bundle支持的數據類型 ? ? ? ? ? ? ?四大組件間的進程通信

-----------------------------------------------------------------------------------------------------------------------

文件共享 ? ? ? ? ? ? ? ? ? ? ? ? ?簡單易用 ? ? ? ? ? ? ? ? ? ? ?不適合高并發場景,并且無法做到 ? ? ? 無并發訪問情形,交換簡單

進程間及時通信?????????????????????????????的數據實時性不高的場景

-----------------------------------------------------------------------------------------------------------------------

AIDL ? ? ? ? ? ????????????功能強大,支持一對多并發 ? ? ? ?使用稍復雜,需要處理好線程同步 ? ? ?一對多通信且有RPC需求

通信,支持實時通信

-----------------------------------------------------------------------------------------------------------------------

Messenger ?????????功能一般,支持一對多串行 ? ? 不能很好處理高并發情形,不支持 ? ? ? ? ? 低并發的一對多即時通

通信,支持實時通信 ? ? ? ? ? ? ??RPC, 數據通過Message進行傳輸 ? ? ? ? ?信,無RPC需求?或者無需

只能傳輸Bundle支持的數據 類型 ? ? ? ? ??返回結果的RPC需求

----------------------------------------------------------------------------------------------------------------------

ContentProvider????在數據源訪問頁面功能強大, ? ? ? ?可以理解為受約束的AIDL, ? ? ? ?一對多的進程間的數據共享

支持一對多并發數據共享, ? ? ? ? ? 主要提?供數據源的CRUD操作

可通過Call方法擴展其他操作

----------------------------------------------------------------------------------------------------------------------

Socket ? ? ? ? ? ? ? ? ?功能強大,可以通過網絡數 ? ? ? ? ? ? 實現細節有點繁瑣 ? ? ? ? ? ? ? ? ? ? ? ? ?網絡數據交換

字傳輸節流,支持一對多 ? ? ? ? ? ? ? ?,不支持直接的RPC

并發實時通信

---------------------------------------------------------------------------------------------------------------------

二、 Bundle

Bundle實現了Parcelable接口,所以可以方便的在不同進程間傳輸,當在一個進程中啟動了另外一個進程的Activity、Service、Receiver,可以在Bundle中附加需要傳輸給遠程進程的信息并通過Intent發送出去。

三、文件共享

Activity1:-----------------

private?void?persistToFile()?{

new?Thread(new?Runnable()?{

@Override

public?void?run()?{

User?user?=?new?User(1,?"hello?world",?false);

File?dir?=?new?File(MyConstants.CHAPTER_2_PATH);

if?(!dir.exists())?{

dir.mkdirs();

}

File?cachedFile?=?new?File(MyConstants.CACHE_FILE_PATH);

ObjectOutputStream?objectOutputStream?=?null;

try?{

objectOutputStream?=?new?ObjectOutputStream(

new?FileOutputStream(cachedFile));

objectOutputStream.writeObject(user);//利用Serializable序列化的過程

Log.d(TAG,?"persist?user:"?+?user);

}?catch?(IOException?e)?{

e.printStackTrace();

}?finally?{

MyUtils.close(objectOutputStream);

}

}

}).start();

}

Activity2:----------------

private?void?recoverFromFile()?{

new?Thread(new?Runnable()?{

@Override

public?void?run()?{

User?user?=?null;

File?cachedFile?=?new?File(MyConstants.CACHE_FILE_PATH);

if?(cachedFile.exists())?{

//對MainActivity中user對象反序列化的過程(Serializable),

//得到的是一個新的對象

ObjectInputStream?objectInputStream?=?null;

try?{

objectInputStream?=?new?ObjectInputStream(

new?FileInputStream(cachedFile));

user?=?(User)?objectInputStream.readObject();

Log.d(TAG,?"recover?user:"?+?user);

}?catch?(IOException?e)?{

e.printStackTrace();

}?catch?(ClassNotFoundException?e)?{

e.printStackTrace();

}?finally?{

MyUtils.close(objectInputStream);

}

}

}

}).start();

}

總結

以上是生活随笔為你收集整理的android ipc简单理解,Android IPC 机制【1】--简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。