本文主要是介绍Android:异步任务AsyncTask、execute、publishProgress、onProgressUpdate,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android:异步任务AsyncTask、execute、publishProgress、onProgressUpdate
作者: glblong 发布日期:2013-05-24 09:12:42
我来说两句(0)
Tag标签: 异步任务
-
001.publicclassMainActivityextendsActivityimplementsOnClickListener002.{003.004.privateTextView textView;005.privateProgressBar progressBar;006.007.classMyAsyncTaskextendsAsyncTask<String, Integer, String>008.{009./**010.* 异步任务:AsyncTask<Params, Progress, Result>011.* 1.Params:UI线程传过来的参数。012.* 2.Progress:发布进度的类型。013.* 3.Result:返回结果的类型。耗时操作doInBackground的返回结果传给执行之后的参数类型。014.*015.* 执行流程:016.* 1.onPreExecute()017.* 2.doInBackground()-->onProgressUpdate()018.* 3.onPostExecute()019.*/020.@Override021.protectedvoidonProgressUpdate(Integer... values)//执行操作中,发布进度后022.{023.progressBar.setProgress(values[0]);//每次更新进度条024.}025.@Override026.protectedvoidonPreExecute()//执行耗时操作之前处理UI线程事件027.{028.progressBar.setVisibility(View.VISIBLE);//点击之后,下载执行之前,设置进度条可见029.}030.031.@Override032.protectedString doInString... params)//执行耗时操作033.{034.//在此方法执行耗时操作,耗时操作中发布进度,更新进度条035.//String result = download();036.for(inti =0; i <10; i++)037.{038.try039.{040.Thread.sleep(1000);041.publishProgress(i *10);//进度条每次更新10%,执行中创建新线程处理onProgressUpdate()042.}043.catch(InterruptedException e)044.{045.e.printStackTrace();046.}047.048.}049.return"下载完成!";050.}051.052.@Override053.protectedvoidonPostExecute(String result)//执行耗时操作之后处理UI线程事件054.{055.//在此方法执行main线程操作056.progressBar.setVisibility(View.GONE);//下载完成后,隐藏进度条057.textView.setText(result);058.}059.060.}061.@Override062.protectedvoidonCreate(Bundle savedInstanceState)063.{064.super.onCreate(savedInstanceState);065.setContentView(R.layout.activity_main);066.067.findViewById(R.id.button1).setOnClickListener(this);068.textView = (TextView) findViewById(R.id.textView1);069.progressBar = (ProgressBar) findViewById(R.id.progressBar1);070.}071.072.@Override073.publicbooleanonCreateOptionsMenu(Menu menu)074.{075.getMenuInflater().inflate(R.menu.activity_main, menu);076.returntrue;077.}078.@Override079.publicvoidonClick(View v)080.{081.switch(v.getId())082.{083.caseR.id.button1:084.btnClick();085.break;086.087.default:088.break;089.}090.}091.privatevoidbtnClick()//创建AsyncTask对象,执行任务092.{093.MyAsyncTask asyncTask =newMyAsyncTask();094.asyncTask.execute("http://www.google.com");//可以通过此处传参数给AsyncTask,execute方法只能在UI线程里使用095.}096.privateString download()//下载,耗时操作097.{098.try099.{100.Thread.sleep(3000);101.}102.catch(InterruptedException e)103.{104.e.printStackTrace();105.}106.return"下载完成!";107.}108.}
这篇关于Android:异步任务AsyncTask、execute、publishProgress、onProgressUpdate的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!