分类: 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进行了封装,并且它自己管理服务的结束。它比较适用于一些无需管理,但是又比较耗时的操作。