可移植的Android异步任务AsyncTask类
来源:互联网 发布:vcr制作软件破解 编辑:程序博客网 时间:2024/06/03 17:25
在其他类使用时,
Go_AsyncTask mytask = new Go_AsyncTask mytask ();
mytask.excute(url);获取网络返回的数据,进行解析即可。
AsyncTask<String, Integer, String>{}参数的类型,Integer为进度,必须是大写的,不能写成int或者小写的integer。
package com.asynctest;import java.io.IOException;import org.apache.http.Header;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.params.HttpClientParams;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpConnectionParams;import org.apache.http.params.HttpParams;import org.apache.http.params.HttpProtocolParams;import org.apache.http.util.EntityUtils;import android.os.AsyncTask;import android.util.Log;/** * * @author Ryan * */public class Go_AsyncTask extends AsyncTask<String, Integer, String> {private String httpUrl;private SuccessCallback successCallback;private FailCallback failCallback;private UpdateProgressCallback updateProgressCallback;public Go_AsyncTask(SuccessCallback successCallback,FailCallback failCallback,UpdateProgressCallback updateProgressCallback) {this.successCallback = successCallback;this.failCallback = failCallback;this.updateProgressCallback = updateProgressCallback;}@Overrideprotected String doInBackground(String... params) {// TODO Auto-generated method stubhttpUrl = params[0];HttpClient httpClient = GetHttpClient();publishProgress(0);HttpGet httpGet = new HttpGet(httpUrl.replaceAll(" ", "%20"));String result = null;try {publishProgress(10);HttpResponse httpResponse = httpClient.execute(httpGet);publishProgress(60);int Code = httpResponse.getStatusLine().getStatusCode();switch (Code) {case 300:case 301:case 302:case 303:case 304:case 305:case 306:case 307:Header head = httpResponse.getFirstHeader("Location");result = head.getValue();Log.v("REDIRECTING LOCATION", result);Log.v("HTTPRESPONSE", getRes(httpResponse));break;case 200:publishProgress(80);result = EntityUtils.toString(httpResponse.getEntity());break;case 400:case 500:case 404:default:result = null;break;}} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}publishProgress(100);return result;}@Overrideprotected void onProgressUpdate(Integer... progress) {// TODO Auto-generated method stubupdateProgressCallback.updatePogress(progress[0]);}@Overrideprotected void onPostExecute(String result) {// TODO Auto-generated method stubif (result != null) {if (successCallback != null) {successCallback.onSuccess(result);}} else {if (failCallback != null) {failCallback.onFail();}}}private HttpClient GetHttpClient() {// TODO Auto-generated method stubHttpParams httpParams = new BasicHttpParams();// setup timeout parameter and socket sizeHttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);HttpConnectionParams.setSocketBufferSize(httpParams, 8196);// 8MB// redirect HttpClientParams.setRedirecting(httpParams, true);HttpClientParams.setRedirecting(httpParams, false);// user agentString userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2)Gecko/20100115Firefox/3.6";HttpProtocolParams.setUserAgent(httpParams, userAgent);HttpClient httpClient = new DefaultHttpClient(httpParams);return httpClient;}private String getRes(HttpResponse httpResponse) {Header[] headers = null;Header header = null;headers = httpResponse.getAllHeaders();StringBuffer sb = new StringBuffer();for (int i = 0; i < headers.length; i++) {header = headers[i];sb.append(header.getName() + ": " + header.getValue() + "\r\n");}return sb.toString();}//Interface for userpublic interface FailCallback {void onFail();}public interface SuccessCallback {void onSuccess(String result);}public interface UpdateProgressCallback {void updatePogress(int progress);}}
1 0
- 可移植的Android异步任务AsyncTask类
- android的异步任务AsyncTask
- Android异步任务AsyncTask
- Android--AsyncTask异步任务
- Android AsyncTask异步任务
- Android 异步任务 AsyncTask
- android 异步任务 AsyncTask
- Android AsyncTask 异步任务
- Android AsyncTask异步任务
- 【Android】异步任务AsyncTask
- Android AsyncTask异步任务
- android AsyncTask异步任务
- Android异步任务AsyncTask
- Android:AsyncTask -- 异步任务
- Android 异步任务:AsyncTask
- Android异步任务AsyncTask
- Android异步任务AsyncTask
- Android异步任务AsyncTask
- 第89讲:Spark Streaming on Kafka解析和安装实战
- CRichEditCtrl使用大全
- UVA_11292_Dragon of Loowater
- MIFARE DESFire卡介绍
- 文件管理 - 1
- 可移植的Android异步任务AsyncTask类
- error C2088: '-' : illegal for union
- 笔记二:计数排序、选择排序、冒泡排序、插入排序
- inf文件的编写
- C/C++复习:分数减法(结构体)
- HDU 1664 放苹果
- 【bzoj2201】【彩色圆环】【概率dp】
- 简述基本TCP套接字编程(一)
- 最全面的 Android 编码规范指南