//第一个案例

class NewActivity extends Activity {

ImageView con=(ImageView) findViewById(R.id.imageView1);

public void onCreate(Bundle savedInstanceState) {

new MainLoadData().execute("");// 异步更新

}

//异步加载

class MainLoadData extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
getCurrentWeather();
return null;
}
protected void onPostExecute(Void result) {
// 通知界面刷新
WeatherHander weatherHander =new WeatherHander();
ArrayList<WeatherBean> weatherBeans=weatherHander.getWeathers();

Bitmap bitmap=weatherBeans.get(0).getIcon();
icon.setImageBitmap(bitmap);
TextView textView2=(TextView) findViewById(R.id.textView2);
textView2.setText(weatherBeans.get(0).getLow()+"-"+weatherBeans.get(0).getHigh()+"℃");
}

}

}


//第二个案例


package com.my.activity;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;


import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;


import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class NetworkActivity extends Activity{
private TextView message;
private Button open;
private EditText url;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.network);
message= (TextView) findViewById(R.id.message);
url= (EditText) findViewById(R.id.url);
url.setText("www.yahoo.com");
open= (Button) findViewById(R.id.open);
open.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
connect();
}
});


}


private void connect() {
PageTask task = new PageTask(this);
task.execute(url.getText().toString());
}




class PageTask extends AsyncTask<String, Integer, String> {
// 可变长的输入参数,与AsyncTask.exucute()对应
ProgressDialog pdialog;
public PageTask(Context context){
pdialog = new ProgressDialog(context, 0);
pdialog.setButton("cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i) {
dialog.cancel();
}
});
pdialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
finish();
}
});
pdialog.setCancelable(true);
pdialog.setMax(100);
pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pdialog.show();




}
@Override
protected String doInBackground(String... params) {


try{


HttpClient client = new DefaultHttpClient();
// params[0]代表连接的url
HttpGet get = new HttpGet(params[0]);
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
long length = entity.getContentLength();
InputStream is = entity.getContent();
String s = null;
if(is != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();


byte[] buf = new byte[128];


int ch = -1;


int count = 0;


while((ch = is.read(buf)) != -1) {


baos.write(buf, 0, ch);


count += ch;


if(length > 0) {
// 如果知道响应的长度,调用publishProgress()更新进度
publishProgress((int) ((count / (float) length) * 100));
}


// 让线程休眠100ms
Thread.sleep(100);
}
s = new String(baos.toByteArray()); }
// 返回结果
return s;
} catch(Exception e) {
e.printStackTrace();


}


return null;


}


@Override
protected void onCancelled() {
super.onCancelled();
}


@Override
protected void onPostExecute(String result) {
// 返回HTML页面的内容
message.setText(result);
pdialog.dismiss();
}


@Override
protected void onPreExecute() {
// 任务启动,可以在这里显示一个对话框,这里简单处理
message.setText("任务已启动");
}


@Override
protected void onProgressUpdate(Integer... values) {
// 更新进度
System.out.println(""+values[0]);
message.setText(""+values[0]);
pdialog.setProgress(values[0]);
}


}


}

更多相关文章

  1. Android中子线程网络查看器与Handler消息处理器
  2. kotlin 开发 android 程序中网络http请求和线程的使用
  3. 6 android 滑块和进度条
  4. 关于android主线程不能访问网络异常NetworkOnMainThreadExceptio
  5. android控件之ProgressBar进度条
  6. Android子线程其实也可以刷新UI。。。。
  7. 【转】android AsyncTask 为 多任务 多线程 解决方案

随机推荐

  1. protobuf系列-grpc快速开始(Android)
  2. Android的OpenGL学习笔记(4)
  3. 2.1做拐角的bug
  4. Android简明开发教程二:安装开发环境
  5. Android(安卓)Audio Play Out Channel
  6. Android(安卓)基础UI编程1
  7. 取值 1111
  8. Android计量单位px,in,mm,pt,dp,dip,sp和
  9. [Android] Android获取当前顶部Activity
  10. Android(安卓)Jni示例