首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解决Android开发痛点问题Kotlin Flow

前言 本文旨在通过实际业务场景阐述如何使用Kotlin Flow解决Android开发痛点问题,进而研究如何优雅地使用Flow以及纠正部分典型使用误区。...基于LiveData+ViewModelMVVM架构在某些场景下(以横竖屏为典型)存在局限性,本文会顺势介绍适合Android开发基于Flow/ChannelMVI架构。...需要手动添加lifecycleObserver来保证线程挂起和恢复,并且不支持协程。考虑使用kotlin协程Channel替代。...方案二: Kotlin Channel Kotlin Channel和阻塞队列很类似,区别在于Channel挂起send操作代替了阻塞put,挂起receive操作代替了阻塞take。...结论 架构对SharedFlow和channelFlow使用绝对值得保留,就算不使用MVI架构,参考这里实现也可以帮助解决很多开发难题,尤其是涉及横竖屏问题。

3.1K20

利用Kotlin如何实现Android开发Parcelable详解

坑 先来看看 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 确实可以生成一个对应名字静态字段,并且它是公有的,会随着类加载而被创建

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

Android开发Kotlin扩展函数技巧!

Kotlin,扩展函数是一种非常有用功能,可以让我们向现有的类添加新功能,而无需修改类源代码。在本文中,我们将探讨Kotlin扩展函数原理和运用,以及如何在Android开发中使用它们。...同时,在使用扩展函数时,需要注意它们限制并遵循最佳实践。 在Android开发中使用扩展函数 在Android开发,扩展函数可以帮助我们简化代码,提高开发效率。...以下是一些常见Android开发场景,可以使用扩展函数来优化代码。 简化findViewById 在Android开发,我们经常需要使用findViewById来查找布局控件。...在Android开发,我们经常需要使用RecyclerView来显示列表数据。...在Android开发,扩展函数可以帮助我们简化代码,提高开发效率。合理运用扩展函数能力,可以让你开发事半功倍,希望本文能够对你有所帮助。

21220

Android开发模式应用详解

本文实例讲述了Android开发模式应用。分享给大家供大家参考,具体如下: 单模式是应用最广设计模式之一,在应用这种模式时候,单对象类必须保证只有一个实例存在。...在Android系统存在很多这种场景,比如最常用context.getSystemService(),BluetoothAdapter.getDefaultAdapter()等等都是使用模式。...反序列化操作提供了一个很特别的钩子函数,类具有一个私有的、被实例化方法readResolve,这个方法可以让开发人员控制对象反序列化。...,将多种单类型注入到一个统一管理类,在使用时根据Key获取对象对应类型独享,这种方式使得我们可以管理多种类型,并且在使用时可以通过统一接口进行获取操作,降低了用户使用成本,也对用户隐藏了具体实现...更多关于Android相关内容感兴趣读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图

77210

Kotlin 委托属性在Android开发几个使用场景!

Kotlin 真的是一门美丽开发语言,她拥有的一些很棒特性使 Android 开发变成有趣和令人兴奋。...[委托属性]()就是其中之一,在这篇文章里我们将会看到委托是如何把 Android 开发变得更加轻松。 基础 首先,什么是委托?它又是如何工作?...如你所见,委托属性并没有什么神奇。但是,它虽然简单,却非常有用,让我们来看一些在 Android 开发例子。 你可以在官方文档中了解更多关于委托属性内容。...Android Extension视图绑定来获取布局控件。...总结 我们看来一些在 Android 开发中使用 Kotlin 委托属性例子。当然了,你也可以别的方式来使用它。 这篇文章目标是展示委托属性是多么强大,以及我们可以用它做什么。

4.5K41

NFT在DeFi NFT相关软件开发

去中心化金融 NFT 作为 DEFI 贷款。去中心化金融,俗称 DeFi,近年来发展迅速。它指的是使用区块链技术创建一个无需中介机构即可运作金融系统。...DEFI 领域最流行之一是将 DeFi 不可替代代币 (NFT) 作为贷款抵押品。NFTs是在区块链上经过验证独特数字资产,可以代表从数字艺术到虚拟房地产任何事物。...如果您选择接受这些优惠中任何一个,您将很快从借贷用户钱包收到 WETH 或 DAI,这是一种稳定币。...NFT 是 DeFi 中一个很有前途,并为创意项目提供了一种新融资方式。通过使用 NFT 作为抵押品,DeFi 借贷平台可以提供更高效、更简化借贷流程,让艺术家和创作者更容易获得所需资金。...随着 Defi 生态系统不断发展,我们很可能会在去中心化金融中看到越来越多 NFT 。然而,为了充分发挥其潜力,他们需要应对流动性、市场波动性和安全性方面的挑战。

74010

大众点评 Kotlin 打造灵活稳定兼备应用 | Android 开发者故事

"点评 Android 应用开发协作模式是壳工程依赖于一系列基础和业务组件,应用到 Kotlin 部分分散在十余支业务团队,近四十个业务仓库,涵盖了首页、商户页、直播、榜单等核心业务。"...△ Kotlin 扩展函数 Kotlin 另一个让开发团队赞不绝口功能是空安全性,这和 Kotlin 与 Java 良好互操作性也有关系——只需要在 Java 代码写好 @Nullable 和 @...当然有 Kotlin 经验更好!" —— 马双飞,Android 开发工程师 能让团队放手推广 Kotlin 另一个原因,是强大工具支持。...同时,我们也在努力技术提升自己开发产品时体验。" —— 张晓宇,团队技术主管 正如张晓宇所说,开发者们开发体验和应用用户们使用体验都很重要。...相信在整个点评开发团队,会有越来越多开发者将 Kotlin 作为其首选开发语言。 您手上开发项目中有多少在使用 Kotlin?欢迎在评论区和我们分享使用 Kotlin 感想。

