android aidl进程间通信
16lz
2021-01-24
1.在应用1中定义自己的aidl文件。
2.在应用1中写service,实现aidl接口,复写onbind方法。
3.在应用2中将应用1的aidl接口文件拷过去,注意包名要一致。
4.在应用2中定义实现serviceConnection接口,绑定应用1的service。通过Ibinder对象访问应用1中的aidl实现方法。
注意点:
两个应用的aidl的包名要相同
package com.test.eric.AIDL; interface testAIDL { void fun(); }
2.在应用1中写service,实现aidl接口,复写onbind方法。
public class MyService extends Service { @Override public IBinder onBind(Intent t) { return mBinder; } private final testAIDL.Stub mBinder = new testAIDL.Stub() { @Override public void fun() throws RemoteException { Log.d(TAG, "------"); } }; }
3.在应用2中将应用1的aidl接口文件拷过去,注意包名要一致。
package com.test.eric.AIDL; interface testAIDL { void fun(); }
4.在应用2中定义实现serviceConnection接口,绑定应用1的service。通过Ibinder对象访问应用1中的aidl实现方法。
public class myActivity extends Activity { private Button btnOk; testAIDL mService; private ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { mService = testAIDL.Stub.asInterface(service); } public void onServiceDisconnected(ComponentName className) { } }; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); btnOk = (Button)findViewById(R.id.btn_ok); Intent intent = new Intent(myActivity.this, MyService.class); intent.putExtras(args); bindService(intent, mConnection, Context.BIND_AUTO_CREATE); btnOk.setOnClickListener(new OnClickListener() { public void onClick(View v) { mService.fun(); } }); } }
注意点:
两个应用的aidl的包名要相同
更多相关文章
- android 分割线渐变色和几种颜色值定义
- android中的数据存取-方式二:file(文件)
- Sqlite在Android上的一个Bug - 临时文件写策略
- 有关 Android(安卓)Studio 重复引入包的问题和解决方案
- 从源代码编译Android(CyanogenMod For Hero GSM)【转】
- Android多国语言文件夹
- android 随手记 遍历文件夹下的文件有多少
- android 自定义 radiobutton 文字颜色随选中状态而改变
- Android(安卓)display架构分析(七-1)