zoukankan      html  css  js  c++  java
  • 【Android】线程及异步操作

    Android sdk 提供将某些操作从主UI线程分离开来的途径:

    • AsyncTask类,可完成异步操作并保持与主UI线程的通信
    • 标准Thread类完成异步操作
    • 在Activity或者Fragment中使用Loader完成数据载入,以保证运行速度

    阻塞线程的操作将会产生ANR现象(application not responding)

    常见阻塞线程的操作包括:

    • 所有过长或负责的计算或操作
    • 请求获取长度不定的数据集
    • 解析数据集
    • 处理多媒体文件,例如图像、视频或音频
    • 对长度不定的数据结构进行迭代
    • 获取网络资源
    • 获取地理位置服务
    • 获取内容提供器接口
    • 接入本地数据库
    • 接入本地文件
    • 接入任务包含以上内容的服务

    AsyncTask回调方法:

    onPreExecute()在后台操作完成前运行在UI线程上;

    doInBackground()运行在后台并处理后台操作;

    从doInBackground()中调用publishProcess()方法周期性地通知UI线程有关后台操作的进度。该方法向UI操作发送消息,并借此机会更新用户可见的进度条。onProcessUpdate()在UI线程中运行;

    后台操作完毕,onPostExecute()在UI线程运行;

    运行execute(),AsyncTask以后台方式处理操作,不会影响UI线程;

    AsyncTask任务启动方法:

    • execute()方法,每个任务实例都被执行一次,像是使用线程池;
    • executeOnExector(AsyncTask.THREAD_POOL_EXECUTOR,ID);按照ID执行任务
  • 相关阅读:
    Beta阶段代码规范与计划
    Alpha总结展望——前事不忘后事之师
    Alpha冲刺成果测试
    Alpha冲刺总结
    码到成功——Beta冲刺随笔 day 5
    码到成功——Beta冲刺随笔 day 4
    码到成功——Beta冲刺随笔 day 3
    码到成功——Beta冲刺随笔 day 2
    码到成功——Beta冲刺随笔 day 1
    项目Beta冲刺(团队)——凡事预则立
  • 原文地址:https://www.cnblogs.com/wygyxrssxz/p/4541600.html
Copyright © 2011-2022 走看看