Service进阶

上节我们学习了Service的生命周期,以及两种启动Service的两种方法,本节继续来深入了解Service中的IntentService,Service的使用实例:前台服务与轮询的实现!

1.IntentService的使用

在上一节后我们已经知道了如何去定义和启动Service,但是如果我们直接把耗时线程放到Service中的onStart()方法中,虽然可以这样做,但是很容易会引起ANR异常(Application Not Responding),而Android的官方在介绍Service有下面这样一段话:

直接翻译:

1.Service不是一个单独的进程,它和它的应用程序在同一个进程中

2.Service不是一个线程,这样就意味着我们应该避免在Service中进行耗时操作

于是乎,Android给我们提供了解决上述问题的替代品,就是下面要讲的IntentService;IntentService是继承与Service并处理异步请求的一个类,在IntentService中有一个工作线程来处理耗时操作,请求的Intent记录会加入队列。

工作流程:

客户端通过startService(Intent)来启动IntentService;我们并不需要手动地区控制IntentService,当任务执行完后,IntentService会自动停止;可以启动IntentService多次,每个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且每次只

猜你喜欢

转载自blog.csdn.net/shiwei0813/article/details/130000374