AsyncTask
基本使用
protected void onPreExecute()
protected abstract Result doInBackground(Params... params)
protected void onPostExecute(Result result)
protected void onProgressUpdate(Progress... values)
AsyncTask源码分析
private static final int CORE_POOL_SIZE = 5; //核心线程数
private static final int MAXIMUM_POOL_SIZE = 128; //最大线程数
private static final int KEEP_ALIVE = 1; //超时时间,当线程数超过核心线程数时,超过这个时间的空线程就会被销毁,直到线程数等于核心线程
AsyncTask缺陷
- 1.同时只有5个线程去访问网络–>这个是重点
- 2.线程数目超过128,会抛异常–>这个情况其实还好;
AsyncTask版本差异
- CORE_POOL_SIZE MAXIMUM_POOL_SIZE KEEP_ALIVE在不同的版本上.值是不一样;
- 1.5前是串行执行的.每次执行1个任务
- 1.6-2.3之前的版本.是并行执行的.每次执行5个任务
3.0后提供串行和并行,默认情况是串行
executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, null);//串行 executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);//并行
AsyncTask简单封装
实际开发我们会去继承Asynctask