WEB开发网
开发学院手机开发Android 开发 Android -- AsyncTask实例 阅读

Android -- AsyncTask实例

 2010-09-10 00:39:00 来源:WEB开发网   
核心提示:2.doInBackground(Params...), onPreExecute()完成执行,立刻调用后台线程,Android -- AsyncTask实例(2),这步被用于执行较长时间的后台计算,异步任务的参数也被传到这步,我就不麻烦写了,写几个变态的for循环算了for (int i = 0; i < 10

2.doInBackground(Params...), onPreExecute()完成执行,立刻调用后台线程,这步被用于执行较长时间的后台计算。异步任务的参数也被传到这步。计算的结果必须在这步返回,将传回到上一步。

3.onProgressUpdate(Progress...),一次呼叫 publishProgress(Progress...)后调用 UI线程,执行的时机没有定义。这个方法用于在用户界面显示进度,当后台计算还在进行时。例如:这个方法可以被用于一个进度条动画或在文本域显示日志。

4.onPostExecute(Result), 当后台计算结束时,调用 UI线程。后台计算结果作为一个参数传递到这步。

线程规则:

有一些线程规则必须去遵守,这个类才会正确的工作:

*任务实例 必须创建在 UI线程

* execute(Params...)必须在 UI线程上调用

*不要手动调用 onPreExecute(), onPostExecute(Result), doInBackground(Params...), onProgressUpdate(Progress...)

*任务会执行仅一次(假如有第二个尝试去执行,将抛出一个异常)

下面上一实例(程序 启动的初始化进度条):

项目结构(如图):

public class Double extends Activity {

public ProgressBar pBar;

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

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

pBar = (ProgressBar) findViewById(R.id.progress_bar);

//线程规则二:execute(Params...)必须在UI线程上调用

new AsyncLoader().execute((Void)null);

}

public void initProgress() {

pBar.setProgress(0);

//这里可以做一些初始化工作,我就不麻烦写了,写几个变态的for循环算了

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

System.out.println("***********" + i + "*************");

}

pBar.setProgress(30);

//这里可以做一些初始化工作,我就不麻烦写了,写几个变态的for循环算了

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

System.out.println("***********" + i + "*************");

Tags:Android AsyncTask 实例

编辑录入:coldstar [复制链接] [打 印]
赞助商链接