IntentService的使用

简介: IntentService:异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务。 用于一次性的操作。 IntentService使用队列的方式将请求的Intent加入队列,然后开启一个worker thread(线程)来处理队列中的...

IntentService:异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务。

用于一次性的操作。

IntentService使用队列的方式将请求的Intent加入队列,然后开启一个worker thread(线程)来处理队列中的Intent,对于异步的startService请求,IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的worker thread中处理,不会阻塞应用程序的主线程,这里就给我们提供了一个思路,如果有耗时的操作与其在Service里面开启新线程还不如使用IntentService来处理耗时操作.

Service里面是不能进行耗时的操作的,必须要手动开启一个工作线程来处理耗时操作 (也就是说在onstart()中不能有耗时操作,或者通过开启一条子线程的方式去处理耗时操作)

IntentService有以下特点:

(1)  它创建了一个独立的工作线程来处理所有的通过onStartCommand()传递给服务的intents。

(2)  创建了一个工作队列,来逐个发送intent给onHandleIntent()。

(3)  不需要主动调用stopSelft()来结束服务。因为,在所有的intent被处理完后,系统会自动关闭服务。

(4)  默认实现的onBind()返回null

(5)  默认实现的onStartCommand()的目的是将intent插入到工作队列中。

继承IntentService的类至少要实现两个函数:构造函数和onHandleIntent()函数。要覆盖IntentService的其它函数时,注意要通过super调用父类的对应的函数。

详见http://www.cnblogs.com/skywang12345/p/3165546.html

 

相关文章
|
9月前
|
安全 Java Android开发
Android 中AsyncTask后台线程,异步任务的理解
Android 中AsyncTask后台线程,异步任务的理解
103 0
|
Android开发
Android多线程之IntentService
IntentService继承自Service,所以IntentService也是四大组件之一,IntentService内部封装了HandlerThread线程 (只有一个线程) 来按顺序处理异步任务
|
消息中间件 Java Android开发
冷启动与热启动,AsyncTask,HandlerThread,IntentService,Service 保活,IntentService
冷启动与热启动,AsyncTask,HandlerThread,IntentService,Service 保活,IntentService
109 1
IntentService详解
IntentService是什么? 这篇文章是之前就写好的,一直没有整理出来,这几天有空正好整理发布一下。 我们知道Service可以让我们在后台处理一些事情,但是Service实际上也是主线程,所以执行长耗时任务时依然会ANR,只不过ANR触发时间要比前台长。一般我们会在Service中开启一个子线程去完成耗时任务。 而IntentService就是解决这个问题的,它是Service的一个抽象子类,需要实现onHandleIntent,代码在这个函数中执行。它与Service最大的不同就是默认开启一个子线程,而onHandleIntent就是在子线程中执行的。
129 0
|
Java Android开发
AsyncTask
http://developer.android.youdaxue.com/reference/android/os/AsyncTask.html public abstract class AsyncTask extends Object java.lang.Object android.os.AsyncTask<Params, Progress, Result>
130 0
|
Java Android开发
【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )
【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )
155 0
|
Android开发
Android之HandlerThread源码分析和简单使用(主线程和子线程通信、子线程和子线程通信1)
Android之HandlerThread源码分析和简单使用(主线程和子线程通信、子线程和子线程通信)
171 0
IntentService源码分析
我们知道Service是运行在主线程的,主线程中不能进行耗时操作,否则会发生ANR。Service中的发生ANR的超时时间是20s。 有时候我们需要应用在后台默默做一些任务,例如上传文件等。如果我们采用Service,则需要我们自己手动开启新的线程。如果我们不想 自己开启线程怎么办,IntentService就出现了。
|
Android开发
BroadcastReceiver的源码分析
android提供了广播机制,通过BroadcastReceiver可以在不同的进程间传递消息。类似于观察者模式,A应用通过注册广播表示A对消息subject感兴趣,当B应用发出subject类型的消息的时候,A应用就能收到对应的消息。
1290 0
|
消息中间件 Android开发
HandlerThread
一、概念     1、Android中Handler的使用,一般都在UI主线程中执行,因此在Handler接收消息后,处理消息时,不能做一些很耗时的操作,否则将出现ANR错误。    2、HandlerThread继承于Thread,所以它本质就是个Thread。
1135 0