AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?
来源:互联网 发布:mac下载手机铃声 编辑:程序博客网 时间:2024/04/30 12:43
AsyncTask 运用的场景就是我们需要进行一些耗时的操作,耗时操作完成后更新主线程,或者在操作过程中对主线程的UI进行更新。AsycnTask<Params,Progress,Result>是一个抽象类,有三个泛型参数,分别对应启动任务执行的输入参数类型,后台任务完成的进度值类型,执行结果类型。
我们需要重载四个方法,onPreExecute()执行初始化工作;doInBackground(Params...)用于耗时操作;可以调用publishProgress()跟新进度;onProgressUpdate()用于进度更新;onPostExecute()用于处理结果
缺陷:AsyncTask中维护着一个长度为128的线程池,同时可以执行5个工作线程,还有一个缓冲队列,当线程池中已有128个线程,缓冲队列已满时,如果此时向线程提交任务,将会抛出RejectedExecutionException。
在3.0以前,最大支持128个线程的并发,10个任务的等待。在3.0以后,无论有多少任务,都会在其内部单线程执行
解决:由一个控制线程来处理AsyncTask的调用判断线程池是否满了,如果满了则线程睡眠否则请求AsyncTask继续处理。
1 0
- AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?
- AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?
- PID是什么?在做系统的故障排除时如何使用它?
- PID是什么?在做系统的故障排除时如何使用它?
- PID是什么?在做系统的故障排除时如何使用它?
- Redis是什么,它的常用命令及它的应用场景
- AsyncTask 使用和缺陷
- 在使用AsyncTask的时候我们可以看到几个明显的缺陷和问题
- AsyncTask的缺陷
- AsyncTask的缺陷
- AsyncTask的缺陷
- AsyncTask的缺陷
- AsyncTask的缺陷
- Android AsyncTask的缺陷
- 探讨AsyncTask的缺陷
- AsyncTask的缺陷
- AsyncTask的缺陷
- 探讨AsyncTask的缺陷
- LeetCode--200. Number of Islands
- Unity协程(Coroutine)
- 关于华为机试的一点建议
- PAT (Advanced Level) Practise 1019 General Palindromic Number (20)
- hdu 2795--简单线段树
- AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?
- hdoj 2058 The sum problem 【等差数列求和】
- 求最大公约数算法(欧几里得算法)的实现!!!
- MFC 动态类型识别思路
- 操作系统面试题
- 层次聚类的介绍
- 为什么不要用eval函数
- 在Linux中安装JDK步骤过程
- Delete Node in a Linked List