码迷,mamicode.com
首页 > 其他好文 > 详细

AsyncTask

时间:2015-01-27 21:36:23      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

Asynctask是android对java线程的一个封装,通常用于后台线程和UI线程的交互。直接看下面实例:

主UI Activity中执行:

        mprogressbar = (ProgressBar)findViewById(R.id.progressBar1);
        mtextview    = (TextView)findViewById(R.id.textView1);
        mbutton      = (Button)findViewById(R.id.button1);
        
        mprogressbar.setMax(10);
        
        mbutton.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                //AsyncTask只能在UI主线程中调用,且不能多次调用
                MyTask task = new MyTask(mtextview, mprogressbar);
                task.execute("fredric");
            }
        });    

自定义AsyncTask如下:

//AsyncTask是一个抽象类,其中定义三种泛型类型//AsyncTask<Params, Progress, Result>,其中:
//Params对应调用时传入的参数(即执行doInBackGroud时的参数,由execute传入),下例为String;

//Progress为中间进度条调用的参数(即执行onProgressUpdate时的参数,下例为Integer)
//Result为执行结束后的调用的参数(即执行onPostExecute时的参数)
public
class MyTask extends AsyncTask<String, Integer, String> { private TextView mtextview; private ProgressBar mprogressbar; public MyTask(TextView mtextview, ProgressBar mprogressbar) { super(); this.mtextview = mtextview; this.mprogressbar = mprogressbar; }
//AyncTask的耗时操作定义在此函数中
//其中publishProgress可以出发执行onProgressUpdats
//该方法在onPreExecute后执行
//该方法不运行在UI线程中,因此不能对UI进行操作,下面三个方法都可以,实例中操作了文本和进度条
//UI线程在执行doInBackground后无法再向该线程发送消息; @Override
protected String doInBackground(String... params) { // TODO Auto-generated method stub int i = 0; for(i = 0; i < 10; i++){ try { Thread.sleep(1000); publishProgress(i); } catch (InterruptedException e) { e.printStackTrace(); } } return i + "&" + params[0]; } @Override protected void onPreExecute() { mtextview.setText("开始执行线程"); } @Override protected void onProgressUpdate(Integer... values) { mprogressbar.setProgress(values[0]); } @Override protected void onPostExecute(String result) { mtextview.setText(result); } }

AsyncTask

标签:

原文地址:http://www.cnblogs.com/Fredric-2013/p/4253843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!