IntentService和AsyncTask
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相关推荐
- Android严苛模式StrictMode使用与取消
StrictMode最常用来捕捉应用程序的主线程,报告与线程及虚拟机相关的策略违例.一旦检测到策略违例(policy violation),开发者将获得输出警告:包含了一个栈trace显示你的应用在何 ...
- 给后辈的一点建议,分享PDF高清版
前言 咱们这行似乎每个人都有个常识:程序员做到35岁之后,职业道路就很窄了,但我不信这个邪,我今年37岁,依然活跃在开发一线,并且做到了月入四万+. 偶尔也有人问,你是怎么打破35岁定律的?对于这个问 ...
- 10 条提升 Android 性能的建议
About the Speaker: Boris Farber 每个人都知道一个 App 的成功,更这个 App 的性能体验有着很密切的关系.但是如何让你的 App 拥有极致性能体验呢?在 Droid ...
- 理解 Android 消息机制
本人只是Android小菜一个,写技术文章只是为了总结自己最近学习到的知识,从来不敢为人师,如果里面有不正确的地方请大家尽情指出,谢谢! 本文基于原生 Android 9.0 源码来解析 Androi ...
- 深入探索多线程优化方法
前言 什么是线程的概念我就不在介绍,不懂的自行百度,我想百分之九十九的人都是知道的,至于多线程,通俗的就是有很多的线程在一起工作从而完成某一件事,从而提升效率.这就是使用多线程的好处之一,举个列子,一 ...
- Android性能优化 笔记
说明 这篇文章是将很久以来看过的文章,包括自己写的一些测试代码的总结.属于笔记的性质,没有面面俱到,一些自己相对熟悉的点可能会略过. 最开始看到的性能优化的文章,就是胡凯的优化典范系列,后来又陆续看过 ...
- android开发面试题!360°深入了解Flutter,面试总结
何为成长?成长是指自我提升,一方面是本身的个人能力,另一方面是社会对你的认可度.最终,程序员的职位和薪水都能在成长中得以体现. 很多人对成长有误解,在他们眼中,随着工作年限的提高,成长是理所当然的事情 ...
- Android开发经验谈:这份字节跳动历年校招Android面试真题解析,薪资翻倍
前言 职场的"金三银四"跳槽季过去了,但是紧接着,眼下"金九银十"又来了. 不同的是今年比往年「冷」一些,形式更加严峻一些,大家多多少少可能都听到或看到一些信息 ...
- Android 线程与线程安全
1.线程 线程是进程中可独立执行的最小单位,也是CPU资源分配的基本单位. 进程是程序向操作系统申请资源的基本条件,一个进程可以包含多个线程,同一个进程中的线程可以共享进程中的资源,如内存空间和文件句 ...
最新文章
- js中的preventDefault与stopPropagation详解
- Java凝视Annotation
- html5 新增属性了解
- 定义一个计算字符串有效长度的_一个正方形的小抽屉柜,根据设计草图计算出所需四片木板的长度...
- VTK:几何对象之Dodecahedron
- mysql 数据库存储表情
- python程序执行时间_用于在Python中查找程序执行时间的程序
- 学python需要什么基础-学习python需要什么基础
- 如何理解“KISS 原则”?
- 中文问题-Mobile-UrlEncode
- UnityWebRequest下载文件
- 小旭追女神-三国乱世(裸的单点线段树更新)
- 服务器怎么开启lldp协议,修改服务器lldp的mac地址
- 华中邀请四届 WHU1567 Sloth's Angry
- MongoDB 网页可视化管理(adminMongo 的安装、配置)
- Catagory基础使用
- wps去除登陆_WPS强制用户登录功能,这是要闹哪样?
- 常用图标(icon)css下载
- 百度网盘在线不限速下载网站源码
- 葛洲坝地产的“5G科技”演化:三大维度推进,不唯技术控
热门文章
- Specification 参数的用法
- ODOO开发教程之图表
- 华益血糖信息管理系统服务器,华益血糖信息化管理系统
- appJSON[tabBar][borderStyle] 字段需为 black 或 white console.error @ VM1402:1 (anonymous) @ VM1415:2
- wps表格日期计算天数_如何计算Google表格中两个日期之间的天数
- 【安全测试】什么是安全测试
- 二级联动 三级联动 多级联动 无限级联动下拉列表或菜单专题
- 业余草分享面试题,JVM结构、GC工作机制详解
- java 判断当前月天数
- HMM详细讲解与代码的实现