美文网首页
AIDL跨进程调用服务

AIDL跨进程调用服务

作者: Wocus | 来源:发表于2017-03-14 14:41 被阅读14次

一,创建服务端

新建一个项目并创建AIDL文件夹

在AIDL文件夹里面创建aidl格式文件(包名一定要有)

基于aidl的编程就是编写服务器接口,我写了一个带有两个参数,带有返回值的接口,接下来并在Service里实现这个接口

就这样,服务端已经搭建完成,接下来搭建客户端

1,创建AIDL文件夹,2.拷贝服务端的aidl文件(AIDL文件夹和里面包名必须和服务端包名一致)

然后在Activity里面调用

public classMainActivityextendsAppCompatActivity {

privateIMyAidlInterfaceiMyAidlInterface;

privateTextViewtextView;

privateServiceConnectionconnection=newServiceConnection() {

//当服务器连接的时候调用

@Override

public voidonServiceConnected(ComponentName name, IBinder service) {

//连接远程服务

iMyAidlInterface=IMyAidlInterface.Stub.asInterface(service);

}

//当服务器断开的时候调用

@Override

public voidonServiceDisconnected(ComponentName name) {

iMyAidlInterface=null;

}

};

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView= (TextView) findViewById(R.id.txt_aidl);

Intent intent=newIntent();

//两个参数分别为,服务器广播类包名,服务器广播类全名

intent.setComponent(newComponentName("youju.com.fuwu","youju.com.fuwu.MyService"));

//启动服务

bindService(intent,connection, Context.BIND_AUTO_CREATE);

textView.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

try{

int s=iMyAidlInterface.getHe(5,5);

textView.setText(""+s);

}catch(RemoteException e) {

e.printStackTrace();

}

}

});

}

}

android studio不会自动编译,编写aidl文件之后要编译才会生成java文件

相关文章

网友评论

      本文标题:AIDL跨进程调用服务

      本文链接:https://www.haomeiwen.com/subject/wofhnttx.html