android一个简单的异步AsyncTask下载数示例,简单下载(07)

public class MainActivity extends Activity {
	private ImageView image_load;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.image_load = (ImageView) this.findViewById(R.id.image_load);
	}

	public void download(View view) {
		String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";
		// 调用异步任务,执行网络访问,注意联网要权限
		new MyTask(this).execute(url);
		// 不用提示框时new MyTask()不加加入当前this,不用构造函数,
	}

	class MyTask extends AsyncTask<String, Void, byte[]> {
		/*
		 * //AsyncTask三个重要参数:Params: 是一个可变数组 //Progress:进度条,没有时写为void ,
		 * //Result:结果参数,通常为byte[]数组
		 */
		private ProgressDialog pDialog;// 不用在布局文件配置这个对话框

		public MyTask(Context context) {
			// 建立提示对话框
			pDialog = new ProgressDialog(context);// 当前上下文的对话框
			pDialog.setTitle("提示");
			pDialog.setMessage("正在下载.....");
			pDialog.setIcon(R.drawable.ic_launcher);
		}

		// 主线程运行, 在doInBackground以前执行
		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			Log.i("MainActivity", "onPreExecute : "
					+ Thread.currentThread().getName());
			pDialog.show();// 在doInBackground以前执行,打开对话框
		}

		@Override
		// 在子线程中调用后台执行
		protected byte[] doInBackground(String... params) {
			Log.i("MainActivity", "onPostExecute : "
					+ Thread.currentThread().getName());
			String url = params[0];
			HttpClient client = new DefaultHttpClient();
			HttpGet get = new HttpGet(url);
			try {
				HttpResponse response = client.execute(get);
				if (response.getStatusLine().getStatusCode() == 200) {
					return EntityUtils.toByteArray(response.getEntity());
				}
			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}

		// onPostExecute在主线程中执行,在doInBackground后执行,进行UI更新操做
		@Override
		protected void onPostExecute(byte[] result) {
			Log.i("MainActivity", "onPostExecute : "
					+ Thread.currentThread().getName());
			super.onPostExecute(result);
			if (result != null) {
				Bitmap bitmap = BitmapFactory.decodeByteArray(result, 0,
						result.length);
				image_load.setImageBitmap(bitmap);
			} else {
				Toast.makeText(MainActivity.this, "网络异常!", Toast.LENGTH_SHORT)
						.show();
			}
			pDialog.dismiss();// 下载完关闭对话框
		}
	}
}
//布局
<ImageView
        android:id="@+id/image_load"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn_load"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="download"
        android:layout_below="@+id/image_load"
        android:text="下载" />
相关文章
相关标签/搜索