Chinaunix首页 | 论坛 | 博客
  • 博客访问: 403640
  • 博文数量: 78
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 940
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-25 09:39
文章分类

全部博文(78)

文章存档

2016年(7)

2015年(1)

2014年(35)

2013年(35)

我的朋友

分类: Android平台

2014-12-01 18:55:09

对于Service而言,它依然是运行在主线程之上,所以一些无法在主线程上完成的功能,依然需要另外开启工作线程来完成,并且一些耗时操作,如果直接放在Service的主线程中完成的话,会影响设备的运行流畅度。对于这样的问题,有两种解决方案,一种是在Service主线程中额外开启一条工作线程;另外一种是使用IntentService这个父类来实现Service业务类。

IntentService是一个服务基类,直接继承于Service,在需要的时候通过异步调用的方式处理请求。要使用IntentService启动一个服务进行异步调用,需要实现它的一个抽象方法onHandleIntent(Intent intent),在这个方法里,可以获得访问这传来的Intent对象,并在其中进行异步操作的实现。对于IntentService而言,因为其继承自Service类,所以其他的Service的生命周期方法在此类中也适用,访问者可以通过调用Context.startService(Intent intent)方法来启动这个服务。其实IntentService内部也是重新开启了一条线程来完成操作,只是这里使用IntentService进行了封装,并且它自己管理服务的结束。它比较适用于一些无需管理,但是又比较耗时的操作。

阅读(1808) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~