异步加载数据的三种实现
package com.testasyntextview;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.graphics.drawable.Drawable;import android.text.Html;import android.text.Spanned;public class HttpUtil {public static String getHtml(String path) throws Exception {URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5 * 1000);InputStream inStream = conn.getInputStream();// 通过输入流获取html数据byte[] data = readInputStream(inStream);// 得到html的二进制数据String html = new String(data, "utf-8");return html;}public static byte[] readInputStream(InputStream inStream) throws Exception {ByteArrayOutputStream outStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = inStream.read(buffer)) != -1) {outStream.write(buffer, 0, len);}inStream.close();return outStream.toByteArray();}public static Spanned fromHtml(String html) {Spanned sp = Html.fromHtml(html, new Html.ImageGetter() {@Overridepublic Drawable getDrawable(String source) {InputStream is = null;try {is = (InputStream) new URL(source).getContent();Drawable d = Drawable.createFromStream(is, "src");d.setBounds(0, 0, d.getIntrinsicWidth(),d.getIntrinsicHeight());is.close();return d;} catch (Exception e) {return null;}}}, null);return sp;}}