49120

Android开发ART、JIT、AOT、Dalvik都指的是什么

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 环境,应用在第一次安装时候,字节码就会预先编译成机器码,使其成为真正本地应用。

1.2K30

干货 | 实现一个属于你“语言”-携程Kotlin DSL开发与实践

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”对象配置使用。

1.5K10

当大潮退去没有谁还能Android这行“裸泳”,10家大厂面试题,掌握这些让你轻松面试

导致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.你在团队是怎样一个角色?

95520

谷歌社区说|聊聊Compose跨平台与KMM

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开发,我觉得是没有理由拒绝

46110

Android开发3年,九月份面试12家大厂跳槽成功,我有一些面试经验想分享给你们

在下2017年毕业,目前从事android开发工作已经3年了,前段时间刚完成一次跳槽,面试了几家公司,将一些面试经验分享给大家,希望对大家有所帮助。...你们网络框架什么?为什么? 如果让你来开发B站一个页面,哪一个页面可以很快入手 性能优化你做过什么工作? h5与native通信你做过什么工作? 插件化主要优点和缺点是什么?...算法,删除数组重复元素 手写双检查单模式,各个步骤有什么区别 Activity生命周期 快手 string,equals,==有什么区别 AsyncTask内存泄露 dispatchTouchEvent...lifeCycle原理是什么?如果在onStart里面订阅,会回调onCreate吗? 单模式有什么缺点?...以上内容均放在了开源项目:【github】 已收录,里面包含不同方向自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新...

1.4K10

记自己2018年三月份面试经历烦烦烦烦面试几家公司写在结尾

所以想要去市场上应聘 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 开发了,厉害厉害。

1.1K120

Kotlin 问答Kotlin 问答《Kotlin极简教程》正式上架:

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 代码(目前我自动转换了很多代码,仅遇到一位操作转换失败)。

57520

阿里云大神亲码“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 实战》 从一个膜拜大神

1.1K10

干货 | Kotlin超棒语言特性

自从2017年Google宣布Kotlin成为Android官方开发语言之后,Kotlin受到广大Android开发追捧。...其强大安全性,简洁性和与Java互操作性,为开发者带来了耳目一新开发体验,也极大提升了Android原生代码开发效率。...表达式和Elvis表达式 Kotlin特有的?表达式和Elvis表达式可以在确保安全情况下,写出更加简洁代码。比如我们在Android页面开发中常见删除子控件操作,Java来写是这样: ?...为了获得更加安全代码,我们不得不加上很多if else 判断语句,来确保不会产生空指针异常。但Kotlin?操作符可以非常简洁地实现上述逻辑: ? 那么这个?表达式内在逻辑是什么呢?...这个特性类似于Java模式,但我们不需要写单模式样板代码即可以实现。 ? 请注意上述代码是声明了一个对象,而不是类,而我们想要使用这个对象,直接引用其名称即可: ?

1.4K40

Kotlin 使用DSL构建语法结构 看这一篇就够了~

前言 DSL并不是单独为Kotlin语言提供,可能你并知道DSL是什么,但是我敢说,只要你是Android开发者,你就一定使用过并且一直在使用DSL,那么到底什么是DSL?...DSL是什么 DSL全程是Domain Specific Language 即 领域特定语言,我们可以通过DSL语言 构建出属于我们自己语法结构,而在Kotlin并不只有一种方式实现DSL,而主要实现方式就是高阶函数...(如果你不了解高阶函数,也不用怕,后面我会单独一篇文章来介绍高阶函数)~ 我是Android开发者,我怎么没用过DSL,我阿黄哥不信!...Anko插件 最后我们来简单介绍下DSL在Kotlin一个框架Anko,AnkoKotlin DSL 写Android插件,Anko主要作用是替代以前XML方式来生成UI布局。...大家都知道,Android界面是通过XML来进行布局,一个应用通常有多个布局,当程序运行时,XML被转化为Java代码,这里要划重点,即使不是在Java代码,最终还是会转化为Java代码,这就会导致程序很耗费资源

1.5K20

谷歌为Android操作系统开发者增加了新选择 Rust

作为一个开发者,你选择编程语言,根据你正在开发Android哪一部分而有所不同。对于应用开发者来说,Java和Kotlin是当下流行选择。...缺乏内存安全性保证迫使开发人员在严格受限和无特权沙箱运行Android进程,但沙盒在资源上成本很高,不仅消耗额外开销,还引入延迟。...Android蓝牙协议栈重写代码 "Gabeldorsche "就是Rust编写。Gabeldorsche工作大约在Android 11时候就开始了,但目前仍未投入使用。...虽然与Android无关,但Fuchsia新netstack也是Rust编写。 对于应用开发者来说,这个切换对你作为应用开发者如何编写应用或框架API来工作没有任何改变。...这个切换只影响操作系统编写方式。据Android开发者关系团队一位成员透露,谷歌目前也不打算发布Rust NDK。应用开发支持语言将继续是Kotlin、Java、C和C++。

48510

Kotlin一些技巧与迂回操作分享

它是一门静态类型编程语言,支持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()

68110
领券