AsynTask的封装,通过接口回调的方式

来源:互联网 发布:求购淘宝店铺 编辑:程序博客网 时间:2024/06/08 04:56


public class AsynTaskHelper {
private static final String TAG = "AsynTaskHelper";


public void downloadData(Context context , String url, OnDataDownloadListener downloadListener) {
new MyTask(context, downloadListener).execute(url);
}


private class MyTask extends AsyncTask<String, Void, byte[]> {
private OnDataDownloadListener downloadListener;
private ProgressDialog pdDialog;
private Context context;


public MyTask(Context context,OnDataDownloadListener downloadListener) {
this.context = context;
this.downloadListener = downloadListener;
pdDialog = new ProgressDialog(context);
pdDialog.setTitle("提示:");
pdDialog.setIcon(R.drawable.ic_launcher);
pdDialog.setMessage("正在下载..... ");
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pdDialog.show();
}


@Override
protected byte[] doInBackground(String... params) {
BufferedInputStream bis = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {

URL url = new URL(params[0]);
HttpURLConnection httpConn = (HttpURLConnection) url
.openConnection();
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
if (httpConn.getResponseCode() == 200) {
bis = new BufferedInputStream(httpConn.getInputStream());
byte[] buffer = new byte[1024 * 8];
int c = 0;
while ((c = bis.read(buffer)) != -1) {
baos.write(buffer, 0, c);
baos.flush();
}
return baos.toByteArray();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}


@Override
protected void onPostExecute(byte[] result) {

downloadListener.onDataDownload(result);
pdDialog.dismiss();
super.onPostExecute(result);
}
}


public interface OnDataDownloadListener {
void onDataDownload(byte[] result);
}
}
0 0