【随心笔录】Android AIDL使用,实现跨进程通信
来源:互联网 发布:异次元软件站 编辑:程序博客网 时间:2024/05/16 02:00
一、 AIDL
- 上一篇文章 中,我们通过Bind启动Service,当我们的Service和Activity不在同一进程里面,会报错:java.lang.ClassCastException: android.os.BinderProxy cannot be cast to …
- 是时候了解了解我们的AIDL了。
- AIDL(Android Interface Define Language) 是IPC进程间通信方式的一种.用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码.
二、使用步骤
- Android studio 很方便就能创建AIDL。
- 新建一个aidl的文件夹。看图
- 新建的AIDL叫 IMyAidlInterface.aidl。
interface IMyAidlInterface { //从简,我修改了一下 void start();}
- 点击运行,图
运行成功,继续。废话不多说,看代码。
Service类的代码
public class AbleService extends Service {public final static String TAG = "AbleService";public AbleService() {}private IBinder aidlInterface = new IMyAidlInterface.Stub() { @Override public void start() throws RemoteException { Log.v(TAG,"IMyAidlInterface实现了进程通信!"); }};@Overridepublic IBinder onBind(Intent intent) { return aidlInterface ;}}
AndroidManifest.xml注册。
<service android:name=".service.AbleService" android:enabled="true" android:exported="true" android:process="com.fingerth.able.service"> </service>
Activity的代码
Intent intent = new Intent(this, AbleService.class); bindService(intent, conn, BIND_AUTO_CREATE);
private ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { //这里得到IMyAidlInterface,可以直接调用它的方法,这样就完成了和Service的通信 IMyAidlInterface aidlInterface = IMyAidlInterface.Stub.asInterface(service); try { aidlInterface.start(); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { }};
三、代码写完,运行looklook
- 运行当然是成功的了。
- 完。
阅读全文
1 0
- 【随心笔录】Android AIDL使用,实现跨进程通信
- Android使用Aidl实现跨进程通信
- 使用AIDL实现Android的跨进程通信
- android 实现aidl跨进程通信之一
- Android Studio AIDL实现跨进程通信
- Android Studio实现AIDL跨进程通信
- Android中使用aidl跨进程通信
- Android跨进程通信-AIDL的使用
- AIDL实现跨进程通信
- AIDL实现跨进程通信
- AIDL实现跨进程通信
- Android跨进程通信-AIDL
- Android跨进程通信-AIDL
- Android AIDL跨进程通信
- Android AIDL跨进程通信
- Android 跨进程通信: AIDL
- Android:AIDL跨进程通信
- 使用AIDL跨进程通信
- 文件操作(一)
- FFT快速傅里叶变换的应用——画单边频谱图matlab
- 面对对象(封装)(继承)(多态)
- Zookeeper学习笔记(一)-Zookeeper介绍篇
- 数位DP 思维起步
- 【随心笔录】Android AIDL使用,实现跨进程通信
- Java+Selenium3框架设计准备篇11-用Log4j实现日志输出
- 第十九天 mybatis
- cocos2d-x提供的场景切换效果
- Linux python3 安装Mayavi
- 解决问题:Cannot refer to the non-final local variable user defined in an enclosing scope
- •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100)
- hanlp汉语言包
- Java实现邮箱激活账户实例