super_zq的博客

存档和笔记

Android 笔记之 AsyncTask

AsyncTask

很多时候,需要异步执行任务,例如更新UI必须在主线程,internet任务必须在单独线程,
所以,从网上读取图片,然后显示,这么一个很简单的任务,就必须使用异步才能完成。

有一个简单的执行异步的类叫AsyncTask,提供一些便利的方法来执行异步任务。

  1. 建立一个自定义类,继承AsynkTask
  2. 覆盖类中的方法,以实现功能(具体如下)
  3. 在UI线程中创建该自定义类的实例,然后调用excute()方法
  4. 如果需要手动退出,调用cancel()方法
class MyAsync extends AsyncTask<Integer,Integer,String> {
    TextView textView;
    ImageView imageView;
    ProgressBar progressBar;

    public MyAsync(TextView tv,ImageView iv,ProgressBar pb) {
        this.textView = tv;
        this.imageView = iv;
        this.progressBar = pb;
    }

    @Override
    protected String doInBackground(Integer... integers) {
        return String.valueOf(integers[0]);
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);

        progressBar.setProgress(50);
        textView.setText(s);
    }
}

如上所示,这里面有3个主要方法
doinbackground,就是在新线程实现功能的方法,返回值就是需要获得的内容
onprogressupdate,就是在上述方法可能是一个很耗时的方法,这里可以用来更新UI显示运行进度,
所以里面可以设置一些在UI上显示进度的功能,自动调用。
onpostexcute,就是第一个方法在运行结束以后调用的,参数就是第一个方法的返回值。

很好理解吧。

一个AsyncTask实例智能调用一次,否则会抛出异常

阅读更多
版权声明:转载需标注出处和作者 https://blog.csdn.net/super_zq/article/details/52374144
文章标签: android
个人分类: Android
上一篇Android 显示图片的时候设置转换动画
下一篇Android 笔记之 设置应用的权限
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