标签:android应用
package com.example.android_asynctask; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends Activity { private Button downbtn; private TextView textView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); downbtn = (Button)findViewById(R.id.download); textView = (TextView)findViewById(R.id.text); progressBar = (ProgressBar)findViewById(R.id.progressBar); final DownloadTest download = new DownloadTest(textView,progressBar); //获取一个DownloadTest对象,并传递组件对象参数 downbtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { download.execute(200); } }); } }
package com.example.android_asynctask; import android.graphics.Color; import android.os.AsyncTask; import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; public class DownloadTest extends AsyncTask<Integer,Integer,String> { private TextView tv; private ProgressBar pb; //带参数构造方法 DownloadTest(TextView text,ProgressBar bar) { this.tv = text; this.pb = bar; } //不带参数构造方法 DownloadTest() { } /*1.onPreExecute方法 * 为子线程(后台)运行初始化相关内容 */ protected void onPreExecute() { tv.setVisibility(View.VISIBLE); //设置显示文本组件 pb.setVisibility(View.VISIBLE); //设置显示进度条 super.onPreExecute(); } /*2.doInBackground方法 * 运行一个后台线程,该线程实现每arg0[0]毫秒调用一次onProgressUpdate方法 */ protected String doInBackground(Integer... arg0) { for(int i=0;i<100;i++) { publishProgress(i); //调用onProgressUpdate方法并传递参数i try { Thread.sleep(arg0[0]); //累加一次,线程休眠argo[0]毫秒 } catch (InterruptedException e) { e.printStackTrace(); } } return "下载完毕"; //后台子线程运行完毕后,返回的值 } /*3.onProgressUpdate方法 * 调用publishProgress(i)时调用该方法,并传递参数i给形参values[0]*/ @Override protected void onProgressUpdate(Integer... values) { pb.setProgress(values[0]); //设置进度条值 tv.setText("已经下载"+values[0]+"%"); //文本组件显示提示信息 super.onProgressUpdate(values); } /*4.onPostExecute * 处理后台线程得到的结果 * */ protected void onPostExecute(String result) { pb.setVisibility(View.INVISIBLE); //隐藏进度条 tv.setVisibility(View.VISIBLE); //显示UI文本显示框组件 tv.setText(result); tv.setTextSize(20); tv.setTextColor(Color.RED); super.onPostExecute(result); } }
Android笔记二十六.Android异步任务处理(AsyncTask)
标签:android应用
原文地址:http://blog.csdn.net/u012637501/article/details/44245555