JobPlus知识库 IT 软件开发 文章
Android中Service和IntentService

前言

ServiceTimeout(20 seconds)小概率类型Service在特定的时间内无法处理完成,会造成ANR — 应用程序无响应(ANR:Application Not Responding)的情况

▲ 分析 :

避免ANR最核心的一点就是在主线程减少耗时操作。这时我们建议使用intentService处理。intentService是一个异步的,会自动停止的服务,很好解决了传统的Service中处理完耗时操作忘记停止并销毁Service的问题

▲ 区别 :

1. 首先IntentService是继承自Service; 
2. Service不是一个单独的进程,它和应用程序在同一个进程中; 
3. Service也不是一个线程,所以我们要避免在Service中进行耗时的操作; 
4. IntentService使用队列的方式将请求的Intent加入队列,然后开启了一个Worker Thread(工作线程)在处理队列中的Intent,对于异步的startService请求, 
IntentService会处理完成一个之后在处理第二个,每一个请求都会在一个单独的Worker Thread中处理,不会阻塞应用程序的主线程。 
因此,如果我们如果要在Service里面处理一个耗时的操作,我们可以用IntentService来代替使用。 
5. 使用IntentService 必须首先继承IntentService并实现onHandleIntent()方法,将耗时的任务放在这个方法执行,其他方面,IntentService和Service一样。

▲ 例子 :

Service_demo

  

IntentService_demo


TextServiceActivity


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
352人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序