Android中IntentService与Service的区别
来源:互联网 发布:网络搞笑剧有哪些 编辑:程序博客网 时间:2024/05/19 09:16
转自:http://blog.csdn.net/matrix_xu/article/details/7974393
Android中的Service是用于后台服务的,当应用程序被挂到后台的时候,问了保证应用某些组件仍然可以工作而引入了Service这个概念,那么这里面要强调的是Service不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,也就是说,在更多时候不建议在Service中编写耗时的逻辑和操作,否则会引起ANR。
那么我们当我们编写的耗时逻辑,不得不被service来管理的时候,就需要引入IntentService,IntentService是继承Service的,那么它包含了Service的全部特性,当然也包含service的生命周期,那么与service不同的是,IntentService在执行onCreate操作的时候,内部开了一个线程,去你执行你的耗时操作。
这里我 需要解释以下几个方法,也许大家都已经很清楚了,不过为了抛砖引玉,我还是要提一嘴。
Service中提供了一个方法:
这个方法的具体含义是,当你的需要这个service启动的时候,或者调用这个servcie的时候,那么这个方法首先是要被回调的。
同时IntentService中提供了这么一个方法:
这是一个抽象方法,也就是说具体的实现需要被延伸到子类。
子类的声明:
上面提到过IntentService是继承Service的,那么这个子类也肯定继承service,那么onHandleIntent()方法是什么时候被调用的呢?让我们具体看IntentService的内部实现:
在这里我们可以清楚的看到其实IntentService在执行onCreate的方法的时候,其实开了一个线程HandlerThread,并获得了当前线程队列管理的looper,并且在onStart的时候,把消息置入了消息队列,
在消息被handler接受并且回调的时候,执行了onHandlerIntent方法,该方法的实现是子类去做的。
结论:
IntentService是通过Handler looper message的方式实现了一个多线程的操作,同时耗时操作也可以被这个线程管理和执行,同时不会产生ANR的情况。
- Android中IntentService与Service的区别
- Android中IntentService与Service的区别
- Android中IntentService与Service的区别
- Android中IntentService与Service的区别
- Android中IntentService与Service的区别
- Android中IntentService与Service的区别
- Android中IntentService与Service的区别
- Android中IntentService与Service的区别
- Android中IntentService与Service的区别
- Android中 IntentService 与 Service 的区别
- Android中IntentService与Service的区别
- Android笔记 IntentService与Service的区别
- 浅谈Android Service与IntentService的区别
- Android Service与IntentService的区别
- Android中IntentService和Service的区别
- Android Service与IntentService区别
- Service 与 IntentService 的区别
- IntentService与Service的区别
- 【C++】动态内存管理(五)使用STL容器进行大量的动态内存管理
- C++写实拷贝
- 191. Number of 1 Bits
- forHTTPHeaderField
- 单纯形引理
- Android中IntentService与Service的区别
- 1047. Student List for Course (25)
- 统计基础和收益率
- kubernetes环境搭建(1) 一一 etcd集群搭建
- unique_ptr
- 孤儿进程
- 并查集:CDOJ1594-老司机的奇幻漂流 (食物链)
- 大数据 (六)Hadoop-HDFS Federation
- SpringMVC札集(05)——SpringMVC参数回显