Android之Service与IntentService的比较
来源:互联网 发布:p2p网贷平台软件 编辑:程序博客网 时间:2024/06/05 15:28
不知道大家有没有和我一样,以前做项目或者练习的时候一直都是用Service来处理后台耗时操作,却很少注意到还有个IntentService,前段时间准备面试的时候看到了一篇关于IntentService的解释,发现了它相对于Service来说有很多更加方便之处,今天在这里稍微来总结下我的心得。
首先IntentService是继承自Service的,那我们先看看Service的官方介绍,这里列出两点比较重要的地方:
1.A Service is not a separate process. The Service object itself does not imply it is running in its own process; unless otherwise specified, it runs in the same process as the application it is part of.
2.A Service is not a thread. It is not a means itself to do work off of the main thread (to avoid Application Not Responding errors).
稍微翻一下(英文水平一般)
1.Service不是一个单独的进程 ,它和应用程序在同一个进程中。
2.Service不是一个线程,所以我们应该避免在Service里面进行耗时的操作
关于第二点我想说下,不知道很多网上的文章都把耗时的操作直接放在Service的onStart方法中,而且没有强调这样会出现Application Not Responding!希望我的文章能帮大家认清这个误区(Service不是一个线程,不能直接处理耗时的操作)。
有人肯定会问,那么为什么我不直接用Thread而要用Service呢?关于这个,大家可以网上搜搜,这里不过多解释。有一点需要强调,如果有耗时操作在Service里,就必须开启一个单独的线程来处理!!!这点一定要铭记在心。
IntentService相对于Service来说,有几个非常有用的优点,首先我们看看官方文档的说明:
IntentService is a base class for Services that handle asynchronous requests (expressed as Intents) on demand. Clients send requests throughstartService(Intent) calls; the service is started as needed, handles each Intent in turn using a worker thread, and stops itself when it runs out of work.
This "work queue processor" pattern is commonly used to offload tasks from an application's main thread. The IntentService class exists to simplify this pattern and take care of the mechanics. To use it, extend IntentService and implement onHandleIntent(Intent). IntentService will receive the Intents, launch a worker thread, and stop the service as appropriate.
All requests are handled on a single worker thread -- they may take as long as necessary (and will not block the application's main loop), but only one request will be processed at a time.
1.Service:
2.IntentService:
测试主程序:
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较 .
- Android之Service与IntentService的比较
- 每天,每周,每月,每年程序员该做的事情
- Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g
- Oracle 10g AND Oracle 11g手工建库案例--Oracle 10g
- 黑马程序员--IO流04--其他类
- 电子邮件礼仪五大神器 让工作大佬们回复你的邮件 How to get a busy person to respond to your email
- Android之Service与IntentService的比较
- Row-Oriented Database 、Column-Oriented Database 、Key-Value Store Database 、Document-Oriented Databas
- 技术型人员的职业规划:如何成功晋升为项目经理?
- 软考历程
- 【成长访谈】李钊:学技术于无形,论大道于无声
- Android 第三方应用接入微信平台(1)
- 赵雅智_引用开源框架通过AsyncHttpClient进行文件上传
- Android 第三方应用接入微信平台(2)
- windows server2008 R2开机后没有字