探究服务(二)--AsyncTask

Android学习笔记:AsyncTask 一、AsyncTask简介 AsyncTask是一个专门用来处理后台进程与UI线程的工具。AsyncTask背后的实现原理也是基于异步消息处理机制的。 二、AsyncTask的基本用法 由于AsyncTask是一个抽象类,所以我们想使用它必须创建一个 AsyncTask有4个重要的回调方法: (1)onPreExecute(),onPreExecute运行在UI线程,主要目的是为后台线程的运行做准... 阅读详情

为了方便我们在子线程中对UI进行操作,Android提供了AsyncTask来帮助我们。AsyncTask背后的实现原理也是基于异步消息处理机制。

AsyncTask基本用法

AsyncTask是一个抽象类,我们必须创建一个子类去继承它。在继承时我们制定三个泛型参数。
Params 执行AsyncTask时需要传入的参数,可用于后台服务。

Progress 后台任务执行时,如果需要在页面上显示当前任务进度,使用这里制定的泛型参数作为进度单位。
Result 当任务执行完毕后,如果需要对任务进行返回,则使用这里制定的泛型作为返回值类型。
一个最简单的自定义AsyncTask就可以写成如下形式:

class DownloadTask extends AsyncTask<Void,Integer,Boolean>{
....
}

这里表示在执行AsyncTask时不传入参数,显示的进度单位为Integer,任务执行完毕后返回Boolean类型。

我们需要重写AsyncTask中的几个方法才可以完成对任务的定制,一般需要重写的方法有四种。

1,onPreExecute() 在后台任务开始执行之前调用,用于进行一些界面的初始化操作。
2,doInBackground(Params…) 这个方法中的代码运行在子线程当中,我们自然要在这里处理耗时操作,任务完成后通过Return语句返回执行结果。在这个方法里面我们不可以进行UI操作,如果我们需要进行UI操作的话,我们可以通过publishProgress(Progress…)来完成。
3,onProgressUpdate(Progress…) 当我们在doInBackground(Params…)方法里面执行了publishProgress(Progress…)语句后,那么onProgressUpdate(Progress…)很快就会被执行,该方法携带的参数就是从后台任务中传递过来的。在这个方法里面,我们可以进行UI操作,利用参数中的数值就可以对界面元素进行相应的更新。
4,onPostExecute(Result) 当后台任务执行结束并通过Return语句返回后,这个方法就会被调用,同样可以利用返回的数据来进行一些UI操作,比如提醒任务执行的结果或者关闭进度条等等。

AsyncTask总结

使用AsyncTask,在doInBackground()方法里面执行耗时操作,在onProgressUpdate()方法里面进行UI操作,在onPostExecute()方法里面执行任务的收尾工作。

AsyncTask的任务的启动

启动这个任务,我们只需要添加如下代码:

newDownloadTask().execute();

以上就是AsyncTask的基本用法,我们并不需要考虑异步消息处理机制,也不用创建Handler对象来处理消息,只需要调用publishProgress()方法,就可以实现从子线程切换到主线程。

Android探究服务 Android探究服务 1.服务是什么        服务(Service)是Android中实现程序后台运行的解决方案,适合执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,及程序被切换到后台,或用户打开了另外一个应用程序,服务仍然能够保持正常运行.        服务并不是运行在一个独立的进程中的,而是依赖于创建服务是所在的应用程序. 阅读详情

相关推荐

基于FFT的阵列方向图快速计算公式推导

因为自己毕设涉及到阵列方向图综合相关知识,最近阅读了关于方向图综合的相关文献,就其中关于使用FFT计算阵列方向图的方法进行了公式推导。 简介: 自从1965年Colley-Tukey发表快速傅里叶变换[1]论文以来,FFT在许多科学技术领域获得了广泛和成功的应用。在阵列信号处理与雷达信号处理领域,随着科技的发展,对于电尺寸较大的相控阵天线,使用公式按照级数求和计算天线阵列方向图的方法效率甚低,...

qq_38151438的博客 4290

Android多线程编程

Android多线程编程

qq_43691887的博客 2045

WIFI基础入门--802.11g--增强速率物理层ERP--15

