下载此文档

服务Service- Remote Service(精选).doc


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
服务Service- Remote Service
分类: Andriod 2012-09-29 09:36 572人阅读评论(1) 收藏举报
之前所谈的Service属于Local Service,即Service和Client在同一进程内(即同一application内),Service的生命周期服从进程的生命周期。在实际应用上,有时希望Service作为后台服务,不仅被同一进程内的activity使用,也可被其他进程所使用,针对这种情况,需要采用bindService,也就是Remote Service的方式。
在Android中,不同app属不同进程(process),进程是安全策略的边界,一个进程不能访问其他进程的存储(例如采用ContentProvider)。在Remote Service中将涉及进程间通信,也就是通常讲的IPC(mnication),需要在进程A和进程B之间建立连接,以便进行相互的通信或数据传递。
Android提供AIDL(Android Interface Definition Language)工具帮助IPC之间接口的建立,大大地简化了开发者视图。右示意图仅用于帮助理解代码。通过下面的步骤实现client和service之间的通信:
【1】定义AIDL接口,Eclipse将自动为Service建立接口IService
【2】Client连接Service,连接到IService暴露给Client的Stub,获得stub对象;换句话,Service通过接口中的Stub向client提供服务,。 
【3】Client和Service连接后,Client可向使用本地方法那样,。
下面的例子给出client从提供定时计数的Remote Service,称为TestRemoteService,中获得服务的例子。
步骤1:通过AIDL文件定义Service向client提供的接口,
.;
interface ITestRemoteService {
    int getCounter();
}
我们在src的目录下添加一个I<ServiceClassName>.aidl文件,语法和java的相同。在这个例子中Service很简单,只提供计数器的值,故在接口中我们定义了int getCounter( )。
AIDL文件很简单,Eclipse会根据文件自动生成相关的一个java interface文件,不过没有显示出来,如果直接使用命令行工具会帮助生成java文件。
步骤2:Remote Service的编写,通过onBind(),在client连接时,传递stub对象。 :
/* Service提供一个定时计数器,采用Runnable的方式实现,复****一下Android学****笔记(三一):线程:Message和Runnable中的例子3。为了避免干扰注意力,灰掉这部分代码。此外,我们提供showInfo(),用于跟踪Service的运行情况,这部分也灰掉。*/
public class TestRemoteService extends Service{
    private Handler serviceHandler = null;
    private int counter = 0;
    private TestCounterTask myTask = new TestCounterTask(); 
    
    public void onCreate() { 
        ();
        showInfo("remote service onCreate()");
    } 
    public void onDestroy() {
        ();
        (myTask); //停止计数器
        serviceHandler = null;
        showInfo("remote service onDestroy()");
    } 
    public void onStart(Intent intent, int startId) {
    

服务Service- Remote Service(精选) 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人博大精深
  • 文件大小0 KB
  • 时间2015-10-05