Content Provider和AIDL、以及各種數(shù)據(jù)存儲(chǔ)傳遞

AIDL(每個(gè)程序都在自己的虛擬機(jī)中運(yùn)行的,為了保證數(shù)據(jù)的安全性,進(jìn)程間不能直接通信,基于Service的ADIL就像一個(gè)通信管道使進(jìn)程間可以通信)
跨進(jìn)程如何通訊
1.兩個(gè)進(jìn)程無法直接通信
2.通過Android系統(tǒng)底層鏈接進(jìn)行通信
基于Service的AIDL
AIDL基本理論
AIDL遠(yuǎn)程調(diào)用案例
AIDL原理簡(jiǎn)單剖析
Android Interface Definition Language
(android 接口定義語言)AIDL使用耗資源 占用內(nèi)存不要任意使用
通過IPC機(jī)制不同應(yīng)用程序訪問服務(wù)才用AIDL
IPC(進(jìn)程間通信)
AIDL 通過IPC讓多個(gè)應(yīng)用程序訪問你的服務(wù)
并且這個(gè)服務(wù)要處理多線程才有必要使用AIDL

Binder 只有IPC 沒有多線程 多個(gè)應(yīng)用程序

Message 只有IPC 沒有多線程

服務(wù)端Demo創(chuàng)建

1)創(chuàng)建aidl文件
1.java目錄右鍵下 new->folder->AIDL Folder

2.aidl 右鍵 aidl 文件 syncgradle
project視圖下面就會(huì)生成ImInterface 資源文件
這樣就可以在MainActivity中使用

兩個(gè)進(jìn)程通信要設(shè)定好規(guī)范:通過什么方法,傳入什么參數(shù),返回什么參數(shù)
接口定義 首字母每個(gè)開始首字母都要大寫
interface IMyAidl{
int add(int num1,int num2);//int 返回值 add方法,傳入Int類型參數(shù)

}

2)實(shí)現(xiàn)這個(gè)接口
public class IRemoteService extends Service{
public Ibinder onBind(Intent intent){
return null;
}
//當(dāng)客戶端綁定到這個(gè)服務(wù),就會(huì)返回iBinder,也就得到下面這個(gè)方法 實(shí)現(xiàn)Stub靜態(tài)內(nèi)部類(學(xué)會(huì)看API)
private IBinder iBiner=new IMyAidl.Stub(){
public int add(int num1,int num2) thrwos RemoteException{
log.d("Tag","收到了遠(yuǎn)程請(qǐng)求,輸入的參數(shù)是"+num1+"和"+num2)
return num1+num2;
}
}

}
服務(wù)端 三個(gè)文件 mainactivity IRemoteSevice實(shí)現(xiàn)方法onBind方法 得到Ibinder對(duì)象
.aidl 寫上規(guī)范


3)客戶端實(shí)現(xiàn)接口 必須一致(同意窗口 new 一個(gè)modle)

先新建AIDL 文件夾folder
再生成.aidl接口文件 IMyAidl 名字必須一致

oncreate(){...
initView();
//軟件已啟動(dòng)就綁定
bindService();
}

綁定服務(wù)

//Android 5.0不允許隱士方式啟動(dòng)服務(wù),必須明文標(biāo)示那個(gè)服務(wù)
//顯示Intent 綁定服務(wù)

選中內(nèi)容 control+alt+m 封裝成新方法
private void bindService(){
Intent intent=new Intent();
intent.setComponent(new Compentname("com.imy.aidl","com.imy.aidl. IRemoteService"));
//包名加類名
bindService(intent,conn,Context.BIND_AUTO_CREATE);
//三個(gè)參數(shù) 1.intent 2.service connection 3.flag 表示綁定時(shí)自動(dòng)啟動(dòng)service
}

學(xué)會(huì)使用快捷鍵 alter+enter(本例中提示conn錯(cuò)誤)

選中conn alt+enter 生成這個(gè)connection
mainActivity中:
IMyAidl adil;
private ServiceConnection conn=new ServiceConnection(){
//綁定上服務(wù)時(shí)
public void onServiceConnected(ComponentName name,IBindle service){
//拿到了遠(yuǎn)程的資源,實(shí)質(zhì)上就是服務(wù)端的binder通過該方法獲得
aidl=IMyAidl.Stub.asInterface(service);
}
public void onServiceDisConnected(ComponentName name,IBindle service){
//回收資源不至于泄露內(nèi)存
aidl=null;
}
}}

onClick(){
try{
//調(diào)用遠(yuǎn)程的服務(wù)
int res=aidl.add(num1,num2);//服務(wù)端獲取的那個(gè)
mEdit.setTex(res+"");
}catch{
}
}//改成

//APP銷毀的時(shí)候也要解綁定 必須的避免OOM
void Destroy(){
super.onDestory();
unbindService(conn);
}
也是三個(gè)文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,706評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,203評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,725評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,451評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,677評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,857評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,407評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,643評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容