异步任务的应用

最近在看异步问题,异步过程中最重要的方法是AsyncTask<Void,Void,Void>类这个类有三个类型,里面可以为其他的类如String等这里就以Void类为例:

第一个VoidAsyncTask类中复写方法doInBackground的参数类型,这个参数一般是数组,

第二个Void类型是onProgressUpdate的参数类型,一般也是数组,

第三个Void类型是doInBackground返回值类型也是最后执行的onPostExcute参数类型。

下面是自己做的有关简单异步应用:

首先是Main函数:

package com.zzy.demo1;

 

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 Demo1Activity extends Activity {

    /** Called when the activity is first created. */

    private TextView textView=null;

    private Button button=null;

    private ProgressBar progressBar=null;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        this.textView=(TextView)findViewById(R.id.text);

        this.button=(Button)findViewById(R.id.button);

        this.progressBar=(ProgressBar)findViewById(R.id.gress1);

         this.button.setOnClickListener(new OnClickListener()

              {

                    

                     @Override

                     public void onClick(View v)

                     {

                            // TODO Auto-generated method stub

                            //设置对象并将textViewprogressBar 传递过去

                            asynctask task=new asynctask(textView, progressBar);

                            //执行execute方法

                            task.execute(1000);

                           

                           

                           

                     }

              });

       

       

       

       

    }

}

然后是异步操作的设置:

package com.zzy.demo1;

 

import android.R.integer;

import android.os.AsyncTask;

import android.widget.ProgressBar;

import android.widget.TextView;

 

publicclass asynctask extends AsyncTask<Integer, Integer, String>

{

   //这里会首先执行onPreExcute方法

   //然后执行doInBackground方法

    private TextView textView=null;

    private ProgressBar progressBar=null;

    public asynctask(TextView textView,ProgressBar progressBar){

      this.textView=textView;

      this.progressBar=progressBar;

     

    }

   @Override

   //后台运行不会对当前UI产生影响

   protected String doInBackground(Integer... params)

   {

      // TODO Auto-generated method stub

        for(int i=0;i<100;i+=10)

        {

          network.operator(i);

          onProgressUpdate(i);

         

        }

     

     

     

      returnnull;

   }

   //最后运行这个函数

   protectedvoid onPostExecute(String result)

  

   {

      textView.setText("GAME    OVER");

   }

   //传递过来首先运行这个函数

   protectedvoid onPreExecute()

   {

      textView.setText("GAME    BEGIN");

   }

   //设置进度条

   protectedvoid onProgressUpdate(Integer... params)

   {

      progressBar.setProgress(params[0]);

     

   }

  

  

  

  

}

最后是执行线程部分操作的代码:

package com.zzy.demo1;

 

import android.R.integer;

 

publicclass network extends Thread

{

   publicstaticvoid operator(int i)

   {

     try

     {  

        System.out.println("这是第"+i+"次休眠");

         Thread.sleep(2000);

     } catch (InterruptedException e)

     {

        // TODO Auto-generated catch block

        e.printStackTrace();

     }

    

   }

  

  

 

}

总体来说 不是多难只是要理解他的操作过程以及函数的实现。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值