WEB开发网
开发学院手机开发Android 开发 Android 进程间服务通信 阅读

Android 进程间服务通信

 2010-04-12 03:39:00 来源:WEB开发网   
核心提示:两个进程间的Service需要进行通信,则需要把对象序列化后进行互相发送,Android 进程间服务通信,Android 提供了一个 AIDL (Android接口定义语言)工具来处理序列化和通信,这种情况下Service需要以aidl文件的方式提供服务接口,Service的实现类需要去继承这个 stub服务桩类,Se

两个进程间的Service需要进行通信,则需要把对象序列化后进行互相发送。

Android 提供了一个 AIDL (Android接口定义语言)工具来处理序列化和通信。这种情况下Service需要以aidl文件的方式提供服务接口,AIDL工具将生成一个相应的 java接口,并且在生成的服务接口中包含一个功能调用的stub服务桩类。Service的实现类需要去继承这个 stub服务桩类。Service的onBind方法会返回实现类的对象,之后你就可以使用它了.现在来实现一个HelloWorld级的服务以及在 Activity中使用这个服务。步骤如下:

1.编写aidl文件,在这个文件中提供了服务所提供的方法的接口,文件的扩展名为aidl,在我们的示例中命名为IDataTimeService.aidl文件的内容为如下所示:

Java代码

package com.services.demo2;

// Declare the interface.

interface IDataTimeService {

String getCurrentDataTime();

}

Java代码

package com.services.demo2;

// Declare the interface.

interface IDataTimeService {

String getCurrentDataTime();

}

package com.services.demo2;

// Declare the interface.

interface IDataTimeService {

String getCurrentDataTime();

}

2.编写服务的实现类,在这个示例中为DataTimeService.java,内容如下:

Java代码

复制代码

public class DataTimeService extends Service{

public static final String BROADCAST_ACTION = "com.services.demo2.DataTimeServiceEvent";

/**

使用上面定义的字符串常量创建一个Intent的实例,如果服务在运行的过程中发生的事件都可以通过Service的

sendBroadcast(broadcast)方法来发送一个广播消息通知Activity,然后有Activity注册的接收者进行处理;

*/

private Intent broadcast = new Intent(BROADCAST_ACTION);

sendBroadcast(broadcast);

private final IDataTimeService.Stub binder = new IDataTimeService.Stub()

1 2 3 4  下一页

Tags:Android 进程 服务

编辑录入:coldstar [复制链接] [打 印]
赞助商链接