`
zhanhao
  • 浏览: 285369 次
  • 性别: 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中跨进程通讯的4种方式

    Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操 作;Broadcast可以向android系统中所有应用程序发送广播,而需要跨进程通讯的...

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

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

    【aidl demo】音乐播放器

    Android Aidl跨进程访问音乐播放器服务,Android Aidl跨进程访问音乐播放器服务,Android Aidl跨进程访问音乐播放器服务

    跨进程访问服务程序(AIDL)

    一个简单的AIDL实现的源代码!分为客户端与服务端,Android平台2.3上实现! 熟悉此代码后再看android的SystemUIService实现原理会轻松许多!

    Android使用AIDL方式实现播放音乐案例

    本文实例为大家分享了Android使用AIDL方式实现播放音乐的具体代码,供大家参考,具体内容如下 思路: ① 新建两个APP项目或者Module,一个作为服务端,一个作为客户端,在服务端创建service  ② 在两个module的...

    AIDL示例(Android Interface Definition Language)

    为了使其他的应用程序也可以访问本应用程序...因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。博客地址:http://blog.csdn.net/u013293125/article/details/77368261

    Android实现跨进程接口回掉的方法

    有一种跨进程通信的方式就是使用AIDL,但是单纯的AIDL通信只可以实现客户端访问服务端主动获取Binder对象,如果服务端有变化无法及时通知客户端。现在可以通过AIDL跨进程接口回掉来解决服务端发生变化通知客户端的...

    详解Android跨进程IPC通信AIDL机制原理

    如果某些情况下仍然需要跨进程访问内存数据,这时候Android系统就要将其对象分解成能够识别的原数据,编写这一组操作的代码是一项繁琐的工作,但是AIDL对底层进行了抽象的封装,简化了跨进程操作。 AIDL IPC机制是...

    Android 进程间通信AIDL使用详解

    一、概述 ...设计AIDL这门语言的目的就是为了实现进程间通信。在Android系统中,每个进程都运行在一块独立的内存中,在其中完成自己的各项活动,与其他进程都分隔开来。可是有时候我们又有应用间进

    AIDL最简单的使用步骤

    AIDL:Android Interface Definition Language,即Android接口定义语言。 为了使其他的应用程序也可以访问本应用程序...因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。

    aidl代码.zip

    文章里涉及到到代码,包含客户端,服务端代码,可直接导入到android studio运行...AIDL全称是Android Interface Definition Language,是安卓接口定义的意思,通过定义相关的接口来实现跨进程通信。

    Android程序设计之AIDL实例详解

    编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成 AIDL可识别的参数(可能是多个参数), ...

    详解Android 进程间通信的几种实现方式

    Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操 作;Broadcast可以向android系统中所有应用程序发送广播,而需要跨进程通讯的...

    android aidl通信

    android aidl通信,是两个应用程序之间的进程通信,通过服务aidl服务来访问。我的博客地址:http://blog.csdn.net/qq_16064871

    Android Service的跨进程通信实战&Service/AIDL远程调用过程解析(Android Q)

    Service的跨进程通信实战 ...我们来看如何在Android中实现? PersonServer端实现 PersonServer端是服务的提供者,我们首先需要创建一个Service来提供该服务,并且需要该服务具备跨进程通信的能力,以便Client端进行

    android aidl demo

    aidl 入门例子 在Android 中有一种服务说是服务其实倒不如说是一个接口,这个接口名为:Android Interface Definition Language ,这个接口可提供跨进程访问服务,英文缩写为:AIDL。

Global site tag (gtag.js) - Google Analytics