Android 几种异步方式,解决主线程中遇到的卡顿

简介: 起因:当我们的UI越来越复杂的时候,或者说某个业务需要大量的计算的时候,我们的主线程会消耗大量的资源去计算,这个时候,我们的Activity或者说fragmemt等UI页面就会出现卡顿,乃至ANR。

起因:

当我们的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等都在主线程运行中呢)

目录
相关文章
|
2月前
|
Java 数据库 Android开发
Android异步之旅:探索AsyncTask
Android异步之旅:探索AsyncTask
25 0
|
2月前
|
Android开发 开发者
Android异步之旅:探索IntentService
Android异步之旅:探索IntentService
20 0
|
2月前
|
消息中间件 数据库 Android开发
Android异步之旅:探索HandlerThread
Android异步之旅:探索HandlerThread
27 0
|
2月前
|
Android开发 对象存储
OSS对象储存android开发进行下载到本地文件时异步操作失效
android vivo80使用官方示例代码进行文件下载,但是使用oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>()时onSuccess和onFailure不执行
|
9月前
|
安全 Java Android开发
Android 中AsyncTask后台线程,异步任务的理解
Android 中AsyncTask后台线程,异步任务的理解
103 0
|
5月前
|
XML Java 调度
Android App网络通信中通过runOnUiThread快速操纵界面以及利用线程池Executor调度异步任务实战(附源码 简单易懂)
Android App网络通信中通过runOnUiThread快速操纵界面以及利用线程池Executor调度异步任务实战(附源码 简单易懂)
31 0
|
5月前
|
XML Java Android开发
Android Studio App开发中异步任务AsynTask与异步服务IntentService的讲解与实战(实现四大名著的加载进度条 附源码)
Android Studio App开发中异步任务AsynTask与异步服务IntentService的讲解与实战(实现四大名著的加载进度条 附源码)
67 0
|
调度 Android开发
Android异步消息处理机制之Handler、Looper、Message
因为Android UI线程是线程不安全的,在子线程中更新UI会直接程序崩溃,另外当UI线程需要执行一个比较耗时的操作的话(IO操作,网络通信等),若是执行时间超过5s,程序会直接ANR,为了解决上述问题,可以使用异步消息处理机制[Handler]
|
存储 JSON 缓存
卡顿监测 · 方案篇 · Android卡顿监测指导原则(2)
卡顿监测 · 方案篇 · Android卡顿监测指导原则
110 0
卡顿监测 · 方案篇 · Android卡顿监测指导原则(2)
|
缓存 前端开发 Java
卡顿监测 · 方案篇 · Android卡顿监测指导原则
卡顿监测 · 方案篇 · Android卡顿监测指导原则
377 0
卡顿监测 · 方案篇 · Android卡顿监测指导原则