异步任务的应用

最近在看异步问题,异步过程中最重要的方法是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();

}

}

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值