使用异步任务下载--疯狂android讲义实例

来源:互联网 发布:八进制转十进制算法 编辑:程序博客网 时间:2024/06/07 11:00
package com.example.android_test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import android.app.Activity;import android.app.ProgressDialog;import android.content.Context;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {TextView show;EditText editText;Button ok;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);show=(TextView) findViewById(R.id.show);editText=(EditText) findViewById(R.id.et);ok=(Button) findViewById(R.id.ok);ok.setOnClickListener(new OnClickListener() {public void onClick(View v) {DownTask task=new DownTask(MainActivity.this);try {task.execute(new URL("http://"+editText.getText().toString()));} catch (MalformedURLException e) {e.printStackTrace();}}});}class DownTask extends AsyncTask<URL, Integer, String>{ProgressDialog progressDialog;int hasRead=0;Context mContext;DownTask(Context context){mContext=context;}@Overrideprotected String doInBackground(URL... params) {StringBuilder sb=new StringBuilder();try {URLConnection conn= params[0].openConnection();BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));String line=null;while ((line=br.readLine())!=null) {sb.append(line+"\n");hasRead++;publishProgress(hasRead);/////更新进度条}return sb.toString();} catch (IOException e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(String result) {//返回html页面内容show.setText(result);progressDialog.dismiss();}@Overrideprotected void onPreExecute() {progressDialog=new ProgressDialog(mContext);progressDialog.setTitle("任务正在执行中..");progressDialog.setMessage("请等待...");progressDialog.setCancelable(false);progressDialog.setMax(100);progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//不明确具体进度,动画效果progressDialog.setIndeterminate(false);progressDialog.show();}@Overrideprotected void onProgressUpdate(Integer... values) {show.setText("已经读取了【"+values[0]+"】行!");progressDialog.setProgress(values[0]);}}}


0 0
原创粉丝点击