Android远程服务(AIDL)实现步骤】的更多相关文章

建立AIDL服务要比建立普通的服务复杂一些,具体步骤如下: (1)在Eclipse Android工程的Java包目录中建立一个扩展名为aidl的文件.该文件的语法类似于Java代码,但会稍有不同.详细介绍见实例52的内容.       (2)如果aidl文件的内容是正确的,ADT会自动生成一个Java接口文件(*.java).       (3)建立一个服务类(Service的子类).       (4)实现由aidl文件生成的Java接口.       (5)在AndroidManifest…
问题 一 JavaBinder: Uncaught remote exception! (Exceptions are not yet supported across processes.) java.lang.RuntimeException:Can't create handler inside thread that has not called Looper.prepare() 问题描述 在service中的一个方法中,执行两种提示:一种是 Log 打印数据,另一种是 Toast 提示…
AIDL和其他的IDL类似,它允许你定义程序接口,以便客户端与服务器端通过IPC机制交互.在android上面,一个进程一般不能访问另外进程的内存.因此,Android平台将这些跨进程访问的对象分解成操作系统能够识别的简单对象.并为跨应用访问而特殊编排和整理这些对象.用于编排和整理这些对象的代码编写起来十分冗长,所以Android的AIDL提供了相关工具来自动生成这些代码.今天,我们开始AIDL的学习. 简单说明 一,AIDL的定义: 它是一种android内部进程通信接口的描述语言,通过它我们…
服务端: 最终项目结构: 这个项目中,我们将用到自定义类CustomData作为服务端与客户端传递的数据. Step 1:创建CustomData类 package com.ldb.android.example.aidl; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; import java.util.ArrayList; import java.util.Date; impor…
好处:多个应用程序之间建立共同的服务机制,通过AIDL在不同应用程序之间达到数据的共享和数据相互操作, 本文包括: 1 .创建AIDL 服务端.2 .创建AIDL 客户端. 3.客户端调用服务端提供的服务接口. 1.创建AIDL 服务端. 在Android的src中新建IStudentService.aidl package com.example.studentservice; import com.example.studentservice.Student;; interface IStu…
代码地址如下:http://www.demodashi.com/demo/12321.html 原文地址:http://blog.csdn.net/vnanyesheshou/article/details/79047650 AIDL(Android Interface Definition Language)--进程间通信的一种机制.它允许您定义客户端和服务端通过使用进程间通信(IPC)进行通信的编程接口.在Android上,一个进程无法正常访问另一个进程的内存.所以说,他们需要将他们的对象分…
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47071927 在上一篇博文<Android之--AIDL小结>中,我们简介了一下Android AIDL的使用方法,而在这篇博文中.我们将深入解说Android AIDL的使用方法.相同.在这里我们也通过一个小样例来学习Android 中 AIDL的使用方法. 优点:多个应用程序之间建立共同的服务机制.通过AIDL在不同应用程序之间达到数据的共享和数据相互操作. 本文包含: 1…
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 简介: 有的项目需要在Android中加入Unity功能,例如ANDROID应用中嵌入Unity3D视图(展示3D模型) 有的项目需要在Unity中加入Android功能,例如3D语音天气球(源码分享)--创建可旋转的3D球 由于Android中的功能和代码只能当作一个Unity插件,需要在Unity进行最终的Build后生成apk文件运行. 所以无论上面两种情况都涉及了在Unity中加…
Android进程间通信基于Proxy(代理)与Stub(桩或存根)的设计模式(如图1-1所示).其中,Proxy将特殊性接口转换成通用性接口,Stub将通用性接口转换成特殊性接口,二者之间的数据转换通过Parcel(打包)进行的,Proxy常作为数据发送代理,通过Parcel将数据打包发送,Stub常作为数据接收桩,解包并解析Parcel Data package.Android进程间通信就是通过这样的 “代理-桩” 的设计模式运作的. 图 1-1 关于Proxy与Stub注意: Stub 跟…
AIDL是安卓接口定义语言的缩写 由于笔者使用的是android studio所以建立AIDL文件的位置也需要注意,要在APPNAME->main->aidl->packagename目录下,否则无法自动生成接口类文件 首先,编写我们的AIDL文件,定义接口方法,语法与JAVA略有不同 其次,我们要在建立的service类中建立实现了该AIDL文件名.stub类的子类,实现继承的方法. 在onbind方法中返回这个子类的一个实例 注册该服务,并给其一个ACTION,此ACTION就是以后…
aidl:android interface definition language 安卓接口定义语言 在两个不同的应用程序里面使用同一个接口 使用场景:调用支付宝服务进行支付 先写远程服务端Serivice 新建一个AlipayService继承系统Service 在清单文件里面,添加一个<service>节点,为了能够让别人调用,添加一个隐式意图 添加一个意图过滤器<intent-filter>节点,新加一个动作节点<action>设置名称属性android:nam…
1.创建.aidl 文件 AIDL 语法简单,用来声明接口,其中的方法接收参数和返回值,但是参数和返回值的类型是有约束的,且有些类型是需要 import,另外一些则无需这样做. AIDL 支持的数据类型划分为四类,第一类是 Java 编程语言中的基本类型,第二类包括 String.List.Map 和 CharSequence,第三类是其他 AIDL 生成的 interface,第四类是实现了 Parcelable protocol 的自定义类. 其中,除了第一类外,其他三类在使用时均需要特别小…
Android 接口定义语言 (AIDL) AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似. 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口. 在 Android 上,一个进程通常无法访问另一个进程的内存. 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象. 编写执行这一编组操作的代码是一项繁琐的工作,因此 Android 会使用 AIDL 来处理. 注:只有允许不同应用的客户端用 IPC 方…
一.背景 ·1.AIDL出现的原因 在android系统中,每一个程序都是运行在自己的进程中,进程之间无法进行通讯,为了在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界.通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作,实现IPC(进行间的通信)与J2e中的RMI类似. ·2.绑定service 我看了很多人都博客都没有说到这里,其实我个人感觉AIDL就是一个…
Android Service是分为两种: 本地服务(Local Service): 同一个apk内被调用 远程服务(Remote Service):被另一个apk调用 远程服务需要借助AIDL来完成. AIDL 是什么 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码.如果在一个进程中(例如Activi…
Activity aidl接口文件 package com.bqt.aidlservice;  interface IBinderInterface {     /* 更改文件后缀为[.aidl]去掉public等所有修饰符.         更改后,会在gen目录下生成一个同名的.java文件,此java文件中有一个名为[Stub]的内部类,此内部类继承自Binder类且实现了我们这里定义的IBinderInterface接口         此内部类的[asInterface(IBinder…
之前上一篇讲解到本地服务,本地服务只能在自身APP中Activity访问Service,调用Service里面到方法等操作 如果想A应用访问B应用里面的方法,属于跨进程调用,如果Android不特供这种跨进程间通讯等API,是不能实现的 Google Android 为了解决 A应用--->B应用 跨进程访问通讯,提供了一种机制,就是IBInder,这种IBinder机制是Google工程师加入进去的,以前的Linux里是没有这个机制的 bindService 会返回IBinder接口,IBin…
之前上一篇讲解到本地服务,本地服务只能在自身APP中Activity访问Service,调用Service里面到方法等操作 如果想A应用访问B应用里面的方法,属于跨进程调用,如果Android不特供这种跨进程间通讯等API,是不能实现的 Google Android 为了解决 A应用--->B应用 跨进程访问通讯,提供了一种机制,就是IBInder,这种IBinder机制是Google工程师加入进去的,以前的Linux里是没有这个机制的 bindService 会返回IBinder接口,IBin…
一.远程服务主要代码 1.IService.aidl package com.shz.remoteservice; interface IService { String getTicketInfoById(int id); } 编译aidl文件自动生成的IService.java文件(存在于gen目录下) /* * This file is auto-generated. DO NOT MODIFY. * Original file: E:\\Code\\Java\\远程服务\\src\\co…
在Android中,如果我们需要在不同进程间实现通信,就需要用到AIDL技术去完成. AIDL(android Interface Definition Language)是一种接口定义语言,编译器通过*.aidl文件的描述信息生成符合通信协议的Java代码,我们无需自己去写这段繁杂的代码,只需要在需要的时候调用即可,通过这种方式我们就可以完成进程间的通信工作.关于AIDL的编写规则我在这里就不多介绍了,读者可以到网上查找一下相关资料. 接下来,我就演示一个操作AIDL的最基本的流程. 首先,我…
AIDL的使用: 最常见的aidl的使用就是Service的跨进程通信了,那么我们就写一个Activity和Service的跨进程通信吧. 首先,我们就在AS里面新建一个aidl文件(ps:现在AS建aidl不要求和Java包名相同了): package aidl; interface IMyInterface { String getInfor(String s); } 可以看到,在这里面我们就一个方法getInfor(String s),接受一个字符串参数,然后返回一个字符串,相当的简单.…
最近刚开始用Android Studio,出的问题还真不少.昨天不知为何不能新建项目了,这两天重装了几次才搞定. 可又出了这个问题: 原因:Compile Sdk Version和Build Tool Version不匹配.修改步骤如下所示: 把二者的版本选为相同或相近,最后clean一下就行了. 详细说明网址如下: Execution failed for task ':app:compileDebugAidl': aidl is missing http://stackoverflow.co…
原文首发于微信公众号:jzman-blog,欢迎关注交流! 上篇文章中主要介绍从 AIDL 的使用方式以及 Android 开发中不同进程之间的通信,遗留的问题是如何在 AIDL 中使用自定义类型,具体步骤如下: 1. 创建自定义类型 2. 声明自定义类型 3. 定义与自定义类型相关的业务 4. 重写业务实体类 5. 远程调用 6. 验证 AIDL 1. 创建自定义类型 自定义类型传输的就是一个实体对象,这个实体类必须实现 Parcelable 接口,具体如下: // 自定义类型 public…
1.Binder死亡代理     这一节首先将介绍Binder类中比较重要的两个方法linkToDeath和unlinkToDeath.我们知道Binder是运行在服务进程,若服务端进程因为某种原因“死亡”,那么Binder对象也将随之而去,因为Binder对象是寄宿在服务端进程中的,这个时候我们的远程调用将会失败,客户端进程的功能也将受到影响.Binder类提供linkToDeath方法在客户端可以设置死亡代理,当服务端的Binder对象“死亡”,客户端可以受到死亡通知,这个时候我们可以重新恢…
跨应用绑定Service并通信: 1.(StartServiceFromAnotherApp)AIDL文件中新增接口: void setData(String data); AppService文件中实现接口: public IBinder onBind(Intent intent) { return new IAppServiceRomoteBinder.Stub() { @Override public void basicTypes(int anInt, long aLong, boole…
AIDL(Android Interface Definition Language)--安卓接口定义语言 一.startService/stopService 1.同一个应用程序启动Service: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startService(new Int…
Android 环境搭建步骤 这里简单介绍一下学习Android之后如何搭建环境的问题 一.    在搭建环境之前,首先你要先下载Java JDK(根据系统位数选择下载是64位或32位的),Eclipse,Android,ADT插件,然后把JavaJDK的系统环境搭建好(这些下载地址网上有,可以自己去找). 二.    在系统上配置JavaJDK的系统变量 首先我们需要设置JDK的两个系统变量,分别为JAVA_HOME,Path两个.(这个两个变量怎么设置,网上也有,在这就不再赘述) 三.   …
添加资源后编译步骤 1:lunch 112:mmm frameworks/base/core/res/生成Install: out/target/product/hammerhead/system/framework/framework-res.apk3: mmm frameworks/base生成Install: out/target/product/hammerhead/system/framework/framework2.jarInstall: out/target/product/ha…
原文网址:http://blog.csdn.net/lianchen/article/details/48038969 Android开发中难免遇到需要自定义控件的需求,有些是产品的要求在Android标准控件库中没有满足要求的,有些是开发过程中没有代码的可复用,自己定义的. 一个好的自定义控件应当和Android本身提供的控件一样,封装了一系列的功能以供开发者使用,不仅具有完备的功能,也需要高效的使用内存和CPU.Android本身提供了一些指标:1. 应当遵守Android标准的规范(命名,…
下面的方法我已经尝试过,完全可以成功,重点的步骤我在这里说一下 1.必须要有java环境,记得配置好环境变量 2.如果只查看class中的函数文件,只需要下载dex2jar和jd-gui 3.下载地址 dex2jar:http://code.google.com/p/dex2jar/downloads/list jd-gui:http://dl.iteye.com/topics/download/b99d0351-87d8-3ed1-a875-441e0eea0ce4 下载链接http://fi…