Android之AsyncTask介绍(一)

本文转自Google Android官网文档翻译

AsyncTask可以让程序进行异步工作,它在一个线程中执行某些操作,之后将结果返回给UI线程。

    使用AsyncTask类时,你需要继承AsyncTask类并实现doInBackground()回调方法。要更新UI界面,需要实现onPostExecute(),并从doInBackground()方法中获得结果,最后,你可以在UI线程中调用execute()方法来执行操作,这样就可以安全的更新UI界面。

    例如,我们用AsynTask来实现上面的示例:

public void onClick(View v) {
    new DownloadImageTask().execute("http://example.com/image.png");
 }
 private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    /** 该方法运行在后台线程中。参数来自AsyncTask.execute()方法,
         *这里将主要负责执行那些很耗时的后台处理工作。*/
    protected Bitmap doInBackground(String... urls) {
        return loadImageFromNetwork(urls[0]);
    }
 
    /** 后台的计算结果将通过该方法传递到UI 线程,并且在界面上展示给用户*/
    protected void onPostExecute(Bitmap result) {
        mImageView.setImageBitmap(result);
    }
 }

因为AsyncTask将工作分成了两部分,UI线程和工作线程都做自己应该做的那部分任务,因此我们就可以简单的实现一个安全的UI更新任务了。
    更多关于AsyncTask的说明请参看AsyncTask类的参考,这里简单介绍下它是如何工作的:

  • AsyncTask定义了三种泛型类型 Params,Progress和Result。Params是启动任务执行的输入参数,比如HTTP请求的URL。Progress是后台任务执行的百分比。Result是后台执行任务最终返回的结果,比如String,Integer等。
  • doInBackground()会在工作线程中自动执行。
  • onPreExecute(), onPostExecute(), and onProgressUpdate()这三个方法都是在UI线程中调用。
  • doInBackground()方法返回的值会传递给onPostExecute()方法。
  • 你可以在doInBackground()方法中随时调用publishProgress()方法以此在UI线程中更新执行进度。
  • 你可以随时在任何线程中取消任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值