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共用此服务获取接口数据。
总的来说,通过Android AIDL实现跨进程更新UI,我们需要定义AIDL接口,实现接口服务端,启动并绑定服务,然后在服务端安全地更新UI。这个过程涉及到Android的多进程通信、Binder机制以及线程同步等核心知识点,对于...
总结一下,AIDL是Android中实现跨进程通信的关键技术,它通过定义接口和数据传输规范,使得不同进程的应用能够安全、高效地共享数据和调用方法。"AIDLClient"和"AIDL"分别代表了通信的客户端和服务端,通过AIDL接口...
在Android系统中,应用程序默认是运行在各自的进程中,它们之间无法直接访问对方的数据或方法,如果需要进行数据交互或者调用服务,就需要一种机制来实现跨进程通信(IPC,Inter-Process Communication)。AIDL...
本资料主要探讨了如何使用AIDL在Android源码层面实现跨进程调用。 一、AIDL基础 AIDL是一种简单的接口定义语言,用于描述服务端提供的接口方法。当一个应用需要与另一个应用进行交互时,可以定义一个AIDL文件,...
总结起来,这个"跨进程访问 aidl 客户端示例"展示了如何利用AIDL在Android中实现进程间的通信。通过定义接口、实现接口、启动服务、绑定服务以及调用服务方法,我们可以让不同进程的应用程序协同工作,从而扩展应用...
本示例源码是关于如何利用Android Interface Definition Language (AIDL)来实现跨进程通信,创建一个音乐播放器应用。AIDL是Android提供的一种接口定义工具,用于生成允许不同进程之间进行方法调用的代理类。 1. **...
总结来说,AIDL是Android中实现跨进程通信的重要工具,通过定义接口和生成的Java代理类,使得客户端和服务端能安全、高效地交互。"ch08_aidlclient"工程是一个实际应用的例子,展示了如何在实际项目中使用AIDL进行...
当两个Android进程之间需要交互时,其中一个进程(服务进程)会通过AIDL声明其公开的服务接口,而另一个进程(客户端进程)则可以通过调用这些接口来访问服务进程的功能。 在AIDL文件中,开发者可以定义数据类型、...
本文将深入探讨如何利用Android Interface Definition Language (AIDL) 和远程服务(Remote Service)来实现进程间的通信。AIDL是Android提供的一种接口定义语言,用于生成允许不同进程间进行方法调用的代码。 **...
2. **Binder机制**:AIDL利用了Android的Binder机制,它是Android系统中实现跨进程通信的主要手段。Binder作为代理,将客户端的调用转换成消息,通过系统的Binder驱动发送到服务端进程,服务端接收到消息后执行相应...
通过"AIDLdemo"的实践,开发者可以深刻理解AIDL的工作原理,掌握如何在Android中实现高效、安全的跨进程通信。AIDL虽然相比其他通信方式(如BroadcastReceiver、ContentProvider、LocalBroadcastManager等)较为复杂...
AIDL(Android Interface Definition Language)是Android提供的一种机制,专门用于定义和实现跨进程的通信接口。本篇文章将深入探讨AIDL的工作原理、使用步骤以及其在手机进程间通讯中的作用。 **AIDL的基本概念**...
AIDL(Android Interface Definition Language)是Android...通过以上知识点,你可以更好地理解和使用AIDL在Android应用程序中实现服务的跨进程通信。理解并熟练运用AIDL有助于提高Android应用的架构设计和功能实现。
通过阅读和分析这些代码,开发者能够理解如何在Android应用中设置和使用AIDL,从而实现不同进程间的有效通信。同时,这也涉及到Android服务的生命周期管理、权限控制以及数据序列化等多方面知识,对于提升Android...
7. **自定义通道**:除了使用Android系统提供的组件外,框架还可能引入自定义的通道,如通过Socket或HTTP/HTTPS等方式实现跨进程通信,以满足更复杂的需求。 在"jarryleo-MagicMessenger-4900b5a"这个文件中,很...