LiveData作为jettpack的一环,常搭配ViewModel一起使用;相比于RxJava,用LiveData封装的LiveDataBus更加简洁方便,并且LiveData会感知页面的信息变化,当页面是不可见的时候,及时Data有数据更新,页面也不会接收到,然后在页面重新可见再去把数据通知给页面,而且在页面销毁时也会及时销毁数据,大大降低了内存泄露的发生;这篇主要简单分析一下LiveData
Kotlin的官方文档提出把换成线程试试,这里这么多的线程明显会 OutOfMemoryError。前面我们也提到 Coroutine 的对比对象应该是 Runnable,并且我们有了线程池,还对比啥的线程呢,我们直接看看对比线程池,的效率如何:// ThreadPool4.kt const val times = 100_000 const val delayTime = 5000L
原创 10月前
34阅读
Kotlin的使用是什么?首先kotlinkotlin的扩展库(kotlinx.coroutines)。线程在Android开发中一般用来做一些复杂耗时的操作,避免耗时操作阻塞主线程而出现ANR的情况,例如IO操作就需要在新的线程中去完成。但是呢,如果一个页面中使用的线程太多,线程间的切换是很消耗内存资源的,我们都知道线程是由系统去控制调度的,所以线程使用起来比较难于控制。这个时候k
文章目录前言一. gradle配置二. 创建的三种方式2.1 runBlocking2.2 GlobalScope2.3 CoroutineScope三. 总结 前言:英文coroutine,可以认为是轻量级的线程,是一套基于Java线程池的封装。相对于线程要处理各种同步问题,则可以将其简化,以同步的方式写异步代码。一. gradle配置对于Android项目,最新版本的kotl
按调用栈分类 由于需要支持挂起、恢复,因此对于挂起点的状态保存就显得极其关键。类似地,线程会因为 CPU 调度权的切换而被中断,它的中断状态会保存在调用栈当中,因而的实现也按照是否开辟相应的调用栈存在以下两种类型: 有栈 Stackful Coroutine:每一个都会有自己的调用栈,有点儿类似于线程的调用栈,这种情况下的实现其
参考链接示例来自bilibili Kotlin语言深入解析 张龙老师的视频本节先介绍的相关概念 概念可能枯燥,我们先要了解中的相关概念 然后结合代码理解这些概念 加深印象的定义通过将复杂性放入库中来简化异步编程。程序的逻辑可以在中顺序地表达,而底层库为我们解决异步性库可以将用户代码地相关部分包装为回调、订阅相关事件(listener)、在不同地线程(甚至不同的机器)上调度,
转载 2024-04-08 22:54:29
73阅读
1、请你说说线程和协的区别1. 进程有独立的地址空间,线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间;  2. 进程线程切换时,需要切换进程线程的上下文,进程的上下文切换时间开销远远大于线程上下文切换时间,耗费资源较大,效率要差一些;  3. 进程的并发性较低,线程的并发性较高;  4. 每个独立的进程有一个程序运行的入口、顺序执行序列程序的出口,但
什么是是指函数或方法其他函数或方法并发执行。可以看做是一种轻量级线程。创建的成本比线程要低很多。因此Go应用中可以经常见到成千上万的并发运行。Go 相比于线程的优势相比线程而言,Go 的成本极低。堆栈大小只有若干 kb,并且可以根据应用的需求进行增减。而线程必须指定堆栈的大小,其堆栈是固定不变的。Go 会复用数量更少的 OS 线程。即使程序有数以千计的 Go
转载 2024-02-27 08:24:27
71阅读
文章目录Kotlin原理特点调度程序线程 Kotlin原理是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码。Kotlin 使用堆栈帧管理要运行哪个函数以及所有局部变量。挂起时,系统会复制并保存当前的堆栈帧以供稍后使用。恢复时,会将堆栈帧从其保存位置复制回来,然后函数再次开始运行。即使代码可能看起来像普通的顺序阻塞请求,也能确保网络请求避免阻塞主线
转载 2024-02-28 11:31:28
29阅读
文章目录1.简介2.异步处理3.成关键点4.的本质5.作用域 1.简介Kotlin中是一个很重要的概念,也是比较难理解的概念之一。那么到底是怎样的存在,那么接下来让我们好好地理一理。 根据官方文档的说法,它大概有一些特性:1.是轻量级的线程,一个线程中可以同时起成百上千的,而不会导致资源过度占用,造成系统崩溃。2.运行在线程中,程之于线程有点类似与线
转载 2023-05-23 15:35:33
259阅读
Hi,大家好,这里是承香墨影!今天聊聊 KotlinKotlin 中一个重要的特性支持,而 Kotlin 的支持,底层依托于虚拟机的特性。它与线程的关系,依然是 1:1 对应的。而不是类似 Go 语言这种,真的存在更小的执行体,是一种轻量级线程。Kotlin,可以理解为一种类似线程池的封装,每个协执行的背后,都依托于一个线程。而它与线程池相比的优势,在于用更精炼的代
首先祝大家端午节快乐,吃粽子了没?哈哈。我今天一直在思考一个问题:端午节是为了纪念屈原老先生投江而在民间流传下来的节日。这本是何等悲壮的一件事,为何时至今日,变成了一个好像很喜庆的日子。屈原老先生估计心想:老子TM只是感动了自己吗?言归正传,虽然是端午佳节,但是我等屌丝,药不能停。世界一直在变化,要学会拥抱变化。今天想大家分享的是,鄙人才识浅薄,还望诸公海涵。首先想说的是为什么会有的出现
的作用通过替代回调(callback)来简化异步代码听起来蛮抽象的,来看代码fun fetchDocs() { val result = get("developer.android.com") show(result) } 复制代码Android系统为了保证界面的流畅及时响应用户的输入事件,主线程需要保持每16ms一次的刷新(调用 onDraw()函数),所以不能
题图 本文基于 Go 1.13创建系统线程以及在系统线程间切换,会对程序的内存性能造成较大的开销。Go的目标是尽量利用CPU多核资源。设计之初就考虑了高并发性。M,P,G 模型为了达到这个目标,Go拥有一个将调度到系统线程执行的调度器。这个调度器定义了三个核心概念,在Go源码中是这样解释的:G - goroutinue. M - worker thread, or ma
的作用并不是一个新鲜概念,相信大家都有所了解,它的好处是可以极大程度的复用线程,通过让线程满载运行,达到最大程度的利用CPU,进而提升应用性能。它反应式编程一样都可以有效的提高资源的利用率,并且让我们脱离callback hell。目前JAVA里还没有原生的库(AJDK里对提供了支持)。Kotlin从1.1开始支持,不过目前还处于试验阶段,感兴趣的同学可以查看这篇文档。如何在
转载 2023-07-02 11:46:50
234阅读
简介介绍是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码。 简单来说就是执行异步任务。参考文档谷歌开发者Kotlin文档文章目录Kotlin(一)初识Kotlin(二)取消优点轻量:您可以在单个线程上运行多个协,因为支持挂起,不会使正在运行的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作。内存泄漏更少:使用结构化并发机制在一个作用域内执行多
转载 2023-11-19 10:14:24
98阅读
什么是(Coroutines)是一种比线程更加轻量级的存在,正如一个进程可以拥有多个线程一样,一个线程可以拥有多个协有一点必须明确的是,一个线程的多个协的运行是串行的,如果是多核CPU,多个进程或一个进程内的多个线程是可以并行运行的,但是一个线程内却绝对是串行的,无论CPU有多少个核。毕竟虽然是一个特殊的函数,但仍然是一个函数。一个线程内可以运行多个函数,但这些函数都是串行运行
文章目录概念优点yield的简单实现greenlet模块gevent模块 概念:协助程序,线程进程都是抢占式特点,线程进程的切换我们是不能参与的。 而是非抢占式特点,也存在着切换,这种切换是由我们用户来控制的。 主解决的是IO的操作。,又称微线程,纤。英文名Coroutine。优点优点1: 极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因
简介Rxjava 是由微软架构师 Erik Meijer 领导的团队研发出来的开源库,目的是为了提供一个一致的编程接口,以便开发者对异步操作能够进行方便的处理。Rxjava 的设计是的开发者能通过 LINQ 的风格进行异步处理,所以它能将各种判断、循环、过滤、转换等的嵌套层级拉平,以流式的方式来编程,极大地简化了代码,增强了代码的阅读性。如何使用 Rxjava下面先举几个例子来说明一下 Rxjav
转载 2023-08-15 22:09:03
117阅读
4.1 Java语言和Kotlin语言对比(1)void类型的映射Java中返回void类型,对应的Kotlin返回Unit。Java中特殊标识的转义有些Kotlin定义的关键字,是Java中的合法标识名,例如in, object, is etc。如果Java库使用一个Kotlin的关键字作为函数名,可以转义之后再调用改函数,转义时添加 bracktick(`)字符foo.`is`(bar)空指针
转载 2023-08-12 18:21:35
141阅读
  • 1
  • 2
  • 3
  • 4
  • 5