您的位置:首页 > 大数据 > 人工智能

AIDL初步了解

2016-10-28 18:01 381 查看
知道AIDL这个东西,android接口进程通讯语言,但是没有具体去看,google了一下,

初步了解了!记录,待以后后头看

  AIDL步骤:

         一般是服务端和客户端之间的进程通信。

1.分别新建两个android项目,一个为Service一个为Client

2.分别在两个项目中新建包,要求包名一致,然后在里面都创建

一个后缀为aidl的文件

   如: package com.zhb.aidl;
interface IPerson {
String talk(String someone);
}3.在Service里面实现AIDL的方法
    public class AIDLService extends Service {

private static final String TAG = "AIDLService";

//实现AIDL里面的方法
IPerson.Stub stub = new IPerson.Stub() {
@Override
public String talk(String someone) throws RemoteException {
Log.i(TAG, "talk() called");
return someone+"说";
}
};

@Override
public IBinder onBind(Intent intent) {
Log.i(TAG, "onBind() called");
return stub;
}

@Override
public boolean onUnbind(Intent intent) {
Log.i(TAG, "onUnbind() called");
return true;
}

@Override
public void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy() called");
}
}4.回到Client当中,一:就是绑定Service  二:与服务相连
 绑定服务就是
Intent intent = new Intent("android.intent.action.AIDLService");  
               bindService(intent, conn, Context.BIND_AUTO_CREATE); 

 
  与服务连接就是
private IPerson person;
               private ServiceConnection conn = new ServiceConnection() {

@Override
public void onServiceDisconnected(ComponentName arg0) {
// TODO Auto-generated method stub
Log.i(TAG, "onServiceDisconnected is called");
}

@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
Log.i(TAG, "onServiceConnected called");
person = IPerson.Stub.asInterface(service);
}
};

此时就拿到了person,就可以调用服务里实现的AIDL接口里的talk方法
person.talk("哈哈");
目前在项目中用的比较少,貌似面试会问到,记录之,推荐一个博客写AIDL写得详细

Android:学习AIDL,这一篇文章就够了(上)

嗯,就是这样子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: