android 判断主线程_腾讯Android面试:Handler中有Loop死循环,为什么没有阻塞主线程...
面试官: Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么
心理分析:该问题很难被考到,但是如果一旦问到,100%会回答不上来。开发者很难注意到一个主线程的四循环居然没有阻塞住主线程
求职者:应该从 主线程的消息循环机制 与Linux的循环异步等待作用讲起。最后将handle引起的内存泄漏,内存泄漏一定是一个加分项
先上一份整理好的面试目录
![](/assets/blank.gif)
前言
Android的消息机制主要是指Handler的运行机制,对于大家来说Handler已经是轻车熟路了,可是真的掌握了Handler?本文主要通过几个问题围绕着Handler展开深入并拓展的了解。
站在巨人的肩膀上会看的更远。大家有兴趣的也可以到Gityuan的博客上多了解了解,全部都是干货。而且他写的东西比较权威,毕竟也是小米系统工程师的骨干成员。
Questions
- Looper 死循环为什么不会导致应用卡死,会消耗大量资源吗?
- 主线程的消息循环机制是什么(死循环如何处理其它事务)?
- ActivityThread 的动力是什么?(ActivityThread执行Looper的线程是什么)
- Handler 是如何能够线程切换,发送Message的?(线程间通讯)
- 子线程有哪些更新UI的方法。
- 子线程中Toast,showDialog,的方法。(和子线程不能更新UI有关吗)
- 如何处理Handler 使用不当导致的内存泄露?
回答一: Looper 死循环为什么不会导致应用卡死?
线程默认没有Looper的,如果需要使用Handler就必须为线程创建Looper。我们经常提到的主线程,也叫UI线程,它就是ActivityThread,ActivityThread被创建时就会初始化Looper,这也是在主线程中默认可以使用Handler的原因。
首先我们看一段代码
new Thread(new Runnable() { @Override public void run() { Log.e("qdx
android 判断主线程_腾讯Android面试:Handler中有Loop死循环,为什么没有阻塞主线程...相关推荐
- android判断主线程_惊天秘密!从Thread开始,揭露Android线程通讯的诡计和主线程的阴谋...
背景介绍 我们在Android开发过程中,几乎都离不开线程.但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做到的呢?Looper.Ha ...
- 腾讯Android面试:Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么
面试官: Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么 心理分析:该问题很难被考到,但是如果一旦问到,100%会回答不上来.开发者很难注意到一个主线程的四循环居然没有阻塞住主线程 ...
- android如何阻塞主线程,Android-Android如何避免阻塞主线程
Android的Handler和AsyncTask,可以避免阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的. AsyncTask,它使创建需要与用户界面交互的长时间运 ...
- Android的主线程与子线程
在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...
- android子线程没有运行完,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...
/* String ObjectResult="原先的结果"; //使用VOLLY框架(与问题无关) JsonObjectRequest jsonObjectRequest = n ...
- Android,UI主线程与子线程
在一个Android 程序开始运行的时候,会单独启动一个Process.默认的情况下,所有这个程序中的Activity或者Service(Service和 Activity只是Android提供的Co ...
- android广播怎样运行在子线程,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...
抛开你这段代码不看,单根据你的标题来回答: android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢? 需要在子线程执行完成的地方,通过主线程的Handler发送一条消 ...
- 4.5.2.5_主线程_墨镜滤镜
4.5.2.5_主线程_墨镜滤镜 <!DOCTYPE html> <html><head><meta charset="UTF-8"> ...
- pthread线程传递数据回主线程_操作系统4:线程(1)
接下来讨论下线程.进程和线程是一个很有趣的话题,进程和线程的区别到底是什么?一些书上讲线程是"轻量级进程",从而可以节省切换开销.但是线程到底是怎么样成为轻量级进程的呢? 可以设想 ...
- Android 避免主线程执行网络请求之Activity/Fragment 结束后处理异步回调
大家都知道Android涉及到与UI相关的操作只能在主线程执行 android4.0以后就禁止在主线程进行网络请求了,在主线程里面执行Http请求都会报NetworkOnMainThreadExcep ...
最新文章
- RGB-D对红外热像仪和毫米波雷达标定
- seaborn系列 (17) | 回归模型图lmplot()
- 汇编语言随笔(14)-直接定址表、检测点16和实验16
- php双写绕过,高并发下缓存与数据库双写不一致解决方案
- linux网卡入流速,linux下简单限制网卡速度与
- 利用注入写Webshell(sql-lab第七关)
- QT的Q3DSurface类的使用
- 如何启用SAP Cloud Platform的mobile服务
- jax-ws和jax-rs_使用JAX-RS和Jetty创建Web服务和Rest Server
- Java8排序–性能陷阱
- java 负载均衡_java负载均衡 - 岁月静好I的个人空间 - OSCHINA - 中文开源技术交流社区...
- EF 6 code first - 从SQL server迁移到MySQL
- php 路由 隐藏index,CI中路由与伪静态、隐藏index.php(十四)
- 英寸和厘米的交互python_Python的新手-尝试将厘米编码为英寸,反之亦然
- 财务管理c语言oj,九度OJ 1141:Financial Management (财务管理) (平均数)
- mediasoup 安裝
- 7805急剧发热,可能是什么原因?
- gulp mysql_关于MySQL索引的一点小见解
- 转:计算机核心刊物(非SCI,EI)投稿指南
- python标准输入多行文字_python如何输入多行数据
热门文章
- 【车间调度】基于matlab遗传算法求解车间调度问题【含Matlab源码 1396期】
- 【电路仿真】基于matlab Simulink四旋翼PID控制【含Matlab源码 454期】
- python创建对象_python对象
- 部署容器jenkins_使用Jenkins部署用于进行头盔检测的烧瓶容器
- 阿里表结构设计mysql_阿里华为P8级架构师教你MySQL数据库设计三范式与反范式
- ios 文本翻转_反转文字的方法_深入浅出 iPhone 开发 (使用 Swift4)_iOS视频-51CTO学院...
- mysql 针对table的查看命令行
- 监控hdfs坏块脚本
- 找出2n+1个数中不成对的那个
- Hadoop-2.2.0中文文档—— Common - CLI MiniCluster