WEB开发网
开发学院手机开发Android 开发 Android 实例展现如何不同程序间的Serivce调用 阅读

Android 实例展现如何不同程序间的Serivce调用

 2010-09-15 00:10:00 来源:WEB开发网   
核心提示:-首届Google暑期大学生博客分享大赛——2010 Andriod篇一般使用Service都是实现一个服务,如果说这个服务只是为了自己的那个应用程序其实是大材小用,Android 实例展现如何不同程序间的Serivce调用,在Android 中提供了很好的Service的调用方法称之为AIDL,扩展这个功能, 简单的
  -----首届Google暑期大学生博客分享大赛——2010 Andriod篇

一般使用Service都是实现一个服务,如果说这个服务只是为了自己的那个应用程序其实是大材小用,在Android 中提供了很好的Service的调用方法称之为AIDL。扩展这个功能,只要一个提供了一个AIDL接口,那么我就能使用这个Service。不管他是是不是自己写的Service。

设计是这样的有A、B两个程序,A程序使用startService开始一个Service并且在A程序退出后Service也能继续,在Service创建之前A程序会往Service里放一个字符串,而这个Service的作用就是为了给其他程序提供这个字符串。B程序启动之后会绑定A程序里的Service。并且获得Service中的字符串并显示。 简单的框图如下

如图所示使用AIDL是可以跨程序来访问Service的。(com.shinestudio.demo.service 不同于 com.shinestudio.demo.reademo 所属不同的包 图里多了个点 不好意思)

下面是整个构建的过程

第一步 写AIDL文件

关于AIDL的简述网上摘的 读者大致了解一下

AIDL语法很简单,可以用来声明一个带一个或多个方法的接口,也可以传递参数和返回值。由于远程调用的需要, 这些参数和返回值并不是任何类型.下面是些AIDL支持的数据类型:

1. 不需要import声明的简单Java编程语言类型(int,boolean等)

2. String, CharSequence不需要特殊声明

3. List, Map和Parcelables类型, 这些类型内所包含的数据成员也只能是简单数据类型, String等其他比支持的类型. ((另外: 我没尝试Parcelables, 在Eclipse+ADT下编译不过, 或许以后会有所支持).

下面是AIDL语法:

// 文件名: SomeClass.aidl

// 文件可以有注释, 跟java的一样

// 在package以前的注释, 将会被忽略.

// 函数和变量以前的注释, 都会被加入到生产java代码中.package com.cmcc.demo;

interface ITaskBinder {

//函数跟java一样, 可以有0到多个参数 ,可以有一个返回值

boolean isTaskRunning();

void stopRunningTask();

//参数可以是另外的一个aidl定义的接口

void registerCallback(ITaskCallback cb);

1 2 3 4 5 6  下一页

Tags:Android 实例 展现

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