Android 进程之间不能共享内存,但是实现进程之间通讯的方法有很多,Activity、Broadcast,ContentProvider,SharedId都可以。作为android四大组件的Service 也有自己的方法实现进程之间的通讯--AIDL
流程:
服务端:
(1)新建扩展名为aidl的文件。内容与java语言类似 但是也有区别
package com.my;
interface IService
{
String getString();
}
(2)如果aidl文件创建正确,ADT会自动给你生成一个java文件,内容定义的是一个接口。
(3)编写一个继承自android.app.Service 的服务类,并编写类实现第二步的接口
public class MyService extends Service {
public class ServiceImpl extends IService.Stub
{
@Override
public String getString() throws RemoteException {
// TODO Auto-generated method stub
return "哈哈哈";
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return new ServiceImpl();
}
}
(4)在AndroidManifest.xml中配置
<service android:name=".MyService">
<intent-filter>
<action android:name="com.my.IService"></action>
</intent-filter>
</service>
调用端:
(1)将服务端第(2)步的java接口文件和包一起服务到调用端
(2)绑定服务,通过bindService(Intent intent,ServiceConnection connection,int flags);
(3)由第二步的方法知道要实现ServiceConnection 接口,并在接口的方法onServiceConnected()中得到第一步接口的实例对象
class MyServiceConnection implements ServiceConnection
{
//服务连接成功调用
@Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
//得到从服务端复制的java接口的实例对象,service 为接口的实例对象
service = IService.Stub.asInterface(arg1);
}
//服务连接失败调用
@Override
public void onServiceDisconnected(ComponentName arg0) {
// TODO Auto-generated method stub
}
}
(4)得到数据:通过调用第(1)步得到的接口方法
service.getString();
分享到:
相关推荐
一个简单的跨进程AIDL访问,包含简单的被调用程序和调用AIDL的程序,方便初学者学习AIDL跨进程,跨APP数据访问。 客户端和原程序跟目录下都包含了read.txt阅读文档,方便学者学会AIDL的调用 【程序基于UFT-8格式,...
AIDL是Android接口定义语言,它可以用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service的功能。 实现步骤 例:用 A程序去访问 B程序的MyService.java服务 在B中...
Android Aidl跨进程访问parcelable接口数据,简单封装了下AIDL作为一个library被其他3个app引用,实现3个app共用一个服务,3个app中任意打开一个app开启服务,其他两个app共用此服务获取接口数据。
Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操 作;Broadcast可以向android系统中所有应用程序发送广播,而需要跨进程通讯的...
跨进程访问 aidl,与 ch08_aidlclient 工程配合使用
Android Aidl跨进程访问音乐播放器服务,Android Aidl跨进程访问音乐播放器服务,Android Aidl跨进程访问音乐播放器服务
一个简单的AIDL实现的源代码!分为客户端与服务端,Android平台2.3上实现! 熟悉此代码后再看android的SystemUIService实现原理会轻松许多!
本文实例为大家分享了Android使用AIDL方式实现播放音乐的具体代码,供大家参考,具体内容如下 思路: ① 新建两个APP项目或者Module,一个作为服务端,一个作为客户端,在服务端创建service ② 在两个module的...
为了使其他的应用程序也可以访问本应用程序...因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。博客地址:http://blog.csdn.net/u013293125/article/details/77368261
有一种跨进程通信的方式就是使用AIDL,但是单纯的AIDL通信只可以实现客户端访问服务端主动获取Binder对象,如果服务端有变化无法及时通知客户端。现在可以通过AIDL跨进程接口回掉来解决服务端发生变化通知客户端的...
如果某些情况下仍然需要跨进程访问内存数据,这时候Android系统就要将其对象分解成能够识别的原数据,编写这一组操作的代码是一项繁琐的工作,但是AIDL对底层进行了抽象的封装,简化了跨进程操作。 AIDL IPC机制是...
一、概述 ...设计AIDL这门语言的目的就是为了实现进程间通信。在Android系统中,每个进程都运行在一块独立的内存中,在其中完成自己的各项活动,与其他进程都分隔开来。可是有时候我们又有应用间进
AIDL:Android Interface Definition Language,即Android接口定义语言。 为了使其他的应用程序也可以访问本应用程序...因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。
文章里涉及到到代码,包含客户端,服务端代码,可直接导入到android studio运行...AIDL全称是Android Interface Definition Language,是安卓接口定义的意思,通过定义相关的接口来实现跨进程通信。
编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成 AIDL可识别的参数(可能是多个参数), ...
Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操 作;Broadcast可以向android系统中所有应用程序发送广播,而需要跨进程通讯的...
android aidl通信,是两个应用程序之间的进程通信,通过服务aidl服务来访问。我的博客地址:http://blog.csdn.net/qq_16064871
Service的跨进程通信实战 ...我们来看如何在Android中实现? PersonServer端实现 PersonServer端是服务的提供者,我们首先需要创建一个Service来提供该服务,并且需要该服务具备跨进程通信的能力,以便Client端进行
aidl 入门例子 在Android 中有一种服务说是服务其实倒不如说是一个接口,这个接口名为:Android Interface Definition Language ,这个接口可提供跨进程访问服务,英文缩写为:AIDL。