• 【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执行任务
  • 相关阅读:
    iOS:不同属性声明方式的解析
    iOS:图像和点击事件
    iOS:NAV+TABLE结合
    iOS:实现表格填充和选择操作
    iOS: 填充数据表格
    iOS:导航栏的工具条和导航条
    iOS:使用导航栏
    hello,world不使用ARC
    iOS代码实现:创建按钮,绑定按钮事件,读取控件值
    iOS版 hello,world版本2
  • 原文地址:https://www.cnblogs.com/wygyxrssxz/p/4541600.html
Copyright © 2020-2023  润新知