WIFI基础入门--802.11--增强速率物理层--191.802.11g的组件保护机制 1.802.11g的组件 802.11g其实是将好几种物理层规范合而为一。虽然统称为增强速率物理层(Extended Rate PHY简称ERP),但是实际上ERP有好几种不同的方式: ERP-DSSS与ERP-CCK 这两种模式向下兼容于原始直接序列规范(1Mbps与2Mbps),以及所提到的802.11...

香蕉一号 4617

AsyncTask异步任务类

先来一个效果 然后再来代码 /** * 步骤1:创建AsyncTask子类 * 注: * a. 继承AsyncTask类 * b. 为3个泛型参数指定类型;若不使用,可用java.lang.Void类型代替 * 此处指定为:输入参数 = String类型、执行进度 = Integer类型、执行结果 = String类型 * c. 根据需求,在AsyncTask子类内实现核心方法 */ pri..

丰空岛主(Vega Prime,Android,LabWindows,ThreeJS,Python,OpenCV) 334

Codex 100个真实案例 - 全系列总结与Codex最佳实践全解析

历经100个案例的淬炼,我们终于来到了终点!本篇是整个系列的压轴之作——全面回顾100个案例的分类统计、提炼Codex使用的核心技巧和最佳实践、总结Prompt工程的精华要点、剖析常见错误及解决方案、展望AI编程的未来趋势,并为不同水平的读者规划学习路径。这不仅是一篇总结,更是一本Codex实战手册!

yueyeguzhuo的专栏 135

Nature、science、cell旗下刊物

Nature\science\cell子刊说明

计算机视觉 5604

AsyncTask详解

上篇介绍了Handler实现主线程和子线程间的通信,在Android中还提供了一种更方便使用的AsyncTask来实现主线程和子线程通信.使用AsyncTask就不用自己去开启子线程创建Handler、重写handlerMessage()等操作了,我们只需要一个AsyncTask类即可搞定。但是在使用场合上,它适用于操作时间短的场合(最多几秒钟),如果是长时间的操作不建议使用AsyncTask,而

u012481172的专栏 579

ADS基础教程24 - Gerber文件的导入

一、引言二、基本概念1.仿真文件下载2.仿真文件介绍二、导入步骤1.新建workspace2.选择Layout结构3.导入设计4.选择文件类型5.导入文件6.预览文件内容7.铜皮离散问题四、总结选择。通过本文章结束,可以了解ADS中如何将导入Gerber文件,并且对导入的铜皮进行合并。下一步就针对导入的文件进行层叠设置和编辑。END!}}END!

XZ_ZC的博客 3051

Android中的AsyncTask

AsyncTask是一个用于在后台线程执行异步任务并在主线程更新UI的类。它是在Android API Level 3中引入的,并被广泛使用。下面是一个简单的AsyncTask@Override// 后台执行耗时操作@Override// 在UI线程更新UIAsyncTaskParams:指定异步任务执行时传入的参数类型。Progress:指定异步任务执行过程中用于更新UI的进度的类型。Result:指定异步任务执行完成后返回的结果类型。在上面的示例中,Params是Void。

m0_56366502的博客 511

RH850从0搭建Autosar开发环境【23】- Davinci Configurator之DCM实操实现DID的读取写入

RH850从0搭建Autosar开发环境【23】- Davinci Configurator之DCM实操实现DID的读取写入,结合Developer实现

weixin_42412049的博客 1809

安卓讲课笔记1.1 安装Android Studio

1. 能安装配置Android Studio; 2. 能创建安卓虚拟机(AVD); 3. 能创建简单安卓应用

howard2005的专栏 3360

Android源码探究之AsyncTask 源码解析

AsyncTask源码使用 Api23版本,后面介绍和以前版本改动不同之处。

李剑的博客 872

深度测评:Accio Work——目前普通用户最友好的多 Agent 协同工具

摘要:Accio Work是阿里国际站推出的多Agent协同工具,通过借鉴古代"三省六部制"构建高效协作框架。该工具支持主流大模型,可配置专业Agent角色,实现40分钟内完成复杂产品PRD等高效协作。其亮点在于直观的UI设计和流程驱动机制,能强制各Agent从专业视角深度思考。虽然超长对话稳定性有待优化,但作为目前最用户友好的多Agent工具,显著降低了构建复杂AI团队的门槛,成为提升个人和小微企业生产力的利器。

Maynor的博客 1729

第10章 后台默默的劳动者——探究服务

首先看一下如何在项目中定义一个服务。新建一个ServiceTest项目,然后右击com.zhouzhou. servicetest→New→Service→Service→MyService,会弹出如图所示的窗口:将服务命名为MyService, Exported属性表示是否允许除了当前程序之外的其他程序访问这个服务,Enabled属性表示是否启用这个服务。将两个属性都勾中,点击Finish完成创建。@OverrideMyService是继承自Service类的,说明这是一个服务。

Roderick888888的博客 721

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

AsyncTask探究

AsyncTask探究

rrrraa的博客 324

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

AsyncTask 的两个线程池原理探究

熟悉AsyncTask的人都知道,AsyncTask中维护了两个线程池 //第一个线程池,用作执行具体任务 public static final Executor THREAD_POOL_EXECUTOR; static { ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(...

楠枫的博客 740

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android开发学习之探究服务

(学习参考书:第一行代码第2版) 服务是Android中实现程序后台运行的解决方案,适合去执行那些不需要和用户交互而且还需要长时间运行的任务。服务的运行不依赖任何用户界面,及时程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。 服务不是运行在一个独立的线程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,依赖于该进程的服务也会停止运行。 服务也不会自动开启线程,所有的代码默认运行在主线程当中。需要在服务的内部创建子线程,并在这执行具体的任务。 一、Andr

YCF8746的博客 1266

安卓 探究服务

安卓 服务

weixin_50961942的博客 733

Android中探究服务

服务是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖任何用户界面,即使程序被切换到后台,或者用户打印了另一个应用程序,服务仍然能够保持正常运行。 注意的是服务并不是运行在一个独立的进场当中的,而是依赖与创建服务时所在的应用程序进程。当某应用程序进程被杀掉时,所有依赖于该进程的服务也会停止运行 另外,也不要被服务的后台概念所...

weixin_43551957的博客 278

Asynctask 未运行探究

asyncTask核心是构建了一个线程池(基于android API 28),核心线程最小是2,最大是4或者CPU数量减1中更小的值。任务队列是一个容量为128的LinkedBlockingQueue,并且没有设置超过队列数时的应对措施,线程池的RejectedExecutionHandler(放入队列的任务大于任务数时的回调)是默认的defaultHandler,AbortPolic...

aliucheng729的博客 493

第九章(探究服务Service、Binder、线程、Message、AsyncTask等)

探究服务(Service、IntentService、Handler、AsyncTask) 首先需要知道的几个知识点: 什么是服务(Service):Service是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,及时程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能保持正常运行。 服务不是运行在一...

Yolyn‘s blog 262

程序媛说源码:AsyncTask在子线程创建与调用的那些事儿

/ 今日科技快讯 /当地时间5月7日,2019年度谷歌I/O开发者大会将在加州的海岸线圆形剧场(Shoreline Amphitheater)举行。今年谷歌I/O...

郭霖 724

Android基础知识——探究服务

文章目录1.服务是什么2.Android多线程编程2.1线程的基本用法2.2在子线程中更改UI2.3解析异步处理机制2.4使用AsyncTask 1.服务是什么 服务是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。 服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。 服务并不会自动开启线程,所有代码默认运行在主线程中。 2.Android多线程编程 当我们执行一些耗时操作,如发起一条网络请求时,考虑到网速等其他原因,服务

ABded的博客 427

Android初体验——探究服务

服务是Android中实现程序后台运行的解决方案,它非常适合执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够正常运行。

Judicious 552

Android Studio学习笔记——后台默默的劳动者——探究服务Service

在项目的任何位置调用startService()方法,相应的服务就会启动起来,并回调onStartCommand()方法。如果这个方法没有被执行过,那么先执行OnCreate()再执行onStartCommand()。服务启动之后会一直保持运行状态,直到stopService()或者stopSelf()方法执行。每个服务只会存在一个实例,不管调用多少次startService()方法,所以只需调用一次stopService()或者stopSelf()服务就会停止。

我的的博客 1494

后台默默的劳动者,探究服务

服务是什么 服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。 服务依赖于创建服务时所在的应用程序进程。 Android多线程线程的基本用法 继承Thread class MyThread extends Thread{ @Override public void run(){ //处理具体

guotao976的博客 632
上一篇: 探究服务(一)---异步消息处理流程
下一篇: Android内置数据库SQLite
OneLinee
博客等级 码龄10年 11粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值