我想在android项目中大家经常会遇到进程间的通讯,传递信息数据。那么问题来了:在android中进程间通讯有几种方式? 好吧这不是我要说的重点,略过~~~
几周前有个同事问我个事,“我在做传输数据的时候卡住了,然后网上搜索了错误发现跟 intent有关,但我没有用intent呀,这是为什么呢”,我表示压力好大,抱着试试看的态度看了下代码,又问了下操作流程。他是想传数据,数据量是比较大的,而且是进程间的。说到这好多人想到 ContentProvider ,对呀。问题是他并没有用擅长做这事的ContentProvider 。而是AIDL!
所以说到这我想指出两个问题:
1.像是这种需求没有比ContentProvider再好的了,AIDL真的不适合
2.AIDL虽然适用于进程间通信,但我想应该把它归属于消息传递的进程间通信,而非数据传输通道
回过头来再看他的问题,我想就应该找到答案了:为什么网上搜全是intent 呢,首先出现这种错误大多数是用intent的时候不慎出现这个问题的情况比较多。再者intent和AIDL都适用于进程间通信,而且他们的传递通道用的都是 Bundle,根本原因在于bundle不能传递大量数据,所以问题找到了。