android 异步加载框架 原理完全解析

一、手写异步加载框架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个


上一篇:CSS魔法堂:重拾Border之——不仅仅是圆角


下一篇:Logistic回归模型和Python实现