在自己项目中,每当有耗时操作就是创建新的线程, 几乎忘记Android 还有自带异步线程工具AsyncTask ,其中底层已经用线程池管理线程,不用我们考虑线程的管理问题, 实际把其写到基类中

public class BaseActivity  extends AppCompatActivity{protected List<AsyncTask<Void, Void, Boolean>> myAsyncTasks = new ArrayList<AsyncTask<Void, Void, Boolean>>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);
    }/**
     * 添加异步任务到数组中
     *
     * @param asyncTask
     */
    public void putAsyncTask(AsyncTask<Void, Void, Boolean> asyncTask) {myAsyncTasks.add(asyncTask.execute());
    }/**
     * 清除所有的异步任务
     */
    protected void clearAsyncTask() {Iterator<AsyncTask<Void, Void, Boolean>> iterator = myAsyncTasks
                .iterator();

        while (iterator.hasNext()) {AsyncTask<Void, Void, Boolean> asyncTask = iterator.next();

            if (asyncTask != null && !asyncTask.isCancelled()) {asyncTask.cancel(true);
            }}myAsyncTasks.clear();
    }@Override
    protected void onDestroy() {clearAsyncTask();
        super.onDestroy();
    }
}

当使用时调用

private void search() {putAsyncTask(new AsyncTask<Void, Void, Boolean>() {@Override
        protected Boolean doInBackground(Void... params) {try {// TODO: 耗时操作
            } catch (Exception e){return false;
            }return true;
        }@Override
        protected void onPostExecute(Boolean aBoolean) {if(aBoolean){// TODO: 更新UI
            }else {Toast.makeText(MainActivity.this,"查询失败",Toast.LENGTH_LONG).show();
            }super.onPostExecute(aBoolean);
        }});
}

AsyncTask使用相关推荐

  1. android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...

    本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...

  2. 【Android】AsyncTask异步类

    一.关于AysncTask AsyncTask使得多线程编程更加简单,AsyncTask能在后台线程执行异步任务,并且在UI线程更新界面,而不再需要用户去操作Thread和Handler.AysncT ...

  3. Asynctask源码分析

    ​ 首先我们使用AsyncTask时,一般是: new AsyncTask(...).execute() 复制代码 我们看new AsyncTask(),它走的是: public AsyncTask( ...

  4. Android 多线程-----AsyncTask详解

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  5. android一个简单的异步AsyncTask下载数示例,简单下载(07)

    2019独角兽企业重金招聘Python工程师标准>>> public class MainActivity extends Activity {private ImageView i ...

  6. Android 消息异步处理之AsyncTask

    Android提供了异步处理消息的方式大致有两种,第一种是handler+Thread,之前已经对于这种方式做过分析,第二种就是AsyncTask,这是Android1.5提供的一种轻量级的工具类,其 ...

  7. Android 学习笔记--android——AsyncTask在Android4.X的机制问题

    AsyncTask在Android4.X的机制问题 AsyncTask在Android4.X机制是串行的...单一AsyncTask运行完才会运行下一个 AsyncTask在Android2.3机制是 ...

  8. AsyncTask进度条加载网站数据到ListView

    2019独角兽企业重金招聘Python工程师标准>>> 代码介绍: 初学android,写了个一小demo.功能很简单,主要是用来学习, 知识要点: 1.android全局变量的使用 ...

  9. 源码篇——AsyncTask机制

    AsyncTask new AsyncTask<String,String,String>(){// 运行在主线程中,做预备工作onPreExecute(){}// 运行在子线程中,做耗时 ...

  10. Android中 AsyncTask

    Android AsyncTask 在程序处理中必然会遇上耗时的操作,如访问网络,下载数据,访问数据库等,如何存在耗时的操作 又不能影响界面显示交互. 在某些耗时可以控制的情况下,我们可以分批操作,对 ...

最新文章

  1. 一致性直线提取--Coherent Line Drawing
  2. Linux RAR 安装和使用
  3. 单臂路由实验-VTP
  4. DataSourceUtils(使用C3P0连接池的工具类)
  5. 一道很熟悉的前端面试题,你怎么答?
  6. 微星主板超频_内存超频能力依旧拔群!微星MEG Z490 ACE主板评测
  7. NUC1214 回文素数【回文+素数】
  8. [2019杭电多校第三场][hdu6606]Distribution of books(线段树dp)
  9. 选择Eclipse 的列编辑模式
  10. nema0183 java解析_java解析nmea0183协议
  11. 计算机视觉论文-2021-03-10
  12. python链家数据分析_利用Python分析北京链家二手房数据
  13. 使用PhantomJS网页截图
  14. git 将暂存区文件提交_git文件状态,暂存与提交
  15. 学生托管班_托管班一般多少钱一个月
  16. docker实践-oxidized网络设备自动备份部署
  17. Tensorflow C++使用ops::BatchMatMul实现特征批量乘法
  18. linux文件系统层级结构标准
  19. 无人机激光雷达的路径规划仿真
  20. python soap服务_Python SOAP服务器/客户端

热门文章

  1. QComboBox 设置下拉列表颜色
  2. MySQL-8.0 RESTART命令远程重启mysqld
  3. 请仔细品味--俞敏洪励志演讲
  4. js实现图片3D轮播效果(收藏)
  5. PHP_递归函数时return
  6. Java和JDK版本的关系
  7. 朱会灿:搜索引擎演变史 视频及PPT放出 - 讲堂活动 - 腾讯大讲堂
  8. 【C语言】逗号表达式
  9. 个人开发者的白piao云服务器
  10. 美甲实体行业没有客户?想做线上引流?这些渠道千万别错过!