Android默认UI线程阻塞超过20s,就会引发ANR异常。

AsyncTask 抽象类,

分别用于

启动任务,输入的参数

进度值的展示

结果的返回



重写相应方法


package down;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 com.example.asynctask.R;import android.app.Activity;import android.app.ProgressDialog;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class Main extends Activity{private TextView tx;@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main);tx = (TextView) findViewById(R.id.textview);}public void download(View v){try{//启动任务URL url = new URL("http://www.w3school.com.cn/");AsyncTaskTest ans = new AsyncTaskTest(this);ans.execute(url);} catch (MalformedURLException e){// TODO Auto-generated catch blocke.printStackTrace();}}class AsyncTaskTest extends android.os.AsyncTask{private ProgressDialog pDialog;private Context mContext;private int hasRead = 0;public AsyncTaskTest(Context mContext){// TODO Auto-generated constructor stubthis.mContext = mContext;}//任务@Overrideprotected String doInBackground(URL... params){// TODO Auto-generated method stubtry{StringBuilder sb = new StringBuilder();URLConnection conn = params[0].openConnection();BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = null;while ((line = br.readLine()) != null){hasRead++;sb.append(line + "\n");onProgressUpdate(hasRead);}return sb.toString();} catch (IOException e){// TODO Auto-generated catch blocke.printStackTrace();}return null;}//执行任务后@Overrideprotected void onPostExecute(String result){// TODO Auto-generated method stubsuper.onPostExecute(result);tx.setText(result);pDialog.dismiss();}//执行任务前@Overrideprotected void onPreExecute(){// TODO Auto-generated method stubsuper.onPreExecute();pDialog = new ProgressDialog(mContext);pDialog.setTitle("任务下载中");pDialog.setMessage("任务正在下载中---");pDialog.setCancelable(false);pDialog.setMax(202);pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);pDialog.setIndeterminate(false);pDialog.show();}@Overrideprotected void onProgressUpdate(Integer... values){// TODO Auto-generated method stubsuper.onProgressUpdate(values);pDialog.setProgress(values[0]);}}}





更多相关文章

  1. Android中Dex分包实践
  2. Android(安卓)HttpClient post MultipartEntity - Android(安卓)
  3. 2010.11.16———android Camera 拍照的两个问题
  4. 编译 Android版本的Openal方式
  5. Android下载网络图片到本地
  6. Android实现点击两次返回键退出
  7. Android(安卓)SDK下载和更新失败的解决方法
  8. Android中有关Handler的使用(二)
  9. gradle-xxx.jar下载地址和gradle-xxx.zip下载地址

随机推荐

  1. Jenkins构建时’Users/Mac/Library/Andro
  2. Android: android source code online
  3. Android之MVP 模式:简单易懂的介绍方式
  4. android上的i-jetty
  5. Android(安卓)button 性能探讨
  6. Android™ 1.5 android.R.drawable Icon
  7. Android学习网站
  8. 将软键盘变成搜索
  9. 【Android车载系统 News | Tech 5】车载
  10. Android HttpClient网络通信