谈谈我对Kotlin中协程的理解

1 协程是什么 kotlin 官方文档说:本质上,协程是轻量级的线程。 从 Android 开发者的角度去理解它们的关系: 我们所有的代码都是跑在线程中的,而线程是跑在进程中的。 协程没有直接和操作系统关联,但它不是空中楼阁,它也是跑在线程中的,可以是单线程,也可以是多线程。 单线程中的协程总的执行时间并不会比不用协程少。 Android 系统上,如果在主线程进行网络请求,会抛出 NetworkOnMainThreadException,对于在主线程上的协程也不例外,这种场景使用协程还是要切线程...阅读全文

Segmentfault 2019-11-20 19:03:32 小羊子说

Gbox开源:比RN和WebView更轻的高性能动态化业务容器,解决首页动态化的痛点

1 前言 注: 本文中所有的xml都可以直接贴去mock测试,文章中还附有运行预览的截图。阅读本文可能需要您亿点点的时间。 2 我们要解决什么问题? 2.1 不讲应用场景就是耍流氓! 在线上,对于某些适用于要求强展示、轻交互、高可配场景,RN和WebView显得不够灵活,性能表现也不够好。 使用RN时要占据整个Activity,而且Native和Js的通信损耗不可避,WebView的情况则更加糟糕,还要lock主线程来加载webkit。这在二级、三级页面还好,在首页是绝对不能用这种掉性能的方案的...阅读全文

Segmentfault 2019-11-13 14:03:33 LukeXeon

ZetCode Kotlin 教程

来源:ApacheCN ZetCode 翻译项目译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百科) 目录 Kotlin Hello World 教程 Kotlin 变量 Kotlin 的运算符 Kotlin w...阅读全文

Segmentfault 2019-11-11 19:03:33 飞龙

Kotlin之在Gradle中无参(no-arg)编译器插件的使用

1、前言 最近在用Kotlin+Spring Boot写一个后端项目,实体类习惯性地用了Kotlin中的data class,但是Spring要求要有一个无参的构造函数,否则可能会抛出java.sql.SQLDataException。要使data class能够生成一个无参的构造函数,有两种方法可以做到: 1.给data class的构造函数中的每一个参数都赋上默认值。比如: data class User( @TableId(value = "id", type = IdType.AUTO)...阅读全文

Segmentfault 2019-11-10 15:03:32 lindroid

Kotlin 重载个方法,还有两幅面孔,省代码的同时也带来一个深坑 | Kotlin 原理

一. 序 今年五月的 Google I/O 上,Google 正式向全球宣布 Kotlin-First 这一重要概念,Kotlin 将成为 Android 开发者的首选语言。 新语言自然有新特性,还保持 Java 的编程习惯去写 Kotlin,也不是不行,但是总感觉差点意思。 最近公众号「谷歌开发者」连载了一个《实用 Kotlin 构建 Android 应用 | Kotlin 迁移指南》的系列文章,就举例了一些 Kotlin 编码的小技巧。既然是一种指南性质的文章,自然在「多而广」的基础上,有意...阅读全文

Segmentfault 2019-11-07 14:03:33 plokmju88

浅谈Kotlin中的函数

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/UV23Uw_969oVhiOdo4ZKAw 作者:连凌能 Kotlin,已经被Android官方宣布 kotlin first 的存在,去翻 Android 官方文档的时候,发现提供的示例代码已经变成了 Kotlin。Kotlin的务实作风,提供了很多特性帮助开发者减少冗余代码的编写,可以提高效率,也能减少异常。 本文简单谈下Kotlin中的函数,包括表达式函数体,命名参数,默认参数,顶层函...阅读全文

Segmentfault 2019-11-04 12:03:32 vivo互联网技术

Kotlin干掉了findViewById,但用不好也会有性能问题

自从 Google 宣布 Kotlin 为 Android 一等公民的身份后,大量的 Android 开发开始接触和使用 Kotlin,也体会到 Kotlin 在编码过程中的便捷和高效。 在 Kotlin 中,有个非常便捷的特性,就是无需再使用 findViewById() 方法,Kotlin 可以直接通过 View 的 ID 来访问 View 并进行操作,该特性被称为「静态布局引入」。 findViewById() 这个方法,会通过遍历 View Tree 的方式,来找到我们指定 ID 的 V...阅读全文

Segmentfault 2019-10-29 22:03:34 安卓资深架构师

Android Navigation的四大要点你都知道吗?

在JetPack中有一个组件是Navigation,顾名思义它是一个页面导航组件,相对于其他的第三方导航,不同的是它是专门为Fragment的页面管理所设计的。它对于单个Activity的App来说非常有用,因为以一个Activity为架构的App页面的呈现都是通过不同的Fragment来展示的。所以对于Fragment的管理至关重要。通常的实现都要自己维护Fragment之间的栈关系,同时要对Fragment的Transaction操作非常熟悉。为了降低使用与维护成本,所以就有了今天的主角Na...阅读全文

Segmentfault 2019-10-28 20:03:36 idisfkj

Kotlin——数据类型与Java的对比

严格的数据类型验证 java 的世界中,基本数据数据类型不同也是可以赋值操作的( java 处于睁一只眼闭一只眼的情况) 例如: public static void main( String[] args) { int a = 10; /** * 这种情况,java 是支持的,因为不存在精度丢失的情况 */ long b = a; } Kotlin 具有严格的数据类型判断,不同的类型是不允许赋值操作的。 如: fun main() { val a: Int = 10 /** * 将 Int 类...阅读全文

Segmentfault 2019-10-28 10:03:42 安卓资深架构师

Android Display 系统分析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/ljp1205/article/details/53405641 Android Display 系统分析 大概两年前做过一个项目,大致是在Android 系统上实现双显的支持,其中有个需求是需要手动配置每个显示器的旋转角度,当时对Android 的 Display系统有关简单了解,但是不够深入。一直觉得是留下了一个遗憾,现在趁有时间来把...阅读全文

CSDN博客 2019-10-26 11:01:35 ljp1205

总数操作符

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/hjkcghjmguyy/article/details/73879795 总数操作符 any() 如果至少有一个元素,或者至少有一个元素符合给出的判断条件,则返回true。 val list = listOf(1, 2, 3, 4, 5, 6) assertTrue(list.any()) assertTrue(list.any { i...阅读全文

CSDN博客 2019-10-25 16:01:04 hjkcghjmguyy

Kotlin有可能取代Java吗?详谈Kotlin的优缺点

Kotlin有可能取代Java吗?这是前不久,技术开发区讨论最多的问题,对于java来说,一生之敌太多,不过真正能笑到最后的还是java,而这次java好像真的遇到事了,一种叫kotlin的语言强行C位出道,对于java来说是一个很大的冲击。不过对于外行人来说,Kotlin是什么都不太清楚?更别说Kotlin真的会取代Java吗?今天传智播客就给大家科普一下关于Kotlin的一些问题。 Kotlin取代Java是真的吗? Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains ...阅读全文

Segmentfault 2019-10-18 12:03:33 黑马程序员广州

BeginnersBook Kotlin 教程

来源:ApacheCN BeginnersBook 翻译项目译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百科) 目录 起步 在 Eclipse IDE 中创建并运行您的第一个 Kotlin 项目 在 Intel...阅读全文

Segmentfault 2019-10-16 15:03:35 飞龙

mybatis-plus的kotin配置.md

很久没有写分享了,因为最近一直在用 kotlin 写 spring,作为 kotlin 新人遇到的坑基本都能 Google 到,也就没必要在写一次了。今天将我在开发过程中使用 kotlin 加 mybatis-plus 遇到的问题写出来,给即将入坑的朋友。 先给kotlin打个广告 如果你正在写 Java 代码,可以尝试使用 kotlin,历史的积累不会失去,kotlin 的优雅会让你爱不释手。 正文 mybatis-plus 在 kotlin 中使用已经可以完美使用了,这一篇主要写 mybat...阅读全文

Segmentfault 2019-09-30 20:03:33 范儿

Kotlin协程教程(3):操控协程

在之前的文章中,已经讲了如何启动协程、协程的作用域是如何组织和工作的以及各种协程构造器(builder)的特性。 本篇将讲解对协程的各种操作,包括挂起、取消、超时、切换上下文等。 挂起 fun main() { runBlocking(Dispatchers.Default) { for (i in 0 .. 10) { println("aaaaa ${Thread.currentThread().name}") delay(1000) // 这是一个挂起函数 println("bbbbb $...阅读全文

Segmentfault 2019-08-29 21:03:33 好奇码农君kross

Kotlin协程教程(2):协程作用域与各种builder们

作用域与上下文 协程作用域本质是一个接口,既然是一个接口,那么它就可以被某个类去实现(implement),实现它的那个类,也就具备了一些能力。 class MyClass: CoroutineScope { // MyClass就具备了CoroutineScope的一些能力 } 那么它具备了哪些能力呢? 当然是启动协程的能力和停止协程的能力。除了runBlocking有一些特殊外,launch和async其实都是CoroutineScope的扩展方法,它们两个都必须通过作用域才能调用。 比如我...阅读全文

Segmentfault 2019-08-29 21:03:33 好奇码农君kross

Kotlin协程教程(1):启动

协程 协程简单的来说,就是用户态的线程。 emmm,还是不明白对吧,那想象一个这样的场景,如果在一个单核的机器上有两个线程需要执行,因为一次只能执行一个线程里面的代码,那么就会出现线程切换的情况,一会需要执行一下线程A,一会需要执行一下线程B,线程切换会带来一些开销。 假设两个线程,交替执行,如下图所示 线程会因为Thread.sleep方法而进入阻塞状态(就是什么也不会执行),这样多浪费资源啊。 能不能将代码块打包成一个个小小的可执行片段,由一个统一的分配器去分配到线程上去执行呢,如果我的代码...阅读全文

Segmentfault 2019-08-27 23:03:33 好奇码农君kross

Android控件之TextView全解析

前言 大家好!在前几篇文章里,我们详细介绍了Android中的常用布局,使大家对Android中的页面布局有了一定认识,而对于布局中使用的一些UI控件如Button、TextView等,有的读者可能还存在一些困惑。在接下来文章中,我们将详细介绍Android开发中经常使用的UI控件,敬请期待! 简介 TextView(文本框),是Android中用于显示文本的一个控件。 常用属性详解 id:为TextView设置一个组件id,根据id,我们可以在Java代码中通过findViewById()的方...阅读全文

Segmentfault 2019-08-15 16:03:35 叮咚丶桑

布局大杀器—ConstraintLayout

前言 Hi,大家好,看到标题后大家是不是一脸懵逼,这是啥?这小编搞事情?说好的六大布局咋又来个布局杀手?这就是咱们公众号和其他公众号的不同,我们并不是照本宣科的讲解Android知识,而是将项目当中实际运用到的并且是好用的东西分享给大家,还等什么呢?赶紧开始我们的学习吧!! 引入 简介:约束布局(ConstraintLayout) 是一个ViewGroup,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整View。 说明:本博文是以ConstraintLayout1.1.3为基础...阅读全文

Segmentfault 2019-08-15 16:03:34 叮咚丶桑

六大布局之非常用布局

前言 Hi,大家好,新的一周开始啦,让我们继续遨游在Android的知识海洋中吧!上一次我们讲到了RelativeLayout,相信不少小伙伴已经着手实战,那么今天我们为大家带来六大布局中剩下的三个布局。本篇文章可以和前面的FrameLayout一同归类到Android非常用布局之中,虽然不常用,但是小伙伴们也要知道它的一些基础属性哦~ 六大布局之AbsoluteLayout 简介 AbsoluteLayout(绝对布局), 之所以把这个放到最后,是因为绝对布局,我们基本上都是不会使用的,当然你...阅读全文

Segmentfault 2019-08-15 16:03:33 叮咚丶桑