【學習筆記】AIDL跨應用Service運用

AIDL:應用程序接口定義語言

注:每當創建或修改AIDL文件後,都需要執行Build->Rebuild Project操作來生效


一、通過一個App控制另一個App的Service

在要調用的App的MainActivity裏用intent設置一個部件,參數是部件名字,一個是被調用的包名,一個是被調用的服務類名

wKiom1gQIxHhr-7IAAA7v66oR5M330.png然後在要調用的App的MainActivity裏用startService和stopService即可控制另一個程序的Service

wKioL1gQI12jb87TAAAjouYbTLg648.png


二、通過一個App綁定另一個App的Service

在上面一的基礎上,在被調用的App裏新建一個AIDL文件

wKiom1gQQyCDp2qYAAC14eBFMW8473.png

在被調用服務類裏重新onBind方法,返回值實現了剛纔新建的AIDL文件產生的接口的方法

wKioL1gQQ2nD4fy1AAAid7C20Xo966.png

在調用的MainActivity裏,同之前學習的Service通信,用bindService和unbindService方法來實現,當然還要實現onServiceConnected和onServiceDisconnected兩個方法,可以看我之前的博客

wKiom1gQRE-xxDvbAABpN3Ti5RU899.png


三、同步數據到綁定的Service中

1)在AIDL創建的接口中再寫一個方法setData,在MyService中實現

wKiom1gQTMzyyUrWAAAtKEifSDY641.png

2)在調用的App裏需要創建和被調用的AIDL文件一樣的文件

wKioL1gQTZmAt1zbAAAMQ6kYu_c846.png

3)在調用的App的MainActivity種創建一個AIDL文件的類的binder

IAppServiceRemoteBinder binder=null;

4)在onServiceConnected方法中將binder與service聯繫起來

wKioL1gQTnmwrmqyAAAZiaWscL4567.png

用binder.setData方法將數據傳入binder完成通信

binder.setData(edt.getText().toString());


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章