一、手写异步加载框架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();
}
}
//异步加载框架
new MyAsycnTask() {
@Override
public void preTask() {
//<span style="font-family: Arial, Helvetica, sans-serif;">在子线程之前执行的操作</span>
}
@Override
public void postTask() {
<pre name="code" class="java"><span style="white-space:pre"> </span>//在子线程之中执行的操作
}@Overridepublic 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个