`
zhengjj_2009
  • 浏览: 153125 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

项目使用AIDL实现进程通信

 
阅读更多

基本步骤

remoteService

1、生成aidl文件(先生成java的接口文件,修改后缀名为aidl,去掉public)

 

2、定义业务服务StudentQueryService及其内部类StudentQueryBinder

 

3、实现StudentQueryService的onBind()和query()

 

4、在manifest中配置服务信息

=====================================================

实现的代码

1、生成aidl文件

interface StudentQuery {
	String queryStudent(int number);
}

 

2、定义业务服务StudentQueryService及其内部类StudentQueryBinder

public class StudentQueryService extends Service {
	private final class StudentQueryBinder extends StudentQuery.Stub{
		public String queryStudent(int number) throws RemoteException {			
			return query(number);
		}		
	}
}

 

3、实现StudentQueryService的onBind()和query()

 

@Override
	public IBinder onBind(Intent intent) {
		return binder;
	}
	private String query(int number){
		if(number > 0 && number < 4){
			return names[number - 1];
		}
		return null;
	}

 

4、在manifest中配置服务信息

       <service android:name=".StudentQueryService">
            <intent-filter >
                <action android:name="com.peter.remoteservice.queryinfo"/>                
            </intent-filter>            
        </service>

 

==========================================================

 

remoteServiceClient的基本操作和实现代码

基本操作

1、新建工程和Activity, copy刚才的aidl文件到src下

 

2、在Activity中添加StudentQuery属性,新建内部类StudentConnection

 

3、实现onCreate() onDestroy()、按钮处理事件、业务逻辑方法等

 

----------------------------------------------------------------------------------------------------

实现代码

2、在Activity中添加StudentQuery属性,新建内部类StudentConnection

private StudentQuery studentQuery;
private final class StudentConnection implements ServiceConnection {
		public void onServiceConnected(ComponentName name, IBinder service) {
			studentQuery = StudentQuery.Stub.asInterface(service);
		}
		public void onServiceDisconnected(ComponentName name) {
			studentQuery = null;
		}
	}

 

3、实现onCreate() onDestroy()、按钮处理事件、业务逻辑方法等

@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		numberText = (EditText) this.findViewById(R.id.number);
		resultView = (TextView) this.findViewById(R.id.resultView);
		Intent intent = new Intent("com.peter.remoteservice.queryinfo");
		bindService(intent, conn, BIND_AUTO_CREATE);
	}

	public void queryStudent(View v) {
		String number = numberText.getText().toString();
		int num = Integer.valueOf(number);
		try {
			resultView.setText(studentQuery.queryStudent(num));
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}

	@Override
	protected void onDestroy() {
		unbindService(conn);
		super.onDestroy();
	}

 

分享到:
评论

相关推荐

    使用 AIDL实现进程间通信

    这篇博文“使用AIDL实现进程间通信”详细介绍了如何利用AIDL进行跨进程的数据交换。 首先,理解AIDL的基本概念至关重要。AIDL本质上是一种简单的接口定义语言,它允许开发者定义在两个不同进程之间传递的数据类型和...

    Android使用AIDL实现跨进程通信

    AIDL(Android Interface Definition Language)是Android提供的一种工具,用于方便开发者实现跨进程通信。AIDL使得服务端(服务提供者)可以定义一套接口,客户端(服务使用者)通过这个接口调用服务端的方法,从而...

    android aidl跨进程通信

    在Android系统中,AIDL(Android Interface Definition Language)是一种强大的工具,用于实现应用程序间的跨进程通信(IPC,Inter-Process Communication)。AIDL使得一个应用能够暴露其服务给其他应用,即使这些...

    Android使用AIDL实现进程间通信

    本篇文章将深入探讨如何在Android中使用AIDL来实现进程间通信。 首先,理解AIDL的基本概念。AIDL是一种接口定义语言,类似于Java中的接口,但它的目的是跨越进程边界。通过AIDL,我们可以定义一个接口,该接口会被...

    使用aidl实现跨进程通信(ipc)

    代码中包含两个应用程序,两者之间通信采用aidl方案实现 使用方法:将下载下来的图片后缀名改为.zip,再解压即可得到源代码

    Android Studio AIDL实现跨进程通信

    本篇文章将深入探讨如何在Android Studio中使用AIDL来实现跨进程通信。 首先,我们需要理解AIDL的基本概念。AIDL是一种接口定义语言,它允许开发者声明服务端提供的接口,客户端通过这些接口调用服务端的方法,实现...

    aidl实现跨进程通信Demo(进阶版)

    总结起来,这个"aidl实现跨进程通信Demo"是一个很好的学习资源,它演示了如何利用AIDL和Binder实现高效、可靠的Android进程间通信。通过对这个Demo的深入理解和实践,开发者可以更好地掌握Android系统的多组件协作和...

    使用AIDL实现进程通信

    在Android中,如果我们需要在不同进程间实现通信,就需要用到AIDL技术去完成。 AIDL(Android Interface Definition Language)是一种接口定义语言,编译器通过*.aidl文件的描述信息生成符合通信协议的Java代码,...

    android开发使用aidl进行跨进程通信demo

    Android Interface Definition Language(AIDL)是Android提供的一种原生接口,它允许开发者定义服务接口,使得其他进程可以调用这些服务,实现跨进程通信。本教程将深入讲解如何使用AIDL在Android开发中构建一个...

    android aidl 不同进程间通信

    虽然Aidl提供了强大的进程间通信能力,但它相比本地方法调用有一定的性能开销,因为涉及到数据的序列化和跨进程通信。此外,Aidl不支持所有Java数据类型,如自定义对象,需要额外实现Parcelable接口。 **8. 其他IPC...

    android通过aidl实现进程通信

    本文将深入探讨如何使用AIDL在Android应用程序中实现实现进程通信。 **AIDL简介** AIDL是Android平台特有的接口定义语言,它允许开发者定义简单的接口,这些接口可以被其他进程调用。当一个服务(Service)在不同的...

    使用AIDL实现进程间的图像

    在Android系统中,进程间通信(IPC,Inter-Process Communication)是...在实际项目中,根据需求选择合适的数据传输方式,结合其他IPC机制,如Binder、ContentProvider等,可以构建出高效稳定的跨进程通信解决方案。

    AIDL进程间通信demo

    AIDL(Android Interface Definition Language)是Android提供的一种用于实现进程间通信的工具,它允许开发者定义接口,使得服务能够被其他应用调用,即便这些应用运行在不同的进程中。** ### AIDL简介 AIDL是一种...

    AIDL实现跨进程通信(一)

    本篇文章将深入探讨如何使用AIDL来实现跨进程通信,主要分为以下几个部分: 1. **AIDL简介**: AIDL是Android特有的一种接口定义语言,它的作用类似于Java中的接口,但主要用于解决进程间通信的问题。通过AIDL,...

    Android AIDL跨进程通信

    总结起来,这个"Android AIDL跨进程通信"的示例展示了如何使用AIDL来实现Android应用间的通信。通过定义接口、实现接口、注册服务、绑定服务以及调用服务方法,我们可以让不同进程的应用之间共享数据和功能,这对于...

    使用AIDL完成进程间的简单通信

    此外,由于跨进程通信涉及系统层面的Binder机制,因此在处理过程中可能会遇到远程方法调用(Remote Method Invocation, RMI)的性能问题,需要谨慎设计接口和数据交换方式。 总之,AIDL是Android系统提供的强大工具...

    使用AIDL实现进程间通讯简单案例

    本案例"使用AIDL实现进程间通讯简单案例"提供了两个模块:aidl_C(客户端)和aidl_S(服务端),展示了如何通过AIDL进行简单的数据传输。 首先,我们需要理解AIDL的基本概念。AIDL文件本质上是接口定义,它定义了...

    Android 使用AIDL跨进程通信--传递自定义对象

    本文将深入探讨如何使用AIDL在Android中实现跨进程通信,特别是如何传递自定义对象。 首先,我们需要理解AIDL的基本概念。AIDL是一种类似Java的接口定义语言,它允许我们声明方法签名,包括参数类型和返回值类型。...

    intent messenger aidl实现进程间通信.zip

    AIDL是Android提供的用于定义接口的工具,用于实现更复杂的进程间通信。通过AIDL,开发者可以定义接口,指定方法及参数,系统会自动生成对应的Binder代理类和Stub类。服务端通过Stub类暴露接口,客户端通过调用代理...

Global site tag (gtag.js) - Google Analytics