注:本例子是在Android-OPhone开发完全讲义中的基础上修改而来,若有不对,请多指教。
这里主要讲解一下服务器端回调客户端的步骤:
1、写一个ITaskCallback.aidl文件,该文件中定义了一些需要服务器端调用的函数接口
2、写一个IMyService.aidl文件,里面加两个接口用于注册和取消ITaskCallback.aidl文件中定义的接口
void registerCallback(ITaskCallback cb);
void unregisterCallback(ITaskCallback cb);
3、定义MyService类,该类继承Service,在该类中定义RemoteCallbackList变量,用于注册ITaskCallback对象,这样服务器端才知道哪些函数可以调用;在该类中还要定义一个MyServiceImpl继承IMyServcie.Stub,并实现registerCallback()和unregisterCallback()方法。
4、在客户端实现ITaskCallback接口(当然先要把ITaskCallback.aidl文件及其目录copy到客户端工程中)
private ITaskCallback mCallback = new ITaskCallback.Stub() {
@Override
public void clientTackCallBack(int actionId) throws RemoteException {
Log.i(TAG, "actionId :" + actionId);
}
};
5、在客户端取得MyService后注册ITaskCallback:
myService.registerCallback(mCallback);
6、在服务器端MyService中回调客户端的函数
void callback(int startId) {
final int N = mCallbacks.beginBroadcast();
Log.i(TAG, "mCallbacks.beginBroadcast() :" + N);
for (int i = 0; i < N; i++) {
try {
mCallbacks.getBroadcastItem(i).clientTackCallBack(startId);
} catch (RemoteException e) {
// The RemoteCallbackList will take care of removing
// the dead object for us.
}
}
mCallbacks.finishBroadcast();
}
完整代码请看附件,ch08_complextypeaidl是服务器端,ch08_complextypeaidlclient是客户端。
分享到:
相关推荐
《Android AIDL应用技术研究》 Android AIDL(Android Interface Definition Language)是Android系统提供的一种接口描述语言,用于实现不同进程间的通信。AIDL允许开发者定义接口,使得应用程序的组件,如Activity...
在Android系统中,进程间通信(IPC,Inter-Process Communication)是实现不同应用程序之间数据交换的关键技术。Android Aidl(Android Interface Definition ...理解和掌握Aidl对于开发复杂的Android应用至关重要。
在Android平台上,WPS Office是一款广泛使用的办公软件,支持创建、编辑和查看各种文档。而AIDL(Android Interface Definition Language...理解并熟练掌握AIDL调用,对于开发高效、稳定的Android第三方应用至关重要。
**Android AIDL(Android Interface Definition Language)详解** 在Android系统中,进程间的通信(IPC, Inter-Process Communication)是...掌握AIDL的使用,对于开发大型的、需要多进程协作的Android应用至关重要。
通过aidl,我们可以方便地定义接口,实现进程间的交互,使得Android应用能够灵活地扩展其功能,与其他应用或系统组件协同工作。同时,理解Binder的工作流程也有助于优化性能,避免不必要的资源消耗。在实际项目中,...
在Android开发中,AIDL(Android Interface Definition Language)是一种用于进程间通信(Inter-Process Communication, IPC)的工具,使得不同应用之间的服务可以共享数据和功能。本示例"android AidlDemo(简单aidl...
Android AIDL(Android Interface Definition Language)是一种基于接口定义语言,用于定义 Android 应用程序之间的接口。AIDL 文件是用于定义服务端和客户端之间的接口,用于实现远程过程调用(RPC)。但是, 当...
在Android应用开发中,AIDL(Android Interface Definition Language)是一种强大的工具,用于实现跨进程通信(IPC,Inter-Process Communication)。当我们需要在一个Activity中调用另一个进程中服务的方法时,AIDL...
在Android应用开发中,当需要在不同进程之间共享数据或调用服务时,AIDL就显得尤为重要。这个"android AIDL 完整DEMO"应该包含了一个完整的示例,帮助开发者理解并实践AIDL的使用。 首先,让我们深入了解一下AIDL的...
总结一下,Android AIDL是实现进程间通信的关键技术,它使得Android应用的组件可以跨越进程边界,进行数据交换和方法调用。理解并熟练使用AIDL,对于开发涉及多个组件协作的复杂应用至关重要。通过以上步骤,你可以...
Android AIDL(Android Interface Definition Language)是Android系统提供的一种接口定义语言,用于实现不同应用程序进程间的通信(IPC,Inter-Process Communication)。AIDL允许我们定义服务和服务客户端之间交互...
总的来说,AIDL在Android开发中扮演着重要的角色,它是实现跨进程通信的关键工具,让不同组件可以相互协作,提升了Android应用的灵活性和可扩展性。通过分析`AidlServer`和`AidlClient`的代码,开发者可以深入理解...
在Android应用开发中,当需要在不同进程间共享数据或者调用服务时,AIDL就显得尤为重要。下面将详细讲解AIDL的基本概念、工作原理以及如何创建和使用AIDL接口。 ### 一、AIDL基本概念 1. **进程间通信(IPC)**:...
AIDL使得不同进程间的组件能够相互通信,即便它们运行在不同的应用程序或不同的Android进程中。这个例子将深入探讨如何在实际开发中运用AIDL。 首先,我们来理解AIDL的基本概念。AIDL文件是一种定义接口的文本文件...
AIDL(应用程序接口定义语言)是Android系统提供的一种机制,允许不同进程间的应用程序进行通信。在Android系统中,由于默认每个应用程序都运行在自己的进程中,因此,当需要一个应用调用另一个应用的服务时,就需要...
而Android Interface Definition Language(AIDL)是Google提供的一种用于处理进程间通信的语言,它允许应用程序之间透明地交换数据。当我们需要在不同的应用之间传递复杂的对象时,AIDL就显得尤为重要。本文将深入...
在这个"Android Aidl 测试Demo"中,包含了服务端(AidlServer)和客户端(AidlClient)的示例,帮助开发者更好地理解和应用Aidl。 首先,让我们详细了解一下服务端(AidlServer): 1. **创建AIDL接口**:在...
AIDL就是为此设计的,它允许我们在Android应用之间定义接口,使服务可以被其他应用透明地调用。 创建AIDL文件的步骤如下: 1. **定义接口**:在项目的src/main/aidl目录下创建一个新的AIDL文件,例如`...
总结来说,AIDL是Android中不可或缺的一部分,它使得开发者能够创建强大的多组件应用,即使这些组件运行在不同的进程中。理解和掌握AIDL的使用,对于提升Android应用的复杂性和可扩展性具有重要意义。通过分析和实践...
在Android平台上,应用程序间通信(IPC,Inter-Process...通过深入研究这个“Android AIDL示例代码.zip”,开发者不仅能掌握AIDL的基础用法,还能进一步理解Android系统的架构,以及如何利用AIDL优化多进程应用的设计。