首页
学习
活动
专区
圈层
工具
发布

【Kotlin 协程】协程简介 ( 协程概念 | 协程作用 | 创建 Android 工程并进行协程相关配置开发 | 异步任务与协程对比 )

四、异步任务与协程对比 一、协程概念 ---- 协程 Coroutine 是 Kotlin 语言 中新出现的概念 , 在 Java 语言中没有 ; 协程 是 基于 线程 的 , 是 轻量级 线程 ;...二、协程作用 ---- 协程主要作用如下 : 处理耗时任务 : 耗时任务 通常需要 阻塞主线程 , 线程量级太重 , 耗时任务 推荐在协程中执行 ; 保证主线程安全 : 从主线程中 安全地调用可能会挂起的函数...; 异步任务 AsyncTask 也可以处理耗时操作 , 避免耗时任务阻塞线程 , 但是在 Android 11 中 , 官方规定 该 api 已过时 , 被标记为弃用状态 , 建议使用 协程 java.util.concurrent...; 注意选择 Kotlin 语言 , Android Studio 会自动添加 Kotlin 语言支持 ; 2、配置协程环境 在 AndroidManifest.xml 清单文件 中 , 添加网络权限...---- 异步任务与协程对比 : 相同点 : 都可以 处理耗时任务 , 保证主线程的安全性 ; 异步任务缺陷 : 不符合人类的思维逻辑 , 其先执行 doInBackground 方法在其中执行后台任务

6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 学习笔记思考篇

    异步 Android 中的异步操作基本都是使用 Java 语言内置的,唯一的简单封装的异步类 AsyncTask 有几个主要回调,我们可以通过这些回调指定那些代码在异步任务开始之前执行,哪些代码在异步任务中执行...:算一百万次数组的区间和,现在我们来执行一下这个异步任务: mTask = new Task("task-1").execute(300); ......既然 AsyncTask 是为了方便主线程执行异步任务的,那我们怎么避免 AsyncTask 在其他线程中创建和执行呢? 我们再来看一下网络请求,Android 有网络请求的 API 吗?...API 都没有提供异步支持所以还得通过线程、线程池或者 AsyncTask 等技术才能进行异步请求,所以各个公司和个人开发者都封装了自己的一套网络请求 API,或者直接使用 Android-Async-Http...像网络请求这种 I/O 密集型的操作很适合用协程去实现,然而 Java 本身不支持协程,就只能用线程去写异步代码了么?

    84210

    Android多线程-AsyncTaskyi(一)

    是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后会把执行的进度和最终结果传递给主线程并更新UI。...(2)doInBackground(Params…params), 抽象方法,必须实现,该方法在线程池中执行,用于执行异步任务,将在onPreExecute方法执行后执行。...其参数是一个可变类型,表示异步任务的输入参数,在该方法中还可通过publishProgress(Progress… values)来更新实时的任务进度,而publishProgress方法则会调用onProgressUpdate...(5)onCancelled(),在主线程中执行,当异步任务被取消时,该方法将被调用,要注意的是这个时onPostExecute将不会被执行。...说了这么多,我们还没说如何启动AsyncTask呢,其实可以通过execute方法启动异步线程,其方法声明如下: public final AsyncTask<Params, Progress, Result

    96820

    如何将天气预报查询API集成到手机上

    本文将指导你如何将天气预报查询API集成到手机上,无论是通过原生应用开发还是跨平台解决方案,都可以实现这一功能。我们将以原生Android应用开发为例,展示集成过程。...一、前期准备注册API服务选择一个提供天气预报服务的API的平台,并注册获取API密钥。开发环境搭建安装Android Studio并配置好Android开发环境。...创建新项目在Android Studio中创建一个新的Android项目。...android:name="android.permission.INTERNET" />步骤2:编写API请求代码创建一个新的Java类,用于发送网络请求并处理响应:public class WeatherApiService...Studio中运行你的应用,确保API调用成功并且天气信息正确显示。

    83010

    Android Handler机制13之AsyncTask源码解析

    UI线程是不安全的,如果想要在子线程里面进行UI操作,就需要直接Android的异步消息处理机制,前面我写了很多文章从源码层面分析了Android异步消息Handler的处理机制。...onProgressUpdate:在doInBackground调用publishProgress后被调用,工作在UI线程 onPostExecute:后台任务结束后被调用,工作在UI线程。...如果你的需求是在长时间保持线程运行,强烈建议您使用由 java.util.concurrent提供的各种API包,比如Executor、ThreadPoolExecutor或者FutureTask。...doInBackground() 方法在 onPreExecute()执行完成后调用的。doInBackground()这个方法用于执行可能需要很长时间的首台计算。异步任务的参数被传递到这个步骤中。...总之,AsyncTask不失为一个非常好用的异步任务处理类。不过我从事Android开发5年多了,很少会用到AsyncTask,一般异步任务都是Handler。

    1.1K10

    安卓开发_浅谈AsyncTask

    但是费时的任务操作总会启动一些匿名的子线程,太多的子线程给系统带来巨大的负担,随之带来一些性能问题。因此android提供了一个工具类AsyncTask,顾名思义异步执行任务。...,比如HTTP请求的URL。   ...三、构建AsyncTask子类的回调方法   1..execute(Params... params),执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。   ...3、dolnBackground:必须重写,异步执行后台线程将要完成的任务   4、onPostExecute(),当dolnBackground()完成后,系统自动调用onPostExecute()方法...用于显示任务执行的进度。   6、onCancelled(),在用户取消线程操作的时候调用。在主线程中调用onCancelled()的时候调用。   几个方法是有规律的。

    2.3K70

    译文:Android中糟糕的AsyncTask

    AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。...如果你调用了AsyncTask的cancel(false),doInBackground()仍然会执行到方法结束,只是不会去调用onPostExecute()方法。...实际上是结果依据API不同而不同。 在1.6(Donut)之前: 在第一版的AsyncTask,任务是串行调度。一个任务执行完成另一个才能执行。...由于串行执行任务,使用多个AsyncTask可能会带来有些问题。所以这并不是一个很好的处理异步(尤其是需要将结果作用于UI试图)操作的方法。...推荐的一种进行异步操作的技术就是使用Loaders。这个方法从Android 3.0 (Honeycomb)开始引入,在android支持包中也有包含。

    81310

    异步网络下载案例

    异步网络下载案例(AsyncTask + 前台Service + OkHttp + Android8.0的Notification适配注意) ServiceBestPractice项目(模块)GitHub...(网络请求,文件线上状态处理,文件本地状态处理,文件写入本地), 抽象调用接口对象方法; class DownloadService extends Service 匿名类方式具体实现回调接口的方法...: 李蔚蓬(简书_凌川江雪) * time : 2019/11/9 17:29 * desc :三个泛型参数, * 第一个表示在执行AsyncTask时需传入一个字符串参数给后台任务...//使用.addHeader 往请求中添加一个Header,用于告诉服务器我们想要 // 从哪个字节开始下载(已下载部分不需再重新下载) OkHttpClient...for startForeground: java.lang.RuntimeException Android 8通过startService引起crash问题 Android 8.0 + Service

    1.8K10

    在PaaS上开发Web、移动应用(2)

    巨型代码,是指持续不断地向一个应用程序添加功能,不停地增加新的特性如搜索功能、账户管理、博客发布等。 在开发速度以及在适应扩展需求的总体架构之间进行权衡。...JSON JSON(JavaScript Object Notation)是作为在API服务内部传输数据的标准出现的,它可作为替换XML的备选方案之一。...瘦Web客户端 元服务可以直接在浏览器中调用。 11....移动客户端的PaaS iOS REST的框架:RestKit Android 采用Java语言的Android本地应用也可以简单快速地访问元服务以及获取数据。...- 自己动手构建,采用Android的异步网络操作 1. 将AsyncTask类扩展为异步任务类 2. 创建一个URLConnection并且将数据转换为字符串 3.

    2.1K60

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

    本篇随笔将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信。...四、AsyncTask AsyncTask:异步任务,从字面上来说,就是在我们的UI主线程运行的时候,异步的完成一些操作。AsyncTask允许我们的执行一个异步的任务在后台。...doInBackground(Params... params): 在onPreExecute()方法执行完之后,会马上执行这个方法,这个方法就是来处理异步任务的方法,Android操作系统会在后台的线程池当中开启一个...onPostExecute(Result... result): 当我们的异步任务执行完之后,就会将结果返回给这个方法,这个方法也是在UI Thread当中调用的,我们可以将返回的结果显示在UI控件上...Android中的多线程知识,并且详细地讲解了 AsyncTask 异步任务的概念和实现机制,并通过实例来了解 AsyncTask 的执行过程,最后还补充了 AsyncTask 的一些重要知识点,包括如何取消一个

    88730

    ASP.NET Core 性能优化最佳实践

    避免阻塞式调用 ASP.NET Core 应用程序应设计为同时处理许多请求。 异步 API 可以使用一个小池线程通过非阻塞式调用来处理数以千计的并发请求。...线程可以处理另一个请求,而不是等待长时间运行的同步任务完成。 ASP.NET Core 应用程序中的常见性能问题通常是由于那些本可以异步调用但却采用阻塞时调用而导致的。...要: 确保 代码热点路径 全部异步化。 如在进行调用数据读写、I/O 处理和长时间操作的 API 时,存在可用的异步 API。那么务必选择异步 API 。...建议 : 要 以异步方式调用所有数据访问 API 。 不要 读取不需要的数据。 编写查询时,仅返回当前 HTTP 请求所必需的数据。...对于涉及长时间运行的任务的某些请求,最好使整个请求 - 响应进程异步。 建议 : 不要把等待长时间运行的任务完成,作为普通 HTTP 请求处理的一部分。

    3.1K30

    Android注解支持(Support Annotations)

    Java插件却没有。)...从Gradle插件1.3.0-beta1版本开始,并且安装了Android M Preview平台工具的情况下,通过命令行调用gradle的lint任务就可以执行这些检查。...举几个例子 集合不能为空: @Size(min=1) 字符串最大只能有23个字符: @Size(max=23) 数组只能有2个元素: @Size(2) 数组的大小必须是2的倍数 (例如图形API中获取位置的...它主要的目的是帮助哪些容易被混淆,难以被理解的API的使用者。 比如,可能很多开发者都对String.trim()一知半解,认为调用了这个方法,就可以让字符串改变以去掉空白字符。...当且仅当你的工程依赖注解库的时候,Android Gradle插件会把提取注解的任务作为构建的一部分执行它。

    1.4K30

    Android项目重构之路:实现篇(二)

    核心层的逻辑 核心层处于接口层和界面层之间,向下调用Api,向上提供Action,它的核心任务就是处理复杂的业务逻辑。...另外,大部分action的处理都是异步的,因此,添加了回调监听器ActionCallbackListener,回调监听器的泛型则是返回的对象数据类型,例如获取券列表,返回的数据类型就是List,没有对象数据时则为...首先,要获取imei,那就需要传入一个Context;另外,还需要loginOS和pageSize,这定义为常量就可以了;还有,要调用接口层,所以还需要Api实例。...而接口的实现分为两步,第一步做参数检查,第二步用异步任务调用Api。...异步任务里的代码也一样,都是可以通过重构优化的。另外,需要扩展时,比如添加缓存,那就在调用Api之前处理。 核心层的逻辑就是这样了。最后就到界面层了。

    53820

    Asp.Net Web API(三)

    当Web API接收到一个请求的时候,它将这个请求路由到一个Action。         注意:Web API的路由与Asp.Net MVC的路由是非常相似的。...Visual Studio的Web API的项目模板会创建一个默认路由: 1 config.Routes.MapHttpRoute( 2 name: "DefaultApi...如果以上都不是,那么这个方法将只支持Post请求。 Parameter Bindings     参数绑定是指Web API如何创建参数值。...对于每一个Action,最多只有一个参数可以读取请求正文。    ...但是在这种情况下,Web API框架不能提前知道是否这个参数被绑定到一个特殊的URI。为了查明情况,这个框架需要调用这个绑定。选择算法的目的是在调用绑定之前根据静态描述来选择一个Action。

    2.4K50
    领券