http://linconz.net/archives/229.html
http://linconz.net/archives/314.html
首先建立一个ICallback.aidl文件,作为Activity中的回调方法
- package com.zhang.test.service;
-
- interface ICallback {
- void showResult(int result);
- }
然后再建立一个IService.aidl用来在Activity中接收Service回调,以及在Service中onBind时返回的Binder
注意:aidl中import不能写com.xxx.*,要写全类的路径
- package com.zhang.test.service;
-
- import com.zhang.test.service.ICallback;
-
- interface IService {
- void registerCallback(ICallback cb);
- void unregisterCallback(ICallback cb);
- }
接下来是service:
MainService.java
- package com.zhang.test.service;
-
- import android.app.Service;
- import android.content.Intent;
- import android.os.Handler;
- import android.os.IBinder;
- import android.os.Message;
- import android.os.RemoteCallbackList;
- import android.os.RemoteException;
- import android.util.Log;
-
- public class MainService extends Service {
-
- private static final String TAG = "MainService";
-
- private RemoteCallbackList<icallback> mCallbacks = new RemoteCallbackList<icallback>();
-
- private IService.Stub mBinder = new IService.Stub() {
-
- @Override
- public void unregisterCallback(ICallback cb){
- if(cb != null) {
- mCallbacks.unregister(cb);
- }
- }
-
- @Override
- public void registerCallback(ICallback cb){
- if(cb != null) {
- mCallbacks.register(cb);
- }
- }
- };
-
- @Override
- public IBinder onBind(Intent intent) {
- Log.d(TAG, "onBind");
- return mBinder;
- }
-
- @Override
- public void onCreate() {
- Log.d(TAG, "onCreate");
-
-
-
- mHandler.sendEmptyMessageDelayed(0, 1000);
- super.onCreate();
- }
-
- @Override
- public void onDestroy() {
- mHandler.removeMessages(0);
- mCallbacks.kill();
- super.onDestroy();
- }
-
- private void callBack() {
- int
分享到:
相关推荐
本文将深入探讨如何在Activity中使用AIDL来让Service与Activity进行通信。 首先,我们需要了解AIDL的基本概念。AIDL是一种特殊的接口定义语言,它允许Android系统生成必要的Java绑定类和代理对象,以便在不同的进程...
本示例“android 本地服务通信 AIDL service服务与activity之间的通信”通过一个学号查询学生的例子,清晰地展示了如何利用AIDL实现在Activity和Service之间的数据传递。 首先,我们需要了解AIDL的基本概念。AIDL...
当一个Service在不同的进程中运行时,如果需要与Activity通信,就需要使用AIDL来定义接口并实现跨进程调用。 下面是一步步实现AIDL Demo的过程: 1. **创建AIDL接口**: 在项目的`src/main/aidl`目录下创建一个新...
本篇将深入探讨Activity和Service的生命周期以及如何利用Android Interface Definition Language (AIDL)进行进程间通信。 Activity是Android应用程序的用户界面,它负责与用户交互。Activity的生命周期分为几个关键...
总结,通过AIDL,我们可以使Service与Activity在不同进程中相互通信,实现跨进程调用。同时,Service还可以通过Intent启动Activity。在实际开发中,需要注意跨进程通信的安全性和效率,合理设计接口,以提供高效且...
AIDL(Android Interface Definition Language)是Android系统提供的一种接口定义语言,用于在不同进程间进行通信,特别是当服务(Service)需要与客户端(如Activity)跨进程交互时。AIDL帮助开发者定义接口,使得...
AIDL是用来定义接口的,这些接口可以让一个Android进程调用另一个进程中对象的方法,从而实现跨进程通信。通常,AIDL用于服务(Service)与客户端(如Activity)之间的数据交换。在单向通信中,服务执行某些操作并...
描述 :整理了下android中的aidl, 项目中主要是用作于Activity和Service之间进行跨进程的通信和调用,定义了几种基本类型的接口,其中涵盖了自定义参数类型的传递。 注意: 解压后有两个android程序,一个client端 ...
本示例将深入探讨这个主题,帮助开发者更好地掌握Android中的Service和Activity通信机制。 首先,我们要了解Service的基本概念。Service是一种没有用户界面的组件,它可以在后台运行,执行任务,如播放音乐、处理...
本篇文章将深入探讨如何在Android Studio中使用AIDL来实现跨进程通信。 首先,我们需要理解AIDL的基本概念。AIDL是一种接口定义语言,它允许开发者声明服务端提供的接口,客户端通过这些接口调用服务端的方法,实现...
本文将详细讲解如何在Android中通过Messenger实现在Activity和Service之间的通信。 Messenger是一种轻量级的IPC机制,它基于Handler和Message,允许两个不同进程中的对象之间发送消息。在这个例子...
在Android系统中,AIDL(Android Interface Definition Language)是用于定义跨进程通信(IPC, Interprocess Communication)接口的一种语言。通过AIDL,开发者可以创建服务(Service),使得其他应用程序组件能够与...
在Android开发中,Activity与Service之间的通信是应用中常见的需求,尤其当Service运行在远程进程中时,这种通信机制显得尤为重要。AIDL(Android Interface Definition Language)是Android提供的一种接口定义语言...
3. Activity绑定Service并使用Binder:在Activity中,我们可以通过bindService()方法绑定到Service,并在onServiceConnected()回调中获取到Binder对象。之后就可以调用Service中定义的方法了。 ```java public ...
二、Service与Activity通信方式 1. startService(): 当Activity启动Service时,可以通过Intent传递数据。Service在onStartCommand()方法中接收这些数据,处理完任务后通过BroadcastReceiver或者返回结果到调用start...
Android AIDL(Android Interface Definition Language)是Android系统提供的一种接口定义语言,用于处理不同进程间的通信(IPC: Interprocess Communication)。在Android应用开发中,当需要在不同的应用程序组件...
总结起来,AIDL在Android System Service架构中扮演着桥梁的角色,它使得系统服务能够跨越进程边界,为整个Android生态系统提供稳定且高效的通信机制。通过对AIDL的深入理解和应用,开发者可以充分利用系统服务的...
在Android系统中,AIDL(Android Interface Definition Language)是一种用于实现进程间通信(Inter-Process Communication, IPC)的工具。AIDL使得不同进程间的组件能够相互通信,即便它们运行在不同的应用程序或...
通过以上步骤,我们实现了Activity与Service之间的简单通信,展示了如何使用IBinder和AIDL实现进程间的通信过程。 #### 五、总结 Android的IPC机制是其架构设计中的一个重要组成部分,它不仅提高了应用的安全性和...