从网上获取一个网页,在一个TextView中将其源代码显示出来 。下载过程中有进度条显示进度。
任务类
public class NetTask extends GenericTask { public String s = null; @Override protected TaskResult _doInBackground(TaskParams... params) { TaskParams param = params[0]; try { HttpClient client = new DefaultHttpClient(); // params[0]代表连接的url HttpGet get = new HttpGet(param.getString("url")); HttpResponse response = client.execute(get); HttpEntity entity = response.getEntity(); long length = entity.getContentLength(); InputStream is = entity.getContent(); 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 TaskResult.OK; } catch (Exception e) { e.printStackTrace(); } return TaskResult.OK; } }
UI界面
public class AndroidtestActivity extends Activity { private TextView message; private Button open; private EditText url; ProgressDialog pdialog=new ProgressDialog(this, 0); private NetTask netTask; @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); open = (Button) findViewById(R.id.open); open.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { connect(); } }); } private void connect() { if (netTask != null && netTask.getStatus() == GenericTask.Status.RUNNING) { return; } else { netTask = new NetTask(); netTask.setListener(netTaskListener); TaskParams params = new TaskParams(); params.put("url", url.getText().toString()); netTask.execute(); } } private TaskListener netTaskListener = new TaskAdapter() { @Override public void onPreExecute(GenericTask task) { // 任务启动,可以在这里显示一个对话框,这里简单处理 message.setText("任务形始"); 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 public void onPostExecute(GenericTask task, TaskResult result) { if (result == TaskResult.OK) { message.setText(netTask.s); pdialog.dismiss(); } } @Override public void onProgressUpdate(GenericTask task, Object value) { // 更新进度 System.out.println("" + value); message.setText("" + value); pdialog.setProgress((Integer) value); } }; }