IntentService 是Serivce+handler的结合产物  AsyncTask是thread+handler的结合产物 不清楚我的总结是不是前不见来者。下面是我对location service ,remote service ,IntentService,AsyncTask的阐述。

为什么用service而不用thread:android 的系统机制有关,我们先拿 Thread 来说 Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后 ,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。

location serivce  不是一个单独的进程,它和应用程序在同一个进程中。只能在当前应用中调用service。kill当前应用则service也随之消亡。
remote service   独立与应用程序之外进程的进程(必须在声明的时候以android:process=":remote"方式声明),配合AIDL可以实现进程间的相互调用。remote service所依附的那个应用如果应用kill掉,但是remoteservice还在运行,除非你卸载当前应用。

选中你的进程com.example.android.intent_service然后点 stop,则应用被kill掉,而com.example.android.intent_service:remote却安然无恙。

IntentService 是Serivce+handler的结合产物,可以在onHandleIntent直接处理耗时操作。而本地service和远程service不能在onStart方法中执行耗时操作,只能放在子线程中进行处理,当有新的intent请求过来都会线onStartCommond将其入队列,当第一个耗时操作结束后,就会处理下一个耗时操作(此时调用onHandleIntent),都执行完了自动执行onDestory销毁IntengService服务。

AsyncTask是thread+handler的结合产物,减少程序中线程过多开销过大,操作和管理更加方便。AsyncTask实例必须在UI Thread中创建,execute方法必须在UI Thread中调用不能手动调用onPreExcute(),onPostExcute(Result)。task只能被执行一次,否则将出现异常。

IntentService和AsyncTask相关推荐

  1. Android严苛模式StrictMode使用与取消

    StrictMode最常用来捕捉应用程序的主线程,报告与线程及虚拟机相关的策略违例.一旦检测到策略违例(policy violation),开发者将获得输出警告:包含了一个栈trace显示你的应用在何 ...

  2. 给后辈的一点建议,分享PDF高清版

    前言 咱们这行似乎每个人都有个常识:程序员做到35岁之后,职业道路就很窄了,但我不信这个邪,我今年37岁,依然活跃在开发一线,并且做到了月入四万+. 偶尔也有人问,你是怎么打破35岁定律的?对于这个问 ...

  3. 10 条提升 Android 性能的建议

    About the Speaker: Boris Farber 每个人都知道一个 App 的成功,更这个 App 的性能体验有着很密切的关系.但是如何让你的 App 拥有极致性能体验呢?在 Droid ...

  4. 理解 Android 消息机制

    本人只是Android小菜一个,写技术文章只是为了总结自己最近学习到的知识,从来不敢为人师,如果里面有不正确的地方请大家尽情指出,谢谢! 本文基于原生 Android 9.0 源码来解析 Androi ...

  5. 深入探索多线程优化方法

    前言 什么是线程的概念我就不在介绍,不懂的自行百度,我想百分之九十九的人都是知道的,至于多线程,通俗的就是有很多的线程在一起工作从而完成某一件事,从而提升效率.这就是使用多线程的好处之一,举个列子,一 ...

  6. Android性能优化 笔记

    说明 这篇文章是将很久以来看过的文章,包括自己写的一些测试代码的总结.属于笔记的性质,没有面面俱到,一些自己相对熟悉的点可能会略过. 最开始看到的性能优化的文章,就是胡凯的优化典范系列,后来又陆续看过 ...

  7. android开发面试题!360°深入了解Flutter,面试总结

    何为成长?成长是指自我提升,一方面是本身的个人能力,另一方面是社会对你的认可度.最终,程序员的职位和薪水都能在成长中得以体现. 很多人对成长有误解,在他们眼中,随着工作年限的提高,成长是理所当然的事情 ...

  8. Android开发经验谈:这份字节跳动历年校招Android面试真题解析,薪资翻倍

    前言 职场的"金三银四"跳槽季过去了,但是紧接着,眼下"金九银十"又来了. 不同的是今年比往年「冷」一些,形式更加严峻一些,大家多多少少可能都听到或看到一些信息 ...

  9. Android 线程与线程安全

    1.线程 线程是进程中可独立执行的最小单位,也是CPU资源分配的基本单位. 进程是程序向操作系统申请资源的基本条件,一个进程可以包含多个线程,同一个进程中的线程可以共享进程中的资源,如内存空间和文件句 ...

最新文章

  1. js中的preventDefault与stopPropagation详解
  2. Java凝视Annotation
  3. html5 新增属性了解
  4. 定义一个计算字符串有效长度的_一个正方形的小抽屉柜,根据设计草图计算出所需四片木板的长度...
  5. VTK:几何对象之Dodecahedron
  6. mysql 数据库存储表情
  7. python程序执行时间_用于在Python中查找程序执行时间的程序
  8. 学python需要什么基础-学习python需要什么基础
  9. 如何理解“KISS 原则”?
  10. 中文问题-Mobile-UrlEncode
  11. UnityWebRequest下载文件
  12. 小旭追女神-三国乱世(裸的单点线段树更新)
  13. 服务器怎么开启lldp协议,修改服务器lldp的mac地址
  14. 华中邀请四届 WHU1567 Sloth's Angry
  15. MongoDB 网页可视化管理(adminMongo 的安装、配置)
  16. Catagory基础使用
  17. wps去除登陆_WPS强制用户登录功能,这是要闹哪样?
  18. 常用图标(icon)css下载
  19. 百度网盘在线不限速下载网站源码
  20. 葛洲坝地产的“5G科技”演化:三大维度推进,不唯技术控

热门文章

  1. Specification 参数的用法
  2. ODOO开发教程之图表
  3. 华益血糖信息管理系统服务器,华益血糖信息化管理系统
  4. appJSON[tabBar][borderStyle] 字段需为 black 或 white console.error @ VM1402:1 (anonymous) @ VM1415:2
  5. wps表格日期计算天数_如何计算Google表格中两个日期之间的天数
  6. 【安全测试】什么是安全测试
  7. 二级联动 三级联动 多级联动 无限级联动下拉列表或菜单专题
  8. 业余草分享面试题,JVM结构、GC工作机制详解
  9. java 判断当前月天数
  10. HMM详细讲解与代码的实现