Android AIDL 使用示例

时间:2014-05-08 21:32:42   收藏:0   阅读:511

介绍:

AIDL 即   Android Interface Definition Language

使用:

1.新建.aidl文件

bubuko.com,布布扣
1 //AIDL 文件所在的包
2 package com.houny.demo_aidl.aidl;
3 
4 //接口名必须和AIDL文件名一致
5 interface ISay{
6     boolean Say();
7     boolean SayInt(int i);
8     boolean SayString(String str);
9 }
bubuko.com,布布扣

2.新建Service,并在Mainfirst.xml里注册

bubuko.com,布布扣
 1 public class BackgroundService extends Service{
 2 
 3      /**
 4      * 通过这种方式实现AIDL里定义的接口
 5      */
 6      ISay.Stub say = new ISay.Stub() {
 7           
 8           //实现接口的方法
 9          // ...
10           
11      };
12      
13 
14      @Override
15      public IBinder onBind(Intent intent) {
16           //把那个接口对象返回出去
17           return say;
18      }
19 
20      //...
21 }
bubuko.com,布布扣
1  <service android:name=".service.BackgroundService"/>

3.在Activity或Fragment里绑定Service

bubuko.com,布布扣
 1     private void initAIDL() {
 2         //初始化ServiceConnection,并实现回调方法
 3         serviceConnection= new ServiceConnection() {
 4             
 5             @Override
 6             public void onServiceDisconnected(ComponentName name) {
 7                 say = null;
 8             }
 9             
10             @Override
11             public void onServiceConnected(ComponentName name, IBinder service) {
12                 //当Service绑定成功后会通过回调执行这个方法
13                 say = ISay.Stub.asInterface(service);
14             }
15         };
16     }
bubuko.com,布布扣
    private void startService() {
        Intent intent = new Intent(MainActivity.this, BackgroundService.class);
        this.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
        this.startService(intent);
    }

4.使用接口定义的方法

try {
    say.SayString("Hello");
} catch (Exception e) {
    e.printStackTrace();
}

5.高级使用请参考 这个博文  @Copyright liuhe688

 

我介绍的这个基本使用示例的代码等我知道怎么上传附件的时候再上传吧

-------------------------------------------------------------------------

Change 2014-5-5 15:55:34  上传附件   点击下载

Android AIDL 使用示例,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!