`
zhanhao
  • 浏览: 286935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 通过AIDL实现跨进程访问

阅读更多

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();

 

分享到:
评论

相关推荐

    不同APP之间数据访问AIDL跨进程访问

    一个简单的跨进程AIDL访问,包含简单的被调用程序和调用AIDL的程序,方便初学者学习AIDL跨进程,跨APP数据访问。 客户端和原程序跟目录下都包含了read.txt阅读文档,方便学者学会AIDL的调用 【程序基于UFT-8格式,...

    Android AIDL实现跨进程通信的示例代码

    AIDL是Android接口定义语言,它可以用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service的功能。 实现步骤 例:用 A程序去访问 B程序的MyService.java服务 在B中...

    Android Aidl跨进程访问parcelable接口,实现3个app共用一个服务

    Android Aidl跨进程访问parcelable接口数据,简单封装了下AIDL作为一个library被其他3个app引用,实现3个app共用一个服务,3个app中任意打开一个app开启服务,其他两个app共用此服务获取接口数据。

    Android AIDL 跨进程更新UI

    总的来说,通过Android AIDL实现跨进程更新UI,我们需要定义AIDL接口,实现接口服务端,启动并绑定服务,然后在服务端安全地更新UI。这个过程涉及到Android的多进程通信、Binder机制以及线程同步等核心知识点,对于...

    AIDl跨进程客户端与服务端互相通信

    总结一下,AIDL是Android中实现跨进程通信的关键技术,它通过定义接口和数据传输规范,使得不同进程的应用能够安全、高效地共享数据和调用方法。"AIDLClient"和"AIDL"分别代表了通信的客户端和服务端,通过AIDL接口...

    AIDL跨进程学习代码

    在Android系统中,应用程序默认是运行在各自的进程中,它们之间无法直接访问对方的数据或方法,如果需要进行数据交互或者调用服务,就需要一种机制来实现跨进程通信(IPC,Inter-Process Communication)。AIDL...

    安卓Android源码——aidl跨进程调用.zip

    本资料主要探讨了如何使用AIDL在Android源码层面实现跨进程调用。 一、AIDL基础 AIDL是一种简单的接口定义语言,用于描述服务端提供的接口方法。当一个应用需要与另一个应用进行交互时,可以定义一个AIDL文件,...

    跨进程访问 aidl 客户端示例

    总结起来,这个"跨进程访问 aidl 客户端示例"展示了如何利用AIDL在Android中实现进程间的通信。通过定义接口、实现接口、启动服务、绑定服务以及调用服务方法,我们可以让不同进程的应用程序协同工作,从而扩展应用...

    Android例子源码音乐播放器aidl实现进程间的通讯

    本示例源码是关于如何利用Android Interface Definition Language (AIDL)来实现跨进程通信,创建一个音乐播放器应用。AIDL是Android提供的一种接口定义工具,用于生成允许不同进程之间进行方法调用的代理类。 1. **...

    跨进程访问 aidl,与 ch08_aidlclient 工程配合使用

    总结来说,AIDL是Android中实现跨进程通信的重要工具,通过定义接口和生成的Java代理类,使得客户端和服务端能安全、高效地交互。"ch08_aidlclient"工程是一个实际应用的例子,展示了如何在实际项目中使用AIDL进行...

    aidl跨进程调用 Android源码.rar

    当两个Android进程之间需要交互时,其中一个进程(服务进程)会通过AIDL声明其公开的服务接口,而另一个进程(客户端进程)则可以通过调用这些接口来访问服务进程的功能。 在AIDL文件中,开发者可以定义数据类型、...

    android 使用AIDL和远程服务实现进程通信的学习

    本文将深入探讨如何利用Android Interface Definition Language (AIDL) 和远程服务(Remote Service)来实现进程间的通信。AIDL是Android提供的一种接口定义语言,用于生成允许不同进程间进行方法调用的代码。 **...

    aidl,多进程交互

    2. **Binder机制**:AIDL利用了Android的Binder机制,它是Android系统中实现跨进程通信的主要手段。Binder作为代理,将客户端的调用转换成消息,通过系统的Binder驱动发送到服务端进程,服务端接收到消息后执行相应...

    通过AIDLdemo掌握跨进程之间的通讯

    通过"AIDLdemo"的实践,开发者可以深刻理解AIDL的工作原理,掌握如何在Android中实现高效、安全的跨进程通信。AIDL虽然相比其他通信方式(如BroadcastReceiver、ContentProvider、LocalBroadcastManager等)较为复杂...

    android-AIDL手机进程间通讯

    AIDL(Android Interface Definition Language)是Android提供的一种机制,专门用于定义和实现跨进程的通信接口。本篇文章将深入探讨AIDL的工作原理、使用步骤以及其在手机进程间通讯中的作用。 **AIDL的基本概念**...

    aidl.rar_AIDL_AIDL.rar_android AIDL service_android service_andr

    AIDL(Android Interface Definition Language)是Android...通过以上知识点,你可以更好地理解和使用AIDL在Android应用程序中实现服务的跨进程通信。理解并熟练运用AIDL有助于提高Android应用的架构设计和功能实现。

    Android应用源码之aidl跨进程调用.zip

    通过阅读和分析这些代码,开发者能够理解如何在Android应用中设置和使用AIDL,从而实现不同进程间的有效通信。同时,这也涉及到Android服务的生命周期管理、权限控制以及数据序列化等多方面知识,对于提升Android...

    Android-安卓跨进程跨app通信框架

    7. **自定义通道**:除了使用Android系统提供的组件外,框架还可能引入自定义的通道,如通过Socket或HTTP/HTTPS等方式实现跨进程通信,以满足更复杂的需求。 在"jarryleo-MagicMessenger-4900b5a"这个文件中,很...

Global site tag (gtag.js) - Google Analytics