Android-AIDL-Service(日本语版未完成)

时间:2023-04-22 13:51:14 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
アンドロイドのAIDLの使用

アンドロイドのアプリケーションにServiceを使用時、大部分の状況にはオブジェクトを渡すの必要はあります。そして、相応の操作はサービスの中で実行します。クライアントActivityはただデータを渡します。その後全ての操作は全部呼び出したのサービスで完成します。ただし、データを渡す時、AIDLを使用します。整体感覚はAIDLJAVAのインタフェースのようのものです。

クライアントはサービスを呼び出す時、bindServiceを通してサービスを起動させます。して、サービスを呼び出す時、ServiceConnection」と言うのバラメーターは必要です。 そしてサービスは「ServiceConnection」の方法「OnServiceConnected」に「IBinder」を渡します。

重点は「IBinder」と言うものです。その「IBinder」は

AndroidAIDL后台Service条用

调用后台的Service时,需要在两者之间传递参数,同时需要将操作放在后台的Service来进行,前台的Activity只进行数据的传输。前台的客户端只是调用Service即可。只不过调用的Service时,传递的参数是通过AIDL来是实现的。整体感觉AIDL就像是一个接口,JAVA中的接口很类似。

前台调用Service时,通过bindService来启动后台的Service在启动Service时需要调用参数ServiceConnection并且Service将返回一个IBinder类型给ServiceConnection中的方

OnServiceConnected

重点是在后台的Service中返回的IBneder是怎么生成的如何而来。具体来说就是返回的是咱们一开始就定义的aidl文件的对象。但是aidl文件是个类似接口的东西,估计是不能实例化的。所以必须得覆盖重写此方法。由此又有两种方法:

1 声明一个JAVA(peopleServiceAidl.java)继承peopleService.adil文件对应的gen

录下的JAVA文件peopleService.javapeopleService.java.Stub。重写里面的所有方法。然后在Serive中生成其实例化对象,并返回。

Private Stub peopleStub= new PeopleServiceAidl(); @OverRide

Public IBinder(Intent arg0)

{ }

2 peopleService.aidlJAVAService

peopleService.java中的方法。并返回。 Return peopleStub;




Private String name; Private int age;

Private final peopleService.Stub sssss = new peopleService.Stub() {

………

//AIDL文件中实际的方法

}

@OverRide

Public IBinder(Intent arg0) {

}

程序的结构目录。

Return sssss ;


本文来源:https://www.wddqw.com/doc/10e7915477232f60ddcca196.html