国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - 基于Android AIDL進程間通信接口使用介紹

基于Android AIDL進程間通信接口使用介紹

2021-01-09 17:03Android開發網 Android

本篇文章小編為大家介紹,基于Android AIDL進程間通信接口使用介紹。需要的朋友參考下

aidl:android interface definition language,它是一種android內部進程通信接口的描述語言,通過它我們可以定義進程間的通信接口。

icp:interprocess communication ,內部進程通信。

使用:

1、先創建一個aidl文件,aidl文件的定義和java代碼類似,但是!它可以引用其它aidl文件中定義的接口和類,但是不能引用自定義的java類文件中定義的接口和類,要引用自定義的接口或類,需要為此類也定義一個對應的aidl文件,并且此類要實現parcelable接口,同時aidl文件和類文件必須要在相同包下進行聲明;android包含了aidl編譯器,當定義好一個aidl文件的時候,會自動編譯生成一個java文件,此文件保存在gen目錄之下。

基于Android AIDL進程間通信接口使用介紹

 

在這個項目中,定義了兩個aidl文件,其中person實現了接口parcelable,下面是這兩個aidl文件的定義:

person.aidl

{

parcelable person; 

}

iaidlserverservice.aidl

{

  package com.webview;
  import com.webview.person;// 引用上面的person.aidl

  interface iaidlserverservice{
    string sayhello();
    person getperson();
  }

}

2、編寫一個service實現定義aidl接口中的內部抽象類stub,stub繼承自binder,并繼承我們在aidl文件中定義的接口,我們需要實現這些方法。stub中文意思存根,stub對象是在服務端進程中被調用,即服務端進程。

在客戶端調用服務端定義的aidl接口對象,實現service.onbind(intent)方法,該方法會返回一個ibinder對象到客戶端,綁定服務時需要一個serviceconnection對象,此對象其實就是用來在客戶端綁定service時接收service返回的ibinder對象。

  ||public static abstract class stub extends android.os.binder implements com.webview.iaidlserverservice

?
1
public class aidlserverservice extends service{@overridepublic ibinder onbind(intent intent) {return binder;}private iaidlserverservice.stub binder = new stub() {@overridepublic string sayhello() throws remoteexception {return "hello aidl";}@overridepublic person getperson() throws remoteexception {person person = new person();person.setname("livingstone");person.setage(22);return person;}};}

3、在服務端注冊service,將如下代碼添加進application節點之下!

<service android:name="com.webview.aidlserverservice"
  android:process=":remote">
  <intent-filter>
    <action android:name="com.webview.iaidlserverservice"></action>
  </intent-filter>
</service>

至此,服務端進程定義已經完成!

4、編寫客戶端,注意需要在客戶端存一個服務端實現了的aidl接口描述文件,客戶端只是使用該aidl接口,獲取服務端的aidl對象(iaidlserverservice.stub.asinterface(service))之后就可以調用接口的相關方法,而對象的方法的調用不是在客戶端執行,而是在服務端執行。

?
1
public class mainactivity extends activity {private button btn;private iaidlserverservice aidlservice = null;<br>private serviceconnection conn = new serviceconnection() {@overridepublic void onservicedisconnected(componentname name) {aidlservice = null;}@overridepublic void onserviceconnected(componentname name, ibinder service) {aidlservice = iaidlserverservice.stub.asinterface(service);try {aidlservice.dofunction();// 執行接口定義的相關方法} catch (remoteexception e) {e.printstacktrace();}}};@overrideprotected void oncreate(bundle savedinstancestate) {super.oncreate(savedinstancestate);setcontentview(r.layout.activity_main);btn = (button) findviewbyid(r.id.button);tv = (textview) findviewbyid(r.id.textview);btn.setonclicklistener(new onclicklistener() {@overridepublic void onclick(view v) {intent service = new intent("com.webview.iaidlserverservice");bindservice(service, conn, bind_auto_create);// 綁定服務}});}}

 客戶端目錄結構:

基于Android AIDL進程間通信接口使用介紹

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩国产不卡 | 午夜大片男女免费观看爽爽爽尤物 | 91捆绑91紧缚调教91 | 成人午夜毛片 | 在线中文字幕第一页 | 538在线| 精品日韩一区二区三区 | 国内精品在线视频 | 欧美精品v国产精品v日韩精品 | 日韩精品一区在线视频 | 亚洲精品一区二区三区在线播放 | 国产精品久久久久久久久久久新郎 | 98成人网| 久久精品无码一区二区三区 | 老色批影院 | 午夜成人免费电影 | 亚洲入口| 日韩在线视频观看 | 国产资源在线看 | 色日韩| 91精品国产综合久久久久久 | 91视频大全 | 极品美女销魂一区二区三区 | aaa综合国产| 国产资源免费观看 | 特黄视频免费观看 | 亚洲国产精品成人va在线观看 | 玖玖精品视频 | 蜜桃tv一区二区三区 | 亚洲成人高清 | 久久91| 国产特级毛片aaaaaaa高清 | 国产三级一区二区三区 | 日本久久免费 | 亚洲成人伦理 | 91精彩视频在线观看 | 国外精品视频在线观看 | 狠狠综合久久 | 极品久久 | 欧美激情一区 | 久久精品亚洲 |