- handler的基础使用:
- class MyOnclickListener implements OnClickListener {
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- // 响应Handler异步方式
- case R.id.downbtn1:
- // 显示进度对话框,这里也可以使用进度条,在handleMessage方法中更新进度
- dialog = ProgressDialog.show(DownLoadImageActivity.this, "",
- "正在下载,请稍等···");
- // 新建一个子线程来发送消息
- new Thread() {
- @Override
- public void run() {
- try {
- // 让ProgressDialog显示一会儿。。。。
- Thread.sleep(2000);
- URL url = new URL(PATH);
- // 建立网络连接
- HttpURLConnection conn = (HttpURLConnection) url
- .openConnection();
- InputStream inputStream = conn.getInputStream();
- // 获取图片数据
- bitmap = BitmapFactory.decodeStream(inputStream);
- inputStream.close();
- Message message = new Message();
- message.what = 1;
- // 发送消息到消息队列中
- handler.sendMessage(message);
- } catch (Exception e) {
- Message message = new Message();
- message.what = -1;
- handler.sendMessage(message);
- e.printStackTrace();
- }
- }
- }.start();
- break;
- // 响应AsyncTask异步方式
- case R.id.downbtn2:
- new DownImageTask().execute(PATH);
- break;
- }
- }
- }
- // Handler异步方式下载图片
- private Handler handler = new Handler() {
- public void handleMessage(android.os.Message msg) {
- ImageView imageView;
- switch (msg.what) {
- case 1:
- // 下载成功
- imageView = (ImageView) findViewById(R.id.image);
- dialog.dismiss();
- imageView.setImageBitmap(bitmap);
- break;
- case -1:
- // 下载失败使用默认图片
- imageView = (ImageView) findViewById(R.id.image);
- dialog.dismiss();
- imageView.setBackgroundResource(R.drawable.icon);
- break;
- }
- };
- };
Asynctask的基础使用:
private void healthCount() { new AsyncTask<Void, Void, ApiBack>() { @Override protected ApiBack doInBackground(Void... params) { // TODO Auto-generated method stub ApiBack back = null; try { back = ApiJsonParser.healthdatacount(msApp.getSessionId(), 2, startTime1,0); } catch (ApiNetException e) { e.printStackTrace(); } catch (ApiSessionOutException e) { // TODO Auto-generated catch block e.printStackTrace(); } return back; } @Override protected void onPostExecute(ApiBack result) { // TODO Auto-generated method stub super.onPostExecute(result); if (result != null) { //处理异步请会返回的的back,这已经在主线程里面可已更新UI } else { } } }.execute();//让异步开始方法,记得调用。不然异步不会执行。 }