前言 本文旨在通过实际业务场景阐述如何使用Kotlin Flow解决Android开发中的痛点问题,进而研究如何优雅地使用Flow以及纠正部分典型的使用误区。...基于LiveData+ViewModel的MVVM架构在某些场景下(以横竖屏为典型)存在局限性,本文会顺势介绍适合Android开发的基于Flow/Channel的MVI架构。...需要手动添加lifecycleObserver来保证线程的挂起和恢复,并且不支持协程。考虑使用kotlin协程中的Channel替代。...方案二: Kotlin Channel Kotlin Channel和阻塞队列很类似,区别在于Channel用挂起的send操作代替了阻塞的put,用挂起的receive操作代替了阻塞的take。...结论 架构中对SharedFlow和channelFlow的使用绝对值得保留,就算不使用MVI架构,参考这里的实现也可以帮助解决很多开发中的难题,尤其是涉及横竖屏的问题。
坑 先来看看 Android Studio 给的自动实现。...虽然名字是 MutableList ,但是实际上这只是 Kotlin 的一个辅助类型,可以用 Tools – Kotlin – Show Kotlin Bytecode 查看它编译成 JVM 字节码之后的样子...假如上面的例子是用 Java 写的,由于我们已经有了一个以 Parcel 为参数的构造方法,我们只需要这样实现 CREATOR 。...中是什么样的呢,我们可以先看看 Android Studio 生成的实现: companion object CREATOR : Parcelable.Creator<Worker { override...{ return arrayOfNulls(size) } } 在 Kotlin 中,使用命名的 companion object 确实可以生成一个对应名字的静态字段,并且它是公有的,会随着类的加载而被创建
在Kotlin中,扩展函数是一种非常有用的功能,可以让我们向现有的类添加新的功能,而无需修改类的源代码。在本文中,我们将探讨Kotlin扩展函数的原理和运用,以及如何在Android开发中使用它们。...同时,在使用扩展函数时,需要注意它们的限制并遵循最佳实践。 在Android开发中使用扩展函数 在Android开发中,扩展函数可以帮助我们简化代码,提高开发效率。...以下是一些常见的Android开发场景,可以使用扩展函数来优化代码。 简化findViewById 在Android开发中,我们经常需要使用findViewById来查找布局中的控件。...在Android开发中,我们经常需要使用RecyclerView来显示列表数据。...在Android开发中,扩展函数可以帮助我们简化代码,提高开发效率。合理的运用扩展函数的能力,可以让你的开发事半功倍,希望本文能够对你有所帮助。
本文实例讲述了Android开发中的单例模式应用。分享给大家供大家参考,具体如下: 单例模式是应用最广的设计模式之一,在应用这种模式的时候,单例对象的类必须保证只有一个实例存在。...在Android系统中存在很多这种场景,比如最常用的context.getSystemService(),BluetoothAdapter.getDefaultAdapter()等等都是使用的单例模式。...反序列化操作提供了一个很特别的钩子函数,类中具有一个私有的、被实例化的方法readResolve,这个方法可以让开发人员控制对象的反序列化。...,将多种单例类型注入到一个统一的管理类中,在使用时根据Key获取对象对应类型的独享,这种方式使得我们可以管理多种类型的单例,并且在使用时可以通过统一的接口进行获取操作,降低了用户的使用成本,也对用户隐藏了具体的实现...更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图
Kotlin 真的是一门美丽的开发语言,她拥有的一些很棒的特性使 Android 开发变成的有趣和令人兴奋。...[委托属性]()就是其中之一,在这篇文章里我们将会看到委托是如何把 Android 开发变得更加轻松的。 基础 首先,什么是委托?它又是如何工作的?...如你所见,委托属性并没有什么神奇的。但是,它虽然简单,却非常有用,让我们来看一些在 Android 开发中的例子。 你可以在官方文档中了解更多关于委托属性的内容。...Android Extension的视图绑定来获取布局中的控件。...总结 我们看来一些在 Android 开发中使用 Kotlin 委托属性的例子。当然了,你也可以用别的方式来使用它。 这篇文章的目标是展示委托属性是多么强大,以及我们可以用它做什么。
去中心化金融中的 NFT 用例作为 DEFI 贷款。去中心化金融,俗称 DeFi,近年来发展迅速。它指的是使用区块链技术创建一个无需中介机构即可运作的金融系统。...DEFI 领域最流行的用例之一是将 DeFi 中的不可替代代币 (NFT) 作为贷款抵押品。NFTs是在区块链上经过验证的独特数字资产,可以代表从数字艺术到虚拟房地产的任何事物。...如果您选择接受这些优惠中的任何一个,您将很快从借贷用户的钱包中收到 WETH 或 DAI,这是一种稳定币。...NFT 是 DeFi 中一个很有前途的用例,并为创意项目提供了一种新的融资方式。通过使用 NFT 作为抵押品,DeFi 借贷平台可以提供更高效、更简化的借贷流程,让艺术家和创作者更容易获得所需资金。...随着 Defi 生态系统的不断发展,我们很可能会在去中心化金融中看到越来越多的 NFT 用例。然而,为了充分发挥其潜力,他们需要应对流动性、市场波动性和安全性方面的挑战。
"点评 Android 应用的开发协作模式是壳工程依赖于一系列基础和业务组件,应用到 Kotlin 的部分分散在十余支业务团队,近四十个业务仓库中,涵盖了首页、商户页、直播、榜单等核心业务。"...△ Kotlin 扩展函数 Kotlin 另一个让开发团队赞不绝口的功能是空安全性,这和 Kotlin 与 Java 良好的互操作性也有关系——只需要在 Java 代码中写好 @Nullable 和 @...当然有 Kotlin 经验的更好!" —— 马双飞,Android 开发工程师 能让团队放手推广 Kotlin 的另一个原因,是强大的工具支持。...同时,我们也在努力用新的技术提升自己开发产品时的体验。" —— 张晓宇,团队技术主管 正如张晓宇所说,开发者们的开发体验和应用用户们的使用体验都很重要。...相信在整个点评开发团队中,会有越来越多的开发者将 Kotlin 作为其首选的开发语言。 您手上的开发项目中有多少在使用 Kotlin?欢迎在评论区和我们分享使用 Kotlin 的感想。
在Android开发中,经常会遇到ART、AOT、JIT、Dalvik等概念,有些人傻傻的分不清楚,今天就给大家总结下这些基本的概念。...ART ART模式英文全称为Android runtime,谷歌Android 4.4系统新增的一种应用运行模式,与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验,对于大家来说,只要明白...ART模式可让系统体验更加流畅,不过只有在安卓4.4以上系统中采用此功能。...Dalvik Dalvik是Google公司自己设计用于Android平台的Java虚拟机,Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一,它可以支持已转换为...ART的策略与Dalvik不同,在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。
2.2 海外支付SDK DSL构建项目实践 众所周知Android studio中是使用groovy编写gradle脚本,而groovy由于是动态语言,不可避免的存在一个问题,就是代码提示不够智能,我们在使用...在我们最近的海外支付SDK中,采用该种方式构建项目, 部分gradle代码如下: 可以看到使用kotlin编写和groovy编写区别不大,所以即使我们要将现有工程中的groovy脚本重写为kotlin...目前我们在海外支付SDK中利用kotlin DSL构建大约在17s,利用groovy DSL构建大约在16s,时间上来说几乎没有区别,所以小型项目推荐尝试使用!...Anko库实际上是用kotlin对相关类做了一层扩展包装,基于这一点,它的局限性也体现在于会增加包大小,在使用之前可以根据项目评估一下是否适合引入Anko库。...即使是一个非kotlin开发人员也可以理解以上格式的含义,完成“Trip”对象的配置使用。
导致Android开发者鱼贯而入,人数爆发式增长对于原先老一辈的Android开发有一个极大的冲击,行业新人带着新的工作模式,新的工作态度,以及更好的精力和更低的工资供老板选择。...4.synchronized与ReentranLock发生异常的场景. 5.算法,删除数组中的重复元素 6.手写双检查单例模式,各个步骤有什么区别 7.Activity生命周期 快手 1.string,...6.你们用的什么消息通信机制 7.你的项目有什么难点?介绍一下? 8.算法题,二叉树最长结点集合 猿辅导2面 1.你们项目中的难点是什么?...lifeCycle的原理是什么?如果在onStart里面订阅,会回调onCreate吗? 10.单例模式有什么缺点?...4.kotlin空安全的原理是什么? 5.性能优化做过什么工作?有用过什么工具?有没有精确测量的工具? 6.kotlinc与javac编译字节码有什么区别? 7.你在团队中是怎样一个角色?
我猜你会立即想到 Java,毕竟大多数的 Android 应用程序都是用 Java开发的。...但自从在两年前的谷歌 I/O 大会推出 Kotlin 以来,如今的 Kotlin 也在 Android 应用程序开发领域中占据一席之地。 Kotlin 是什么呢?它的前景到底如何呢?...在最近的 Jexenter 调查中,Kotlin 在最热门的技术发展趋势榜单上高居第六位。...开发人员稀缺 Kotlin 的开发人员数量比较少,因此用 Kotlin 开发的热门 Android 应用数量有限。...Java 与 Kotlin 对比 Java Kotlin 静态成员 字符串模板 非类的原始类型 单例 非私有域 空安全 通配符类型 扩展函数 检查异常 智能 Casts 毫无疑问,Java 仍然是 Android
KMM是什么 KMM的全称是Kotlin Multiplatform Mobile,与之对应的是KMP—Kotlin Multiplatform Project,其实就是一个是Kotlin移动端跨平台,...实践KMM KMM用于实现业务逻辑部分,这里我们只以Android和iOS两端为例。...创建项目 在Android Studio中我们可以借助Kotlin Multiplatform Mobile plugin插件来快速的创建支持KMM的项目。...这里对Web要多说一点,在早期的时候Compose for Web是使用Compose HTML来实现的,Compose HTML 是一个面向 Kotlin/JS 的库,它提供了用 HTML 和 CSS...已经在使用Kotlin的,我建议可以学习下Jetpack Compose,一来这是一个趋势,二来它会扩展你的跨平台技能。如果你想在未来几年内仍然从事Android开发,我觉得是没有理由拒绝的。
在下2017年毕业,目前从事android开发工作已经3年了,前段时间刚完成一次跳槽,面试了几家公司,将一些面试经验分享给大家,希望对大家有所帮助。...你们网络框架用的什么?为什么? 如果让你来开发B站的一个页面,哪一个页面可以很快入手 性能优化你做过什么工作? h5与native通信你做过什么工作? 插件化的主要优点和缺点是什么?...算法,删除数组中的重复元素 手写双检查单例模式,各个步骤有什么区别 Activity生命周期 快手 string,equals,==有什么区别 AsyncTask内存泄露 dispatchTouchEvent...lifeCycle的原理是什么?如果在onStart里面订阅,会回调onCreate吗? 单例模式有什么缺点?...以上内容均放在了开源项目:【github】 中已收录,里面包含不同方向的自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新中...
所以想要去市场上应聘 Android 岗位,还需要好好复习一番,因为半年没有碰 Android 了。结果还是发现有些知识点在面试的过程中已经记不清了,生疏了。...举例有哪些情况会发生内存泄漏; Gradle 打包; AOP IOC 的好处以及在 Android 开发中的应用; View 触摸事件分发机制; Java基础: static 和 final 关键字的用法...Kotlin 特性,和 Java 相比有什么不同的地方; MVP 架构中 Presenter 定义为接口有什么好处; Jenkins持续集成; Android 插件化的原理; Handler 、MessageQueue...、Looper三者的关系和原理; 对于 Android 开发,自己擅长哪方面; Java动态代理的使用,InvocationHandler 有什么用; 为什么 Google 会推出Fragment ,...直接用 View 代替不行么? 这次面试有好几题都回答不上来,有些地方不够深入。问了一下面试官,他已经做了六年的 Android 开发了,厉害厉害。
Kotlin 问答 1.Kotlin 是什么? 2.Kotlin 有什么特性? 100% 兼容 Java 代码 函数式编程 各种语法糖 3.Kotlin跟 Java 相比有什么优点?...可控类型特性,大大减少了 Java 中的 NPE。 代码量大幅度精简。 100% 兼容 Java。 更好的函数式编程支持。 4.Kotlin 跟 Scala,Groovy 相比有什么优势?...2017 Google IO 大会上, 宣布 Kotlin 成为Android 一级语言,Kotlin 确实是可以全面提升 Android 的开发效率和语言层面的特性支持(Java 8 才支持 stream...另外, Jetbrains 推出的各种开发神器之成功也是有目共睹的,Kotlin作为 Jetbrains的亲儿子,相信会得到更多的照顾。 7.学习 Kotlin 难度怎么样?...100% 兼容 Java 并非噱头,而是实打实的支持。而且 IDE 可以支持直接将 Java 代码转换成 Kotlin 代码(目前我自动转换了很多代码,仅遇到一例位操作转换失败)。
kotlin是什么?...Google发布申明,目前已经有35%的Android专业开发人员使用kotlin(爆发式增长) Google与Oracle源于Android的恩怨持续已久,也一直想要找一种语言代替Java Java以后要开始收费了...,可能导致一部分公司放弃Java 当前已经有许多公司的招聘要求中,要求开发人员需要会kotlin kotlin的学习成本并不是很高,从Java转kotlin,一般一周时间就足以完成,且kotlin与Java...可以相互调用,觉得kotlin解决不了的地方,仍然可以使用Java编写(非常人性化) 如果你想要快速找到一份移动开发者的工作,建议学习Kotlin来进行原生的Android开发。...is、as` 中的坑 Kotlin 中的 Property 的理解 also 关键字 takeIf 关键字 单例模式的写法 image.png 第三章 项目实战《Kotlin Jetpack 实战》 从一个膜拜大神的
自从2017年Google宣布Kotlin成为Android官方开发语言之后,Kotlin受到广大Android开发者的追捧。...其强大的安全性,简洁性和与Java的互操作性,为开发者带来了耳目一新的开发体验,也极大提升了Android原生代码的开发效率。...表达式和Elvis表达式 Kotlin特有的?表达式和Elvis表达式可以在确保安全的情况下,写出更加简洁的代码。比如我们在Android页面开发中常见的删除子控件操作,用Java来写是这样的: ?...为了获得更加安全的代码,我们不得不加上很多if else 判断语句,来确保不会产生空指针异常。但Kotlin的?操作符可以非常简洁地实现上述逻辑: ? 那么这个?表达式的内在逻辑是什么呢?...这个特性类似于Java中的单例模式,但我们不需要写单例模式的样板代码即可以实现。 ? 请注意上述代码是声明了一个对象,而不是类,而我们想要使用这个对象,直接引用其名称即可: ?
前言 DSL并不是单独为Kotlin语言提供的,可能你并知道DSL是什么,但是我敢说,只要你是Android开发者,你就一定使用过并且一直在使用DSL,那么到底什么是DSL?...DSL是什么 DSL的全程是Domain Specific Language 即 领域特定语言,我们可以通过DSL语言 构建出属于我们自己的语法结构,而在Kotlin中并不只有一种方式实现DSL,而主要的实现方式就是高阶函数...(如果你不了解高阶函数,也不用怕,后面我会单独一篇文章来介绍高阶函数)~ 我是Android开发者,我怎么没用过DSL,我阿黄哥不信!...Anko插件 最后我们来简单的介绍下DSL在Kotlin中的一个框架Anko,Anko用Kotlin DSL 写的Android插件,Anko主要的作用是替代以前用XML的方式来生成UI布局。...大家都知道,Android界面是通过XML来进行布局的,一个应用中通常有多个布局,当程序运行时,XML被转化为Java代码,这里要划重点,即使不是在Java中写的代码,最终还是会转化为Java代码,这就会导致程序很耗费资源
作为一个开发者,你选择的编程语言,根据你正在开发的Android的哪一部分而有所不同。对于应用开发者来说,Java和Kotlin是当下流行的选择。...缺乏内存安全性保证迫使开发人员在严格受限和无特权的沙箱中运行Android进程,但沙盒在资源上的成本很高,不仅消耗额外的开销,还引入延迟。...Android新的蓝牙协议栈重写代码 "Gabeldorsche "就是用Rust编写的。Gabeldorsche的工作大约在Android 11的时候就开始了,但目前仍未投入使用。...虽然与Android无关,但Fuchsia的新netstack也是用Rust编写的。 对于应用开发者来说,这个切换对你作为应用开发者如何编写应用或框架API来工作没有任何改变。...这个切换只影响操作系统的编写方式。据Android开发者关系团队的一位成员透露,谷歌目前也不打算发布Rust NDK。应用开发支持的语言将继续是Kotlin、Java、C和C++。
它是一门静态类型编程语言,支持JVM平台,Android平台,浏览器JS运行环境,本地机器码等。支持与Java,Android 100% 完全互操作。 ?...f { y: dynamic - x(x)(y) } } } val a = z { f: () - Unit - { println("1551"); f() } } // 求斐波那契数列第...- 2) } } // 输出斐波那契数列前10项 println((1.rangeTo(10).map(fib))) 上面的那一坨 val z 即是「Z组合子」。...(读者可以思考一下为什么这里我给了 Kotlin-js 的例子是而不是 Kotlin-jvm(逃 阻止编译器添加对非空类型的函数参数的 NullCheck 总所周知,当一个函数的参数是非空类型时,Kotlin...// "kotlin".fuck() // 你要这么用,将MyExtentions塞进上下文(即this) with(StringExtention) { "kotlin".fuck()
领取专属 10元无门槛券
手把手带您无忧上云