AIDL

什么是AIDL:
1懂诗、AIDL(Android Interface Definition Language安卓接口定義語言):讓其它應(yīng)用可以調(diào)用當(dāng)前應(yīng)用Service中的方法

2、Android系統(tǒng)中的進(jìn)程之間不能共享內(nèi)存墨叛,因此,需要提供一些機(jī)制在不同進(jìn)程之間進(jìn)行數(shù)據(jù)通信

3并村、RPC(Remote Procedure Call遠(yuǎn)程過程調(diào)用):AIDL解決的就是RPC的問題

4巍实、IPC(Inter Process Communication)進(jìn)程間通信

5、每一個(gè)Android應(yīng)用都運(yùn)行在獨(dú)立的進(jìn)程中哩牍,所以應(yīng)用之間的通信就是進(jìn)程間通信

6棚潦、Activity通過Intent可調(diào)起其它應(yīng)用,也可傳遞數(shù)據(jù)

7膝昆、BroadcastReceiver通過onReceive方法丸边,可以處理其它應(yīng)用發(fā)來的廣播,都是通過Intent攜帶數(shù)據(jù)

-AIDL的實(shí)現(xiàn)過程:
1荚孵、提供遠(yuǎn)程服務(wù)方法的應(yīng)用
1.創(chuàng)建一個(gè)Service妹窖,重寫onBind方法,在onBind中返回一個(gè)Binder對象收叶,需要遠(yuǎn)程調(diào)用的方法放到這個(gè)Binder對象中
2.在清單文件中聲明對應(yīng)的Service骄呼,需要添加一個(gè)intent-filter,可以通過隱式意圖調(diào)用Service
3.創(chuàng)建一個(gè)接口判没,需要暴露給其它應(yīng)用調(diào)用的方法都聲明在這個(gè)接口中
4.把接口文件的擴(kuò)展名修改為.aidl蜓萄,需要注意的是,.aidl文件不支持public關(guān)鍵字澄峰,如果aidl創(chuàng)建得沒有問題嫉沽,就會在gen目錄下生成一個(gè)IService.java
5.修改Service的代碼,讓MyBinder繼承Stub
2俏竞、遠(yuǎn)程調(diào)用服務(wù)的應(yīng)用
1.通過隱式意圖以及bindService的方式開啟遠(yuǎn)程服務(wù)
2.創(chuàng)建ServiceConnection的實(shí)現(xiàn)類
3.在當(dāng)前應(yīng)用中創(chuàng)建一個(gè)目錄绸硕,目錄結(jié)構(gòu)要跟提供遠(yuǎn)程服務(wù)的應(yīng)用的aidl文件所在目錄結(jié)構(gòu)保持一致,把a(bǔ)idl文件拷貝過來魂毁,如果沒有問題玻佩,會在gen目錄下生成一個(gè)IService.java文件,包名跟aidl文件的包名一致
4.在onServiceConnected方法中席楚,通過Stub.asInterface(service)把當(dāng)前的IBinder對象轉(zhuǎn)化成遠(yuǎn)程服務(wù)中的接口類型夺蛇,最終通過這個(gè)對象實(shí)現(xiàn)調(diào)用遠(yuǎn)程方法

創(chuàng)建一個(gè)類繼承Service
···
public class RemoteService extends Service{

@Override
public IBinder onBind(Intent intent) {
    
    return new MyBinder();
}

public void remotoMethod(){
    Log.e("TAG", "遠(yuǎn)程方法被調(diào)用");
}

public class MyBinder extends Stub{//自己包名下的Stub
    
  public void callRemotoMethod(){
      remotoMethod();
  }
}

}

···
定義一個(gè)接口

里面實(shí)現(xiàn)方法
如:
void remotoMethod();
注意:不能用public 修飾

在創(chuàng)建一個(gè)項(xiàng)目;
xml*******
···
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="調(diào)用遠(yuǎn)程方法"
android:onClick="callRemote"
/>

···
MainAction中------------
···

public class MainActivity extends Activity {
private MyConntention conn;
private IService iservice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent service = new Intent();
conn=new MyConntention();
//隱式意圖開啟其他應(yīng)用
service.setAction("com.krr.remotoservice");
bindService(service, conn, BIND_AUTO_CREATE);

}
public void callRemote(View v){
    try {
        iservice.callRemotoMethod();//遠(yuǎn)程調(diào)用
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}
public class MyConntention implements ServiceConnection{

    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
         iservice =Stub.asInterface(service);
         
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        
    }
    
}

}

···


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酣胀,隨后出現(xiàn)的幾起案子刁赦,更是在濱河造成了極大的恐慌娶聘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甚脉,死亡現(xiàn)場離奇詭異丸升,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)牺氨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門狡耻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人猴凹,你說我怎么就攤上這事夷狰。” “怎么了郊霎?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵沼头,是天一觀的道長。 經(jīng)常有香客問我书劝,道長进倍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任购对,我火速辦了婚禮猾昆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骡苞。我一直安慰自己垂蜗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布解幽。 她就那樣靜靜地躺著么抗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亚铁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天螟加,我揣著相機(jī)與錄音徘溢,去河邊找鬼。 笑死捆探,一個(gè)胖子當(dāng)著我的面吹牛然爆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黍图,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼曾雕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了助被?” 一聲冷哼從身側(cè)響起剖张,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤切诀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后搔弄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幅虑,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年顾犹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倒庵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炫刷,死狀恐怖擎宝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浑玛,我是刑警寧澤绍申,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站锄奢,受9級特大地震影響失晴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拘央,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一涂屁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灰伟,春花似錦拆又、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挡爵,卻和暖如春竖般,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茶鹃。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工涣雕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闭翩。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓挣郭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疗韵。 傳聞我的和親對象是個(gè)殘疾皇子兑障,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

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