`
isiqi
  • 浏览: 16483084 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

写给初学者Android AIDL必看内容

阅读更多

更好的设计Android软件应该熟悉掌握AIDL IPC机制,可以让你编写的组件类似Windows ActiveX COM一样更好的复用,提供类似像Symbian那样的服务器机制。服务可以很好的解决在后台运行无UI的窗口。我们创建一个aidl文件名为 android123.aidl下面是示例代码,修改于Android SDK文档。

  一、创建AIDL文件

package cn.com.android123;

  引入声明 import cn.com.android123.IAtmService;

// 声明一个接口,这里演示的是银行ATM程序
interface IBankAccountService {

int getAccountBalance(); //返回整数,无参数
void setOwnerNames(in List<String> names); //不返回,包含一个传入List参数
BankAccount createAccount(in String name, int startingDeposit, in IAtmService atmService); //返回一个自定义类型
int getCustomerList(in String branch, out String[] customerList); //返回整形,输入一个分支,输出一个客户列表
}

  二、实现一个接口

  显示的提供一个导出接口,为客户端提供绑定。

public class RemoteService extends Service {
@Override
public IBinder onBind(Intent intent) {
if (IRemoteService.class.getName().equals(intent.getAction())) {
return mBinder;
}
if (ISecondary.class.getName().equals(intent.getAction())) {
return mSecondaryBinder;
}
return null;
} //第一个接口

private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
public void registerCallback(IRemoteServiceCallback cb) {
if (cb != null) mCallbacks.register(cb);
}
public void unregisterCallback(IRemoteServiceCallback cb) {
if (cb != null) mCallbacks.unregister(cb);
}
};//第二个接口

private final ISecondary.Stub mSecondaryBinder = new ISecondary.Stub() {
public int getPid() {
return Process.myPid();
}
public void basicTypes(int anInt, long aLong, boolean aBoolean,
float aFloat, double aDouble, String aString) {
}
};

}

  三、客户端交互

  通过Android.os提供的Parcelable类型来传递数据,通常我们使用Eclipse+ADT插件来完成,在Eclipse中在 Package Explorer view视图上单击鼠标右键,选择Create Aidl preprocess file for Parcelable classes(创建aidl预编译文件),最终我们创建一个名为android123.aidl文件

import android.os.Parcel;
import android.os.Parcelable;

public final class Rect implements Parcelable {
public int left;
public int top;
public int right;
public int bottom;

public static final Parcelable.Creator<Rect> CREATOR = new Parcelable.Creator<Rect>() {
public Rect createFromParcel(Parcel in) {
return new Rect(in);
}

public Rect[] newArray(int size) {
return new Rect[size];
}
};

public Rect() {
}

private Rect(Parcel in) {
readFromParcel(in);
}

public void writeToParcel(Parcel out) { //当前数据写入到Parcel中
out.writeInt(left);
out.writeInt(top);
out.writeInt(right);
out.writeInt(bottom);
}

public void readFromParcel(Parcel in) { //从Parcel中读取数据
left = in.readInt();
top = in.readInt();
right = in.readInt();
bottom = in.readInt();
}
}

分享到:
评论

相关推荐

    android aidl dome下载

    Android AIDL(Android Interface Definition Language)是Android系统提供的一种接口定义语言,用于实现不同应用程序进程间的通信(IPC,...对于初学者来说,理解并熟练掌握AIDL的使用,将有助于提升Android开发能力。

    AndroidStudio使用AIDL简单完成IPC

    本教程针对Android Studio中的AIDL使用方法进行详细讲解,适合对Binder和AIDL不熟悉的初学者。 首先,我们需要理解AIDL的基本概念。AIDL是一种接口描述语言,类似于Java中的接口,用于定义服务提供的方法和数据类型...

    Android AIDL音乐播放器

    本项目“Android AIDL音乐播放器”是一个专为初学者设计的实践案例,它涵盖了如何利用AIDL创建一个功能完备的音乐播放器,包括四种播放模式:单曲循环、顺序播放、随机播放和暂停/继续播放。这里我们将深入探讨AIDL...

    AidlDemo(简单aidl的例子)

    **AidlDemo** 示例项目旨在为初学者提供一个清晰的起点,以便理解如何在实际开发中使用AIDL。在这个例子中,我们将看到以下几个关键步骤: 1. **创建AIDL接口**:首先,我们需要创建一个`.aidl`文件,例如`...

    android简单AIDL调用Demo

    在Android系统中,AIDL(Android Interface Definition Language)是一种接口定义语言,用于实现不同进程...对于初学者来说,这是一个很好的起点,能够帮助理解Android系统中进程间通信的重要性以及如何实现这一功能。

    AIDL通信(含2个客户端1个服务端)

    代码简洁,重点突出多进程或多app调用AIDL服务完成通信,内容如下: 1.AIDL服务端 支持多客户端调用AIDL服务端,并广播发送数据给客户端 2.AIDL客户端 示例中的2个客户端都同时...注:方便初学者了解AIDL通信,简单易懂

    Android进程间的通信AIDL实例

    本篇将详细介绍AIDL的使用方法,并通过一个简单的实例来帮助初学者理解其工作流程。 AIDL是一种接口定义语言,它的主要作用是让Android系统能够生成Java绑定代码,使得两个不同的进程可以通过 Binder 对象进行交互...

    AidlDemo(简单aidl的例子.zip

    **描述解析:** "简单的Android学习源代码 aidl的使用方法 Android 入门学习的资历" 描述中提到这是一份适合初学者的教育资源,它提供了一个AIDL的实际应用案例,帮助学习者理解如何在Android应用中实现跨线程通信。...

    android的AIDL的应用

    本示例代码是针对初学者设计的,通过一个简单的客户端-服务器端模型来演示AIDL的用法。 首先,我们要理解AIDL的基本概念。在AIDL中,我们可以定义接口,这些接口描述了进程间通信中可调用的方法。这些接口定义保存...

    安卓Android源码——AidlDemo(简单aidl的例子).zip

    **Android Aidl基础详解** 在Android开发中,进程间通信(Inter-Process Communication,...这个"AidlDemo"示例代码是一个很好的起点,可以帮助初学者快速上手Aidl。通过实际操作和调试,可以进一步巩固对Aidl的理解。

    android初学者入门项目

    初学者必看 1、LinearLayout Button、RadioGroup、 CheckBox 2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ListView 列表视图 7、WebView web视图 8、...

    安卓aidl学习demo

    这个"AidlDemo"项目为初学者提供了理解AIDL和IPC机制的良好起点。通过实际操作和调试,开发者可以更好地掌握这一关键的Android开发技术。在实践中不断尝试和优化,将有助于提升跨进程通信的能力,从而在设计复杂的...

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

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

    AIDL代码实例

    **Android Interface Definition Language (AIDL) 介绍** AIDL(Android Interface ...对于初学者来说,研究`AIDLClient.zip`和`AIDLServer.zip`中的代码实例是一个很好的起点,能够帮助他们快速掌握AIDL的使用技巧。

    一个简单的AIDLdemo,适合小白aidl

    本教程将向你展示如何创建并使用一个简单的AIDL示例,适用于初学者理解AIDL的基本概念和工作流程。** **一、AIDL简介** AIDL允许你在Android应用的不同进程中交换数据。当一个应用需要与另一个应用的组件进行通信时...

    android初学记事本应用源码

    在Android开发领域,初学者经常会从创建一个简单的记事本应用开始学习,因为这个项目涵盖了大量基础和进阶的功能。"android初学记事本应用源码"是一个很好的起点,它涉及了Android应用开发中的多个关键知识点。让...

    365MobileSecretary v1.0.6(365手机助手AIDL).zip

    《365MobileSecretary v1.0.6:探索Android项目的AIDL应用》 365MobileSecretary v1.0.6是一款针对Android平台的...无论是初学者还是经验丰富的开发者,都可以从这个项目中受益,进一步加深对Android IPC机制的理解。

    AIDL代码文件Demo版

    这个AIDL Demo版包含客户端和服务端的代码,为初学者提供了实践AIDL的完整示例。通过这个例子,你可以理解AIDL的工作原理,以及如何在Android应用中实现跨进程通信。记住,AIDL是处理Android系统中多进程间通信的一...

    Android 仿天天动听播放器 源码

    在Android平台上,开发一款音乐播放器是许多开发者尝试的挑战之一。"Android 仿天天动听播放器 源码"提供了一个极好的学习资源,它不仅模仿了知名的音乐应用...无论是初学者还是经验丰富的开发者,都能从中受益匪浅。

Global site tag (gtag.js) - Google Analytics