Aidl
来源:互联网 发布:南昌工程学院网络 编辑:程序博客网 时间:2024/04/30 21:49
1,创建aidl的文件
package com.sdingba.aidl interface ISDingBaAidl{ //计算2个数的和 int add(int num1,int num2);}
2,创建类继承service
IRemoteService extends Service{ @Override public IBinder onBind(Intent intent) { return new MiddlePerson(); } private IBinder iBinder = new ISDingBaAidl.Stub{ @Override public int add(int num1,int num2){ return num1+num2; } } }
3,声明:
<service android:name="com.sdingba.aidl.IRemoteService">
创建客户端app
1,在客服端差创建文件夹,吧服务端的aidl文件拷贝到文件夹中。
2,远程绑定的代码: Intent inten = new Intent(); //新版本必须 显示Intent显示绑定服务 intent.setComponent(new CompeoentName("com.sdingba.aidl","com.sdingba.aidl.IRemoteService")); bindService(intent,conn,Context.BIND_AUTO_CREATE);
3,创建conn
private ServiceConnection conn = new ServiceConnection(){ @Override public void onServiceConnected(){ //拿到了远程的服务 ISDingBaAidl issdingba = ISDingBaAidl.Stub.adInterface(service); } @Override public void onServiceDisconnected(){ issdingba = null;//回收资源 } }
3.调用函数
issdingba.add(num1,num2);
4,解除绑定
onDestroy(){ unbindService(conn); }
88888888888888888888888888888888888888888888888888888888888888
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××
服务app:
1:IMiddlePerson.aidl
package com.sdingba.remoteservice; interface IMiddlePerson { /** * 调用服务里面的方法 */ void callMethodInService();}
2:RemoteService。java
public class RemoteService extends Service { @Override public void onCreate() { System.out.println("远程服务被创建了。。。"); super.onCreate(); } @Override public void onDestroy() { System.out.println("远程服务被销毁了。"); super.onDestroy(); } @Override public IBinder onBind(Intent intent) { return new MiddlePerson(); } private void methodInService(){ System.out.println("我是远程服务的方法,我被调用了。。。。"); } //1.创建一个中间人 远程服务继承的是ipc的一个实现类 private class MiddlePerson extends IMiddlePerson.Stub{ @Override public void callMethodInService() { methodInService(); } }}
3,:XML文件;配置
<service android:name="com.sdingba.remoteservice.RemoteService"> <intent-filter > <!-- 为了方便别的程序用,所以定义一个action来使得别的程序可以调用 --> <action android:name="com.sdingba.remoteservice"/> </intent-filter> </service>
绑定服务app
**1,拷贝aidl文件到目录
2:MainActivity。java**
public class MainActivity extends Activity { private MyConn conn; private IMiddlePerson iMp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 绑定远程服务 * @param view */ public void bind(View view){ Intent intent = new Intent(); intent.setAction("com.sdingba.remoteservice"); conn = new MyConn(); bindService(intent, conn, BIND_AUTO_CREATE); } private class MyConn implements ServiceConnection{ @Override public void onServiceConnected(ComponentName name, IBinder service) { //得到的方式和刚才不同,这个为远程绑定、、得到服务 iMp = IMiddlePerson.Stub.asInterface(service); } @Override public void onServiceDisconnected(ComponentName name) { } } public void call(View view){ try { //调用到远程服务的方法。。在远程服务中写的方法 iMp.callMethodInService(); } catch (RemoteException e) { e.printStackTrace(); } } @Override protected void onDestroy() { unbindService(conn); super.onDestroy(); }}
0 0
- AIDL
- aidl
- AIDL
- AIDL
- AIDL
- AIDL
- AIDL
- aidl
- aidl
- AIDL
- AIDL
- aidl
- AIDL
- AIDL
- AIDL
- aidl
- aidl
- AIDL
- <MZ&DC联考>D2 T2
- 【HUSTOJ】1091: 回形方阵
- Ehcache 整合Spring 使用页面、对象缓存
- UINavgationController中覆写preferredStatusBarStyle方法不执行的问题
- 位运算——数0的个数
- Aidl
- 关于ajax
- mysql编译安装
- 灰度共生矩阵的生成和理解
- 杭电1330
- redhat5配置本地yum
- 二进制中1的个数的多种解法解析以及完整c语言代码
- eventBus学习
- Android 广播机制