IPC进程通信机制---------AIDL实战
2017-10-07 16:25
288 查看
本篇带你揭开AIDL神秘的面纱:相似知识点:Service通信。
IPC,含义为进程间通信或则跨进程通信,是指两个进程之间进行数据交换的过程。
AIDL: Android interface defination language.
适应读者:熟悉Service通信。
Start:
三点关键点:
1、服务端, Service。
2、客户端,Activity。
3、AIDL接口的创建。
第一点:
并且在xml文件中,定义Service。
第二点:绑定Service。
第三点:定义AIDL接口。
补充:
【定义形式,如Java接口定义形式】
【特殊注意:AIDL默认支持,基本类型、String、List、Map类型对象,如果需要传递其他引用类型对象,请查看下一篇文章介绍,本篇秉着简单易懂的形式,带你通过AIDL实现IPC机制。】
【特殊注意:当编写完AIDL接口,在AndroidStudio中,你需要手动Build 当前项目,否则,编译器查询不到.aidl文件。。】
IPC,含义为进程间通信或则跨进程通信,是指两个进程之间进行数据交换的过程。
AIDL: Android interface defination language.
适应读者:熟悉Service通信。
Start:
三点关键点:
1、服务端, Service。
2、客户端,Activity。
3、AIDL接口的创建。
第一点:
public class AIDLService extends Service { private final String INFO = "我是另外一个进程的数据信息哦"; @Override public void onCreate() { super.onCreate(); } @Nullable @Override public IBinder onBind(Intent intent) { return mBinder; } private Binder mBinder = new IMyAidlInterface.Stub(){ @Override public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException { } @Override public String getInfo() throws RemoteException { return INFO; } }; }
并且在xml文件中,定义Service。
第二点:绑定Service。
/** * ServiceConnection 进程间通信的桥梁。 */ ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { IMyAidlInterface inter = IMyAidlInterface.Stub.asInterface(service); try { Log.e("MainActivity", "==========================" + inter.getInfo()); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(this, AIDLService.class); bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); }
第三点:定义AIDL接口。
interface IMyAidlInterface { /** * Demonstrates some basic types that you can use as parameters * and return values in AIDL. */ void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString); String getInfo(); }
补充:
【定义形式,如Java接口定义形式】
【特殊注意:AIDL默认支持,基本类型、String、List、Map类型对象,如果需要传递其他引用类型对象,请查看下一篇文章介绍,本篇秉着简单易懂的形式,带你通过AIDL实现IPC机制。】
【特殊注意:当编写完AIDL接口,在AndroidStudio中,你需要手动Build 当前项目,否则,编译器查询不到.aidl文件。。】
相关文章推荐
- AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)
- 【Android开发艺术探索】IPC机制(四)-使用AIDL进行跨进程通信
- AIDL/IPC Android AIDL/IPC 进程通信机制——超详细讲解及用法案例剖析(播放器)
- Android IPC机制(三)——利用AIDL实现跨进程通信
- Android进程间(IPC机制)通信(Bundler,Messenger,AIDL,ContentProvider)
- AIDL/IPC Android AIDL/IPC 进程通信机制——超详细讲解及用法案例剖析(播放器)
- 从AIDL开始谈Android进程间Binder通信机制
- Android中跨进程通信的IPC机制(Binder框架)
- Android进程间的通信 - IPC(机制)Binder的原理和源码阅读
- Aidl跨进程通信机制-android学习之旅(87)
- Android进程通信机制之-aidl">安卓进程通信机制之 AIDL
- Android 进程通信机制之 AIDL
- Android进程间的通信 - IPC(机制)Binder的原理和源码阅读
- Aidl跨进程通信机制-android学习之旅(87)
- IPC进程通信机制
- Android系统分析之AIDL跨进程通信机制的使用和原理分析
- 从AIDL开始谈Android进程间Binder通信机制
- Android 进程通信机制之 AIDL
- Android 进程通信机制之 AIDL
- 从AIDL开始谈Android进程间Binder通信机制