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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

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

一、android 中進(jìn)程間通信常用的有以下幾種機(jī)制

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

名稱 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 優(yōu)點(diǎn)????????????????????????? ? ? ? ? ? ? ? ? ?缺點(diǎn)????????????????????????????????????? ? ? ? ? ? ? ? 適用場景

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

Bundle ? ? ? ? ? ? ? ? ? ? ? ? ? ? 簡單易用 ? ? ? ? ? ? ? ? ? ? 只能傳輸Bundle支持的數(shù)據(jù)類型 ? ? ? ? ? ? ?四大組件間的進(jìn)程通信

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

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

進(jìn)程間及時(shí)通信?????????????????????????????的數(shù)據(jù)實(shí)時(shí)性不高的場景

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

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

通信,支持實(shí)時(shí)通信

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

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

通信,支持實(shí)時(shí)通信 ? ? ? ? ? ? ??RPC, 數(shù)據(jù)通過Message進(jìn)行傳輸 ? ? ? ? ?信,無RPC需求?或者無需

只能傳輸Bundle支持的數(shù)據(jù) 類型 ? ? ? ? ??返回結(jié)果的RPC需求

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

ContentProvider????在數(shù)據(jù)源訪問頁面功能強(qiáng)大, ? ? ? ?可以理解為受約束的AIDL, ? ? ? ?一對多的進(jìn)程間的數(shù)據(jù)共享

支持一對多并發(fā)數(shù)據(jù)共享, ? ? ? ? ? 主要提?供數(shù)據(jù)源的CRUD操作

可通過Call方法擴(kuò)展其他操作

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

Socket ? ? ? ? ? ? ? ? ?功能強(qiáng)大,可以通過網(wǎng)絡(luò)數(shù) ? ? ? ? ? ? 實(shí)現(xiàn)細(xì)節(jié)有點(diǎn)繁瑣 ? ? ? ? ? ? ? ? ? ? ? ? ?網(wǎng)絡(luò)數(shù)據(jù)交換

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

并發(fā)實(shí)時(shí)通信

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

二、 Bundle

Bundle實(shí)現(xiàn)了Parcelable接口,所以可以方便的在不同進(jìn)程間傳輸,當(dāng)在一個(gè)進(jìn)程中啟動(dòng)了另外一個(gè)進(jìn)程的Activity、Service、Receiver,可以在Bundle中附加需要傳輸給遠(yuǎn)程進(jìn)程的信息并通過Intent發(fā)送出去。

三、文件共享

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),

//得到的是一個(gè)新的對象

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();

}

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。