Android 几种异步方式,解决主线程中遇到的卡顿
起因:
当我们的UI越来越复杂的时候,或者说某个业务需要大量的计算的时候,我们的主线程会消耗大量的资源去计算,这个时候,我们的Activity或者说fragmemt等UI页面就会出现卡顿,乃至ANR。总结一下,就是我们直接在主线程(UI线程)中,做耗时操作,就会造成卡顿,甚至ANR
解决方案:
1.优化耗时的计算,提高算法,利用缓存等数据;这种方式,一般带来的提升在App这种场景中微乎其微,只有在大规模的并发场景中才会体现出效果(服务器后台服务中),打个比方,你存一年1W块钱的定期,一年利息才200多块,当你存1000W的时候,一年利息就有20多W,这种效果才明显(手动滑稽)
2.利用异步的方式,简单来说,开启另外一个线程去做耗时操作,利用CPU的多线程模式,这样我们的主线程就不会卡顿在耗时操作中
异步的方式:
1.直接使用继承Thread类或者实现Runable接口(和主线程通信还得使用handler)
2.AsyscTask(它的原理主要是利用线程池,各个历史版本系统版本可能会有不同的缺陷)
3.利用Handler,Message,Looper(主线程默认开启了Looper)
4.RxJava 线程模式.subscribeOn(Schedulers.io()),这样可以开启一个新线程来执行里面的耗时代码
严格的地来说,Android里面,主线程和子线程之间,不能使用sleep(),wait(),notify()等Java原生的线程通信的方式,因为,主线程一旦sleep那么整个App都不能正常运行(所有的Activity,Service等都在主线程运行中呢)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android中的设计模式之解释器模式
参考 《设计模式:可复用面向对象软件的基础 》5.3 Interpreter 解释器 类行为型模式 《Android源码设计模式解析与实战》第10章 化繁为简的翻译机--解释器模式 意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器适用该表示来解释语言中的句子。 适用场景 当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。而当存在以下情况时该模式效果最好: 该文法简单对于复杂的文法,文法的类层次变得庞大而又无法管理。 效率不是一个关键问题最高效的解释器通常不是通过直接解释语法分析树实现的,而是首先将它们转换为另一种形式。 非终结符号与终止符号 例: S ::= abA*ef A ::= cd 符号“::=”表示推导;符号“*”表示闭包,意思就是符号A可以有0或有N个重复;S和A称为非终结符号,因为他们能推导出式子右边的表达式,同时又因为整个推导式是从S出发的,因此,这个S也称为初始符号;而abef和cd这些字符不能再被推导我们称之为终结符号。 结构 interpreterPattern AbstractExpression...
- 下一篇
BAT小程序暗战,这或许是程序员离钱最近的机会!
史文禄,阿拉丁小程序统计与指数平台创始人兼CEO:小程序必将是移动互联网的下半场,毋庸置疑。 现在2018年已经进入了下半年,是风口还是被高估,已经开始见真章。 尤其随着百度、阿里这样的巨头纷纷加入小程序领域,BAT之间必将开展一场小程序的争夺战。 小程序的“鼻祖”百度卷土重来,7月正式上线百度智能小程序,阿里则围绕移动支付推出支付宝小程序,而拥有社交流量的微信小程序自它问世以来就饱受关注。 “小程序可能是人们连接万事万物信息的最好载体” ,这是在2018年年初,张小龙在微信公开课上说的一句话。 2016年9月开始内测,2017年正式上线。发展到如今,微信小程序已经走过了2个年头,在今年7月10日,微信小程序团队更新了小程序数据: 已发布小程序超过100万 开发者超过150万 第三方平台超过5000家 每日人均打开小程序4次 54%的打开次数是用户主动访问 微信小程序的发展势头令人惊叹,从这些数据来看,小程序确实火了,已经成为整个行业追逐的焦点。 高流量、成本低、开发周期短等优势,在市场大趋势下,小程序的红利期俨然已经到来!很多企业将小程序作为宣传标配,企业开发小程序的需求非常旺盛,诸...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2全家桶,快速入门学习开发网站教程