一,创建服务端
新建一个项目并创建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文件
网友评论