3 AsyncTask 浏览网页

来源:互联网 发布:华为交换机网管软件 编辑:程序博客网 时间:2024/06/05 17:35

--------------------------------.main.java---------------------


package com.example.nn;


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.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;


public class MainActivity extends ActionBarActivity {


EditText editText;
class DownTask extends AsyncTask<URL, Integer, String> {
//可变长的输入参数。与AsyncTask.excute()对应
ProgressDialog progressDialog;
//定义记录已经读取行的数量
int hasRead = 0;
Context context;


public DownTask(Context context) {
this.context = context;
}


@Override
protected String doInBackground(URL... params) {
StringBuilder stringBuilder = new StringBuilder();
try {
URLConnection connection = params[0].openConnection();
//打开connection连接对应的输入流,并将它包装成BufferedReader
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()
, "utf-8"));
String line = null;
while((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line + "\n");
hasRead++;
//AsyncTask的方法
publishProgress(hasRead);
}

return stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}


@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(this.context);
//设置对话框的标题
progressDialog.setTitle("任务正在执行中");
//设置对话框显示的内容
progressDialog.setMessage("任务正在。。。请等待");
//设置对话框不能点击“取消”按钮
progressDialog.setCancelable(false);
//设置该进度条的最大进度值
progressDialog.setMax(202);
//设置对话框的进度条风格
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置对话框的进度条是否显示进度
progressDialog.setIndeterminate(false);
progressDialog.show();
}


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


@Override
protected void onProgressUpdate(Integer... values) {
//更新进度
editText.setText("已经读取了" + values[0] + " 行");
progressDialog.setProgress(values[0]);
}



}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText1);
}

public void getOnclick(View view) throws MalformedURLException {
DownTask downTask = new DownTask(this);
downTask.execute(new URL("http://hao.360.cn/?1004"));
}


}


。。。。。。。。。。。。。。。main.xml。。。。。。。。。。。。。。。。。。。。。。。

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">


    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >


        <requestFocus />
    </EditText>


    <Button 
        android:onClick="getOnclick"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="获取质数"
        />
</LinearLayout>


、、记得添加权限:<uses-permission android:name="android.permission.INTERNET"/>

0 0
原创粉丝点击