Android AsyncTask学习笔记

本文详细介绍了AsyncTask的工作原理,包括其运行机制、启动流程及内部状态管理等内容。讲述了如何通过四个核心步骤(onPreExecute, doInBackground, onProgressUpdate, onPostExecute)实现异步任务处理,以及在Android应用中正确使用AsyncTask的注意事项。

1,AsyncTask运行机制

一般情况下分为四部走:

1)onPreExecute,运行在UI线程,一般作为AsyncTask开始前的界面初始化;

2)doInBackground,运行在非主线程空间,任务的后台处理过程将在这里完成,调用publishProgress调用onProgress,运行结束后调用onPostExecute;

3)onProgressUpdate,运行在UI线程,一般作为ProgressBar的更新

4)onPostExecute,运行在UI线程,当任务将要结束时运行。

2,AsyncTask的启动

1)AsyncTask的实例创建和启动都必须在主线程里执行,在主线程里调用taskInstance.execute(Params...params),如果是在非主线程里,那么onPreExecute将不能和主线程交互,就失去了AsyncTask的存在意义。

2)根据版本不同,AsyncTask决定doInBackground是运行在单线程或者是线程池里。

3)在启动过程中,如果同一个实例已经运行完或者正在运行,将会抛出IllegalStateException的异常,所以一个task实例只能执行一次。

4)在运行过程中,调用cancel方法,可以终止任务


以上所说的都是在使用AsyncTask时,需要掌握的基本知识点,下面来看一下AsyncTask的内部运行机制。

1,内部状态如下说是,默认开始状态为PENDING,在每个实例运行execute时,将会判断是否为PENDING,若否将会抛出异常    

public enum Status {
        /**
         * Indicates that the task has not been executed yet.
         */
        PENDING,
        /**
         * Indicates that the task is running.
         */
        RUNNING,
        /**
         * Indicates that {@link AsyncTask#onPostExecute} has finished.
         */
        FINISHED,
    }

2,在初始化过程中,创建Handler(所以AsyncTask必须在主线程里创建,否则onPostExecute、onProgressUpdate将不能在UI线程里执行),handler将handle两种消息

MESSAGE_POST_PROGRESS和MESSAGE_POST_RESULT,分别将会调用onPostExecute(或者onCancelled)和onProgressUpdate。

3,内部的多线程机制是使用FutureTask完成,FutureTask:

  1. 构造方法摘要  
  2. FutureTask(Callable<V> callable)   
  3.           创建一个 FutureTask,一旦运行就执行给定的 Callable。  
  4.   
  5. FutureTask(Runnable runnable, V result)   
  6.           创建一个 FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时 get 返回给定的结果 。  
  7. 参数:  
  8. runnable - 可运行的任务。  
  9. result - 成功完成时要返回的结果。  
  10. 如果不需要特定的结果,则考虑使用下列形式的构造:Future<?> f = new FutureTask<Object>(runnable, null)  
在AsyncTask内部使用的是Callable构造FutureTask。Callable和FutureTask的结合本身是异步线程并返回结果的一套很好的方案。




【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档是一份关于“光伏并网逆变器扫频与稳定性分析”的Simulink仿真实现资源,重点复现博士论文中的阻抗建模与扫频法验证过程,涵盖锁相环和电流环等关键控制环节。通过构建详细的逆变器模型,采用小信号扰动方法进行频域扫描,获取系统输出阻抗特性,并结合奈奎斯特稳定判据分析并网系统的稳定性,帮助深入理解光伏发电系统在弱电网条件下的动态行为与失稳机理。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事新能源发电、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握光伏并网逆变器的阻抗建模方法;②学习基于扫频法的系统稳定性分析流程;③复现高水平学术论文中的关键技术环节,支撑科研项目或学位论文工作;④为实际工程中并网逆变器的稳定性问题提供仿真分析手段。; 阅读建议:建议读者结合相关理论教材与原始论文,逐步运行并调试提供的Simulink模型,重点关注锁相环与电流控制器参数对系统阻抗特性的影响,通过改变电网强度等条件观察系统稳定性变化,深化对阻抗分析法的理解与应用能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值