如果你看到上一篇android耗时任务_HandlerThread中所提到的BackService类了的话,那么你肯定有一个冲动,就是把它封装起来方便使用。
别急,Android SDK早就已经为我们提供了和那个BackService基本相同的类——IntentService。因为IntentService和BackService基本相同,所以源码我就不贴了。
先来看一下一个简单的例子:
public class AsyncService extends IntentService { public AsyncService() { super("AsyncService"); } @Override protected void onHandleIntent(Intent arg0) { } }
IntentService的使用简单明了,但是有些事情还是需要注意一下:
1、继承它的类必须要有一个无参的构造函数,并在此构造函数中调用父类的有参的构造函数,否则会报错。
2、onHandleIntent是一个抽象方法,必须实现。
3、IntentService已经给创建了新的线程,并且在线程中开启了looper-handler机制,onHandleIntent就是运行在这个线程空间中的,所以可以直接进行异步任务。
4、可以多次启动这个IntentService的实现类,它的生命周期和普通的生命周期基本相同,另外多个异步任务可以通过intent传值区分,并且多个异步任务会排队处理。
5、不需要主动调用stopSelft()来结束服务。因为,在所有的异步任务被处理完后,系统会自动关闭服务。
6、和普通的service一样需要在manifest中注册,启动过车也和普通service一样。
它的多次启动时的生命周期如下:
-->AsyncService
-->onCreate
-->onStartCommand
-->onStart
-->onHandleIntent
-->onStartCommand
-->onStart
-->onHandleIntent
-->onDestroy
时间: 2024-10-16 07:40:58