Android开发:后台异步任务之AsyncTask实现

本文介绍如何在Android开发中使用AsyncTask进行后台任务处理,避免UI卡顿,提升用户体验。包括ProgressDialog使用、AsyncTask继承及方法重写等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android开发中,经常要用到一些联网等长时间的操作,如果直接顺序执行的话,界面会暂时黑屏并卡死,这样给用户的体验并不好,这里我们可以用后台异步任务来实现这些操作。用eclipse新建Activity的时候,选择LoginActivity模版,会自动生成有登录操作的异步任务模版。


我们在执行后台任务时,弹出一个进度框ProgressDialog,给用户提供一种更好的体验:


1 ProgressDialog progress = new ProgressDialog(this);
2 progress.setMessage("Please wait ...");
我们要执行的后台任务通过继承AsyncTask类来实现,并重写doInBackground、onPostExecute两个方法,doInBackground方法执行后台任务,onPostExecute方法为任务执行后处理。AsyncTask类的详细介绍可参考官方文档:http://developer.android.com/reference/android/os/AsyncTask.htm。




 1 class LoginTask extends AsyncTask<Void, Void, Boolean> {
 2     
 3     @Override
 4     protected Boolean doInBackground(Void... args) {
 5         // 要执行的后台任务,登录、联网查询等。。。
 6         return true;
 7     }
 8 
 9     @Override
10     public void onPostExecute(Boolean result) {
11         task = null;
12         progress.dismiss();
13         
14         if (result) {
15             Toast.makeText(LoginActivity.this, "Success .", Toast.LENGTH_LONG).show();
16         } else {
17             Toast.makeText(LoginActivity.this, "Failed !", Toast.LENGTH_LONG).show();
18         }
19     }
20 }


在AsyncTask中,第一个Void是参数的类型,如果在执行任务的时候需要传递参数,可以改变这个类型,相应的doInBackground的参数类型也要改变;第二个Void是任务执行的进度,可以根据这个值控制进度条的提示;第三个Boolean是后台任务执行的返回结果,这里使用Boolean类型,根据返回的true/false判断任务是否执行成功,如果需要修改则onPostExecute方法的参数也要相应修改。


在界面控件的单击事件中添加对任务的调用:




 1 button.setOnClickListener(new OnClickListener() {
 2     @Override
 3     public void onClick(View v) {
 4         if(task != null) {
 5             Toast.makeText(LoginActivity.this, "Task is running ...", Toast.LENGTH_LONG).show();
 6             return ;
 7         }
 8         progress.show();
 9         task = new LoginTask();
10         task.execute((Void) null);
11     }
12 });


这样一来,点击按钮的时候会弹出一个进度框,并新建异步任务并执行,在执行过程中根据抛出的异常及其他条件判断返回true/false,在onPostExecute方法设置任务为空、进度框消失,根据任务执行结果执行后续相应处理。


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值