【Android】手写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() {
<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个


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值