客户端
1.manifest.xml中添加
<!-- AIDL完整路径名。必须指明,客户端能够通过AIDL类名查找到它的实现类 -->
(1)<uses-permission android:name="com.androd.roteservicename.PERMISSION"/>
(2)<action android:name="com.android.roteservicename" />
2.在代码中添加
ServiceConnection conn;
Service mService;
conn = new ServiceConnection() {
public void onServiceConnected(ComponentName name,
IBinder service) {
Log.i(TAG, "Service bound ");
mService = ServiceBinder.Stub.asInterface(service);
}
public void onServiceDisconnected(ComponentName arg0) {
Log.i(TAG, "Service Unbound ");
mService = null;
}
};
bindService(new Intent("aidl目录+servicename"), conn,
Context.BIND_AUTO_CREATE);
}
3.使用时直接调用
mService
服务器端
4.举例介绍
ItestService.aidl内容如下
package com.lifeblood;
// See the list above for which classes need
// import statements (hint--most of them)
// Declare the interface.
interface ITestService {
// Methods can take 0 or more parameters, and
// return a value or void.
int getAccountBalance();
void setOwnerNames(in List<String> names);
// Methods can even take other AIDL-defined parameters.
//BankAccount createAccount(in String name, int startingDeposit, in IAtmService atmService);
// All non-Java primitive parameters (e.g., int, bool, etc) require
// a directional tag indicating which way the data will go. Available
// values are in, out, inout. (Primitives are in by default, and cannot be otherwise).
// Limit the direction to what is truly needed, because marshalling parameters
// is expensive.
int getCustomerList(in String branch, out String[] customerList);
void showTest();
}
java中调用时
public class TestService extends Service {
private Context mContext = null;
//实现AIDL接口中各个方法
private ITestService.Stub binder = new Stub(){
private String name = null;
public int getAccountBalance() throws RemoteException {
// TODO Auto-generated method stub
return 100000;
}
public int getCustomerList(String branch, String[] customerList)
throws RemoteException {
// TODO Auto-generated method stub
customerList[0] = name;
System.out.println("Name:"+branch);
return 0;
}
public void setOwnerNames(List<String> names) throws RemoteException {
// TODO Auto-generated method stub
name = names.get(0);
System.out.println("Size:"+names.size()+"=="+names.get(0));
}
public void showTest() throws RemoteException {
// TODO Auto-generated method stub
Intent intent = new Intent(mContext, AidlTtest.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
};
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
mContext = this;
return binder; //返回AIDL接口实例化对象
}
}
分享到:
相关推荐
Web Service 远程调用技术 Web Service 是一种跨编程语言和跨操作系统平台的远程调用技术,通过 SOAP 在 Web 上提供的软件服务,使用 WSDL 文件进行说明,并通过 UDDI 进行注册。XML 是 Web Service 的基础,它是...
本压缩包"安卓AIDL相关-AIDLService远程调用例子"提供了一个服务端(Server)与客户端(Client)的示例,帮助开发者理解并掌握AIDL的使用。 首先,我们需要了解AIDL的基本概念。AIDL文件本质上是定义了一组接口,...
- 对于Java接口远程调用,通常会封装成服务类,如`RemoteRequestServiceImpl.java`和`RemoteRequetService.java`中的实现。服务类中会包含执行HTTP请求的方法,可能包括设置请求头、处理响应等逻辑。 4. **使用库...
Spring Cloud Feign 实现远程调用服务传输文件的方法 在微服务架构中,服务之间的调用和文件传输是非常常见的场景。Spring Cloud Feign 是一个基于 Java 的声明式 RESTful 客户端,提供了一种简单、可靠的方式来...
Spring框架的一大特色就是其远程调用能力,这使得分布式系统的开发变得更加便捷。本实例将深入探讨Spring的远程调用功能,通过一个简单的例子来帮助理解其工作原理和实施步骤。 首先,我们要明确Spring远程调用...
今天我们将聚焦于Service组件,特别是如何实现远程调用。Service是Android系统中一种后台运行的服务,它不提供用户界面,但可以在后台执行长时间的任务,如音乐播放或网络通信。 在"android基础知识05:四大组件之...
HttpInvokerServiceExporter会自动处理请求的序列化和反序列化,使得远程调用过程简化。 1. **服务提供者端配置**:在服务端,你需要创建一个实现了特定业务接口的bean,并使用HttpInvokerServiceExporter来暴露这...
在"AIDLService,远程调用例子"这个项目中,我们将深入理解AIDLService的工作原理,通过服务端和客户端两个工程文件的实践,来探讨如何实现这种跨进程的通信。 **一、AIDL的基本概念** AIDL是Android特有的接口定义...
在分布式系统中,远程调用是一个常见需求,允许不同的服务之间进行通信。本篇文章将详细探讨如何在Spring框架下实现基于HTTP的远程调用。 首先,我们需要理解什么是Spring远程调用。Spring Remote提供了一种机制,...
远程调用技术是分布式系统中不可或缺的一部分,它允许不同计算机之间的程序进行通信和协作,实现数据交换和服务共享。代码追踪在此领域中起着至关重要的作用,帮助开发者理解、调试和优化远程调用的过程。以下是对...
"c# 实现远程调用(rpc) remoting"是C#的一个关键特性,它允许对象在不同的进程甚至不同的计算机之间进行通信,仿佛它们是在同一个内存空间内操作。这个主题涉及到分布式系统开发,对于理解跨进程通信和提升系统的可...
本实例将详细介绍如何在Android中实现远程Service调用,主要涉及AIDL(Android Interface Definition Language)以及Parcelable接口的使用。 **1. Android远程Service** 远程Service是Android系统中实现不同应用...
远程调用是这种开发中的关键技术之一,它允许不同的进程或计算机之间进行通信,共享数据和服务。本实例将深入探讨如何在 Visual Studio 2005 中实现分布式系统中的远程调用。 首先,让我们理解分布式系统的基本概念...
1. **创建服务接口**:首先定义一个服务接口,这个接口将被远程调用。例如,我们有一个名为`UserService`的接口,其中包含用户管理的相关方法,如`getUserById`和`saveUser`。 ```java public interface ...
接下来,`getMemberAccountCount`方法实现了远程调用逻辑,通过`this.ref.invoke`方法调用了远程方法,并处理了可能抛出的异常。 #### 2. 客户端代码分析 客户端通过`Naming.lookup`方法获取远程服务的引用,然后...
3. **服务消费者(ServiceConsumer)**:从服务注册中心获取服务接口的引用,实现远程调用。 4. **代理类(Proxy Class)**:动态生成的类,实现了服务接口,内部调用RPC框架的调用逻辑。 5. **调用处理(Invocation...
远程调用是分布式系统中的关键技术,它允许不同的计算资源(如服务器、进程或服务)之间进行通信和数据交换,仿佛它们是在同一台机器上运行。这一技术在大型网络应用、微服务架构以及云计算环境中尤为常见。现在,...
当我们谈论"jboss远程调用JMX"时,我们关注的是如何通过网络从一个JMX客户端连接到运行在JBoss服务器上的JMX服务,以便进行远程管理和监控。 首先,我们需要了解JMX的基本概念。MBean是JMX的核心,它是一个Java对象...
远程接口定义了可供远程调用的方法,它必须继承自`java.rmi.Remote`接口。远程对象则是实现了这个远程接口的类实例,它驻留在服务器端,负责处理客户端的调用请求。RMI通过Java序列化机制将方法调用和参数封装成消息...