一、手写异步加载框架MyAsycnTask(核心原理)
1.我为大家手写了一个异步加载框架,涵盖了异步加载框架核心原理。
MyAsycnTask.java
import android.os.Handler; public abstract class MyAsycnTask { private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { postTask(); }; }; /** * 在子线程之前执行的操作 */ public abstract void preTask(); /** * 在子线程之中执行的操作 */ public abstract void doinBack(); /** * 在子线程之后执行的操作 */ public abstract void postTask(); /** * 执行 */ public void execute(){ preTask(); new Thread(){ public void run() { doinBack(); handler.sendEmptyMessage(0); }; }.start(); } }
2.调用手写异步加载框架
//异步加载框架 new MyAsycnTask() { @Override public void preTask() { //<span style="font-family: Arial, Helvetica, sans-serif;">在子线程之前执行的操作</span> } @Override public void postTask() { //在子线程之中执行的操作 } @Override public void doinBack() { //在子线程之后执行的操作 } }.execute();
二、系统异步加载框架AsycnTask
系统异步加载框架AsycnTask三个参数:提高兼容性
参数1:子线程执行所需的参数
参数2:显示当前的加载进度
参数3:子线程执行的结果
调用系统异步加载框架
new AsyncTask<String, Integer, String>(){ //在子线程之中执行的操作 @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub return null; } //在子线程之前执行的操作 @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); } //在子线程之后执行的操作 @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); } //显示当前加载进度 @Override protected void onProgressUpdate(Integer... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); } }.execute();
三、补充
1.AsyncTask : 面试必问,异步加载框架的原理,手写一个异步加载框架,百度面试:异步加载在执行多少个的时候就跟new没有区别,5个