- 浏览: 417454 次
-
文章分类
- 全部博客 (327)
- Android (114)
- Java (13)
- Java基础 (14)
- Glib (2)
- linux (15)
- extjs (5)
- eclipse (2)
- Asterisk (56)
- MYSQL (6)
- 数据库 (9)
- PHP (7)
- C# (18)
- 杂谈~~ (1)
- web开发前端 (3)
- 网络编程 (2)
- Opensips (2)
- voip (3)
- debian (7)
- openfire (15)
- wordpress (1)
- 版本控制 (1)
- Android 线程服务广播 (1)
- SRTP (2)
- 单片机及ARM等 (3)
- 基础知识 (5)
- asp.net (2)
- 单片机 (1)
- 设计模式及架构 (1)
- 安全 (1)
- Cubieboard 草莓树莓各类派 Android开发板 (1)
- J2EE (2)
- BootStrap (3)
- BootStrap web前端开发 (1)
- web前端开发 (4)
- object-c (1)
- openwrt (8)
- 智能家居 (4)
- Node.js (4)
最新评论
-
xiaoxiecomeon:
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能 ...
Runnable 和 Thread -
dotjar:
我觉得话应该这么说:引用TestThread tt = new ...
Runnable 和 Thread -
dagf113225:
调用TelephonyManager的隐藏API是先参考Fra ...
Android提高第十四篇之探秘TelephonyManager
很多网友来函表示对Android AIDL不是很理解,这里Android123准备了一个简单的例子,帮助大家了解Android上比较强大的远程服务设计吧。 一、为什么要使用AIDL,他的优势有哪些呢? AIDL服务更像是 一个Server,可以为多个应用提供服务。由于使用了IDL这样类似COM组件或者说中间语言的设计,可以让后续的开发者无需了解内部,根据暴漏的接口实现相关的操作,AIDL可以工作在独立的进程中。 二、学习AIDL服务需要有哪些前置知识? 作为Android上服务的扩展,首先你要了解Android Service模型,Android Serivice我们可以分为两种模式,三个类型,1.最简单的Service就是无需处理onBind方法,一般使用广播通讯,效率比较低。2. 使用Binder模式处理Service和其他组件比如Activity通讯,Android开发网提示对于了解了Binder模式的服务后,开发AIDL远程服务就轻松容易的多。 三、具体实例,我们以com.android123.cwj.demo为工程名,首先在工程目录的com.android123.cwj目录下创建一个ICWJ.aidl文件,内容为 package com.android123.cwj; interface ICWJ { String getName(); } 如果格式AIDL格式没有问题,在Eclipse中ADT插件会在工程的gen目录下会自动生成一个Java实现文件。 在Service中代码如下: public class CWJService extends Service { public String mName="android123"; private final ICWJ.Stub mBinder = new ICWJ.Stub() @Override }; @Override } 接着在AndroidManifest.xml文件中定义 <service android:name=".CWJService"> 接下来在Activity中的调用,我们可以 private ICWJ objCWJ = null; private ServiceConnection serviceConn = new ServiceConnection() { @Override @Override 在Activity的onCreate中加入绑定服务的代码 Intent intent = new Intent(); 同时重写Activity的onDestory方法 @Override 执行AIDL的getName可以通过下面的方法 if (objCWJ == null)
public static final String BIND = "com.android123.cwj.CWJService.BIND";
{
public String getName() throws RemoteException
{ //重写在AIDL接口中定义的getName方法,返回一个值为我们的成员变量mName的内容。
try
{
return CWJService.this.mName;
}
catch(Exception e)
{
return null;
}
}
@Override
public void onCreate() {
Log.i("svc", "created.");
}
public IBinder onBind(Intent intent) {
return mBinder; //这里我们要返回mBinder而不是一般Service中的null
}
<intent-filter>
<action android:name="com.android123.cwj.CWJService.BIND" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
public void onServiceDisconnected(ComponentName name) {
}
public void onServiceConnected(ComponentName name, IBinder service) {
objCWJ = ICWJ.Stub.asInterface(service);
}
};
intent.setClass(this, CWJService.class);
bindService (intent, serviceConn, Context.BIND_AUTO_CREATE);
public void onDestroy() {
unbindService(serviceConn); // 取消绑定
super.onDestroy();
}
{
try {
String strName = obj.getName();
}
catch (RemoteException e)
{}
}
以上过程中,如果ADT插件没有自动生成ICWJStub类在工程的gen目录下时,可以手动在sdk根目录下platform-tools目录下,手动实用AIDL.exe来生成,这样可以看清楚AIDL文件到底是哪里存在格式上的错误。有关AIDL中传递参数,实用复杂类型,还有导出成为独立的进程,Android123在明天给出另一个示例。
发表评论
-
直接拿来用!最火的Android开源项目整理
2015-09-16 10:13 610一、代码库 1、from 代码家 整理比较好的源 ... -
探讨android更新UI的几种方法
2014-06-09 23:27 621今天讲的内容非常简单,只是讲讲有关于android界面更新的 ... -
Android 滑动切换页面 以及屏幕手势
2014-05-08 17:49 532手机进入智能机时代,触摸屏也已成为主流之势,原来的手机按键也 ... -
android 用Achartengine 作图
2014-05-08 16:55 773Achartengine 是google的一 ... -
Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
2014-05-08 16:28 776Animation的4个基本动画效果 What is An ... -
java.lang.ClassNotFoundException: Didn't find class "android.support.v4.view.Vie
2014-05-06 14:43 2941Android错误:Caused by: java.lang ... -
Android Socket通信如何设置超时时间
2014-05-06 14:14 1100其实关于这个问题可能用到的人不会很多,不过我在这里还是说说。 ... -
【转】Android本地语音识别引擎PocketSphinx-语言建模
2014-02-13 10:35 1851Android本地语音识别引擎PocketSphinx- ... -
关于build.prop原始Dalvik虚拟机设定与调整
2013-09-05 10:40 1263原厂S3 台版 1GB Ramsystem/build.pro ... -
Android中Service与IntentService的使用比较
2013-09-04 15:24 1219该博客来自网络——— ... -
android 应用程序Activity之间数据传递与共享的几种途径
2013-08-01 17:24 9121.基于消息的通信机制 Intent ---boud ... -
android数据通信方式
2013-08-01 17:15 918http://www.itkee.com/develope ... -
“android.intent.category.DEFAULT”的目的是什么?
2013-07-31 16:43 5481、要弄清楚这个问题,首先需要弄明白什么是implicit( ... -
集成拨号盘,2句话的事情
2013-07-30 15:45 610<intent-filter> < ... -
Android TabHost动态加载内容总结
2013-07-25 17:49 966前面用继承TabActivity的方法很好的完成了,TabHo ... -
[Android实例] android json
2013-07-17 15:20 670import java.io.ByteArrayOutput ... -
android json解析及简单例子
2013-07-17 15:19 943JSON的定义: 一种轻量级的数据交换 ... -
AsyncTask的用法-UI刷新发放
2013-07-15 14:50 674在开发Android应用时必须遵守单线程模型的原则: A ... -
java.lang.OutOfMemoryError处理错误
2013-07-15 14:41 684java.lang.OutOfMemoryError异常解决 ... -
关于android.view.WindowLeaked异常的解决方案
2013-07-15 10:34 627Android.view.WindowLeaked按字面了解, ...
相关推荐
Android AIDL 远程服务器使用示例,希望对web开发的朋友有所帮助
下面我们将详细讲解Android AIDL远程服务的工作原理、实现步骤以及示例代码。 **1. AIDL简介** AIDL类似于Java中的接口,但它能够帮助我们定义进程间的通信协议。通过AIDL,我们可以定义方法签名,这些方法将在...
在这个"Android AIDL使用例子"中,`MyBinderService`很可能包含了上述所有步骤的实现,展示了如何创建、实现AIDL接口以及在客户端和服务端之间进行通信。通过这个例子,开发者可以更深入地理解Android进程间通信的...
下面将详细解释如何使用AIDL进行远程方法调用,并结合提供的"aidlClient.rar"和"aidlService.rar"文件中的示例来解析这个过程。 1. **AIDL基础**: AIDL文件本质上是接口定义,类似于Java的接口,但包含了特殊的...
本示例"android AidlDemo(简单aidl的例子)"将带领我们深入理解如何在Android应用中使用AIDL。 1. **AIDL的基本概念** - AIDL是一种接口定义语言,它的主要作用是让不同的Android进程能够安全、高效地进行通信。 -...
和博客文章http://blog.163.com/zhou_411424/blog/static/197362156201241541451/...对应改编的例子,实现了在一个APP1中通过AIDL远程调用另一个APP2的Service的函数,即使APP2没有被启动过! 均在eclipse编译运行通过。
本篇文章将深入探讨如何使用AIDL调用远程服务,以及在实际应用中的操作步骤。 首先,我们需要理解AIDL的基本概念。AIDL是一种接口定义语言,它允许我们定义在不同进程间通信的接口。这些接口可以包含方法声明,参数...
2. **客户端**:客户端通过调用`bindService()`方法连接到服务,并获取到由AIDL生成的远程服务代理对象。这个代理对象可以透明地调用服务端的方法,实际上执行的是跨进程通信。 3. **数据序列化与反序列化**:由于...
Android Aidl(Android Interface Definition Language)是Android提供的一种强大的IPC机制,它允许两个不同进程之间的服务进行接口调用,实现了类似远程方法调用(RPC,Remote Procedure Call)的效果。下面将详细...
理解Binder框架和aidl的使用,对于开发Android系统级服务或需要跨进程通信的应用至关重要。通过aidl,我们可以方便地定义接口,实现进程间的交互,使得Android应用能够灵活地扩展其功能,与其他应用或系统组件协同...
总的来说,AIDL是Android系统中实现多客户端调用同一服务的关键技术。它使得开发者能够构建健壮、可扩展的分布式应用,同时处理来自不同应用的请求。在实际开发中,理解并熟练掌握AIDL的使用,将极大地提高应用的...
在Android系统中,AIDL(Android Interface Definition Language)是一种接口定义语言,用于实现不同进程间的通信,即远程进程通讯。AIDL使得服务(Service)和活动(Activity)这两个独立的APK之间能够相互通信,...
在这个"android_aidl例子"中,我们有两个项目:21_阿里支付系统和22_LoL游戏,它们都利用了AIDL来解决跨应用交互的问题。 首先,让我们深入理解AIDL的基本概念。AIDL本质上是定义接口的语法,类似于Java中的接口,...
本示例将详细讲解如何使用AIDL来实现一个简单的远程加法计算。 首先,我们需要创建一个AIDL文件。在Android Studio项目中,通常在`src/main/aidl`目录下新建一个名为`IRemoteCalculator.aidl`的文件。在这个文件中...
在Android系统中,AIDL(Android Interface Definition Language)是一种接口定义语言,用于实现跨进程...在实际开发中,AIDL广泛应用于实现服务的远程调用,如音乐播放服务、位置服务等,为开发者提供了强大的功能。
**Android Interface Definition Language (AIDL) 远程调用实例详解** 在Android系统中,当一个应用程序需要与另一个运行在不同进程或者不同设备上的应用程序进行交互时,就需要使用到远程通信技术。Android提供了...
**Android的AIDL(Android Interface Definition Language)是Google为Android平台设计的一种接口定义语言,用于在Android应用程序的不同组件之间实现进程间通信(IPC,Inter-Process Communication)。在本示例中,...
在Android系统中,进程间通信...总结,使用AIDL和远程服务进行Android进程通信,能有效地解决应用间的协作问题,但需要注意其带来的性能影响。通过实践和理解这些知识点,开发者可以构建更加复杂和健壮的Android应用。
AIDL 文件是用于定义服务端和客户端之间的接口,用于实现远程过程调用(RPC)。但是, 当服务端和客户端的 AIDL 文件不一致时,可能会引起调用出错的问题。 在 Android 应用程序中,AIDL 文件用于定义服务端和...
Android的AIDL(Android Interface Definition Language)就是专为处理IPC而设计的一种接口定义语言,它允许开发者在不同的进程中暴露服务并进行数据交换。下面我们将详细探讨AIDL在Android IPC中的应用和实现过程。...