公众号ByteCode,分享有趣硬核内容
在 Android 13 上废弃了文件访问权限,提供了一种选择媒体文件的工具,代替这些废弃的 API,而不需要授予对其整个媒体库的访问权限
SyncKit 主要将本地的项目同步到远程设备,在远程设备上进行编译,然后将编译的结果拉回本地
这是海外一位 Kotlin GDE 大佬,在 Twitter 上分享的一段代码,你能快速的说出正确的结果吗
这个反射技巧可能让你的性能提升 N 倍,isAccessible 方法的作用,为什么将 Accessible 设置为 true 可以提升性能
通过这篇文章你将学习 Kotlin 和 Java 泛型局限性、泛型擦除,泛型信息被擦除了之后,泛型信息保存到哪里,迷惑的通配符和星投影区别
Kotlin 和 Java 的协变和逆变的区别和应用场景,数组协变的缺陷,Kotlin 和 Java 数组协变的不同之处
通过这篇文章,能够了解到 方法如何调用 、 方法执行完之后如何返回、 内存如何记录方法调用过程。方法调用和返回过程涉及到了,虚拟机栈、程序计数器、局部变量表、操作数栈、方法返回地址、动态链接 等等内容
分析一下 `Sequence` 和 `Iterable` 的性能和执
反射会占用多少内存?创建 1 个对象或者创建 10 万个对象耗时多少?单次反射或者 10 万次反射耗时多少?在我们的脑海中没有一个直观的概念,而今天这篇文章将会告诉你。
一起来聊一下 Kotlin 1.6.20 的新功能 Context Receivers,来看看它为我们解决了什么问题
程序员来挑战刘畊宏健身操了,我用代码实现了刘畊宏的龙拳和周大侠,对比原版,来看看代码版本健身操怎么样。
近一年多以来一直在做性能优化( OOM、Native、ANR 等等),在后面我也会写一些性能相关的文章,将自己学习和实践所得分享出来。以今天这篇文章作为开端。
这是 Stack Overflow 上最热门的几个 Kotlin 问题,每个问题如果更深入的分析,都可以单独写一篇文章,后面我会针对这些问题,在进一步的分析。
不同的工具,在不同的场景下都有各自的作用,这些只是列出了我对这些工具的使用,而今天这篇文章主要介绍 Typora 在 WX 编辑器排版的问题。
这篇文章将会从 类型安全 、 占用内存 、执行效率 、使用场景 这几个角度来分析 value class ,通过这篇文章,你将学习到以下内容。
今天这篇文章主要介绍 value class 和 data class 的区别,这可能是平时在做业务开发的时候,容易被忽视的几个细节。通过这篇文章,你将学习到以下内容。
这篇文章我们主要来介绍如何在没有服务器,没有域名,没有证书的情况下 快速发布你的网站,分为 视频版 和 文字版。
这篇文章我们主要来介绍 如何打造一套自动化知识获取流程,分为 视频版 和 文字版。
当我们为类定义扩展函数时,它不会作为成员添加到类中。扩展函数是一种特殊的函数,它默认的第一个参数是函数的接受者,如下例所示,扩展函数被编译成普通函数。
Android 12 已来,你的 App 崩溃了吗? 我们已经开始做 Android 12 的适配了,在 Android 12 中包含了很多的功能和一些行为的变更,接下来我们一起来分析这些行为的变更对我们的应用产生了那些影响。
近期,看到网上有小伙伴们在讨论 LinkedList 作者自己都不用 LinkedList,我特意从网上搜索了一下,结果真让我找到了。
前一段时间在刷 LeetCode 多线程相关题目的时候,看到使用 ReentrantLock 有两种不同的写法。
Kotlin 1.5 宣布了一个重磅特性 value class,这是一个非常实用的特性,提高代码的可读性同时,还可以提高性能,因为编译器会对它进行更深层次的优化,减少对象的创建。
本篇文章作为技术动态了解即可,废弃 LiveData.observe() 扩展方法,已经不是什么新的新闻了,在很久以前,Google 废弃掉这个方法的时候,第一时间我在朋友圈和掘金沸点 发过一个消息
今天这篇文章是第 4 篇,主要来学习如何设计循环队列。学习如何设计循环队列之前,我们先来看看 JDK 源码是如何设计的。
这篇文章主要来分析,为什么 ArrayDeque 比 LinkedList 快。在开始分析之前,我们需要简单的了解一下它们的数据结构的特点。
栈是非常好的数据结构,但是 Java 栈的实现,存在以下问题,所以 JDK 不推荐使用 Java 栈。
栈是 后入先出(LIFO) 的数据结构,入栈通常使用 push 操作,往栈中插入数据到栈底,出栈使用 pop 操作,从栈顶删除数据。
Kotlin 高级函数的特性不仅让代码可读性更强,更加简洁,而且还提高了生产效率,但是简洁的背后是有代价的,隐藏着不能被忽视的成本,特别是在低端机上,这种成本会被放大,因此我们需要去研究 kotlin 语法糖背后的魔法,选择合适的语法糖,尽量避免这些坑。
今天这篇文章主要介绍 Google 新库 Core Splashscreen ,众所周知在 Android 12 中增加了一个改善用户体验的功能 SplashScreen API,它可为所有应用添加启动画面。包括启动时进入应用的启动动画,以及退出动画。
Google 引入 Kotlin 的目的就是为了让 Android 开发更加方便,自从官宣 Kotlin 成为了 Android 开发的首选语言之后,已经有越来越多的团队,在项目使用 Kotlin。
这篇文章我们主要来分析 Kotlin 中的操作符 == 和 === 的区别,以及它们分别在什么场景下使用。这些操作符在实际项目和开源项目中,使用的频率非常的高。
这是 Sealed Classes(密封类)系列的第三篇文章,之前的文章从原理、优化、实战以不同的角度分别介绍了 Sealed Classes 的强大。
今天这篇文章,我们主要从类层次结构来讨论一下 Sealed Classes(密封类) 和 Tagged Classes(标记类)的优缺点。在开始分析之前,我们先介绍一下什么是 Tagged Classes(标记类)以及都有那些缺点。
在 Android 12 中包含了很多的功能和一些行为的变更,接下来我们一起来分析这些行为的变更对我们的应用产生了那些影响以及 Google 为什么需要这么做。
文章中没有奇淫技巧,都是一些在实际开发中、阅读源码的时候常用的快捷键,可能这些快捷键之前用过,但是在不同场景下有不同的用法,强烈建议收藏。
ViewBinding 和 DataBinding 为我们解决了这么多问题,但是为什么很多小伙伴们不愿意使用 ViewBinding 和 DataBinding,今天我们从使用的角度来分析。
我们看一下如何在项目中使用 DataBinding 和 ViewBinding,因文章篇幅原因,这里仅仅演示在 Activity 中使用,更多用法可以查看 Binding 库的示例。
Android Studio 版本命名新方案,带来的好处是升级 Android Studio 不需要同时升级 Gradle 插件,有趣的是以动物的名字来命名,全文分为译文和译者思考两部分。
这篇文章来自 Google 开发技术推广工程师 Florina Muntenescu 分享的一篇文章,在这篇文章里精选了 Google 宣布支持 Kotlin 以来,收到的最热门的几个问题,回答了是否应该学习 Kotlin、以及如何学习 Kotlin。全文分为 译文 和 译者思考 两个部分。
今天这篇文章主要来介绍 Proto DataStore,Proto DataStore 通过 protocol buffers 将对象序列化存储在本地,所以首先需要安装 Protobuf 编译 proto 文件,Protobuf 编译大致分为 Gradle 插件编译和命令行编译
Google 新增加了一个新 Jetpack 的成员 DataStore,主要用来替换 SharedPreferences, DataStore 应该是开发者期待已久的库,DataStore 是基于 Flow 实现的,一种新的数据存储方案,它提供了两种实现方式
这篇文章主要来分析一下 PokemonGo 搜索功能的实践
在上一篇文章 Google 推荐在项目中使用 Sealed 和 RemoteMediator 中介绍了如何使用 Sealed Classes 在 Flow 基础上对网络请求成功和失败进行处理,而这篇文章是对 Sealed Classes 更加深入的解析,结合函数式编程功能很强大,掌握并且灵活运用它,需要大量的实践。
这篇文章主要来分析 Kotlin 另外一个隐藏的问题,文章将会分为 译文 和 译者思考 两部分,本文不仅仅是翻译,在 译者思考 部分会对译文进行总结以及更加深入的思考和分析,也可以跳过译文直接看 译者思考 部分。
这篇文章是对神奇宝贝(PokemonGo) 的部分功能做全面的分析
我近期也在开发另外一个 Jetpack + MVVM 实战应用,和神奇宝贝(PokemonGo) 有很多不同之处,神奇宝贝(PokemonGo) 主要偏向于 Paging3 的分页处理,以及 Flow 在 MVVM 中的实战。
Jetpack 实战项目 PokemonGo(神奇宝贝)基于 MVVM 架构和 Repository 设计模式,PokemonGo 项目中用到的技术,都是之前写过的一系列文章里面涉及到的知识点:Paging3(network + db),Dagger-Hilt,App Startup,DataBinding,Room,Motionlayout,Kotlin Flow,Coil,JProgressView 等等。
这篇文章主要分析一些常见问题的解决方案,如果使用不当会对 性能 和 内存 造成的那些影响以及如何规避这些问题,文章中涉及的案例来自 Kotlin 官方、Stackoverflow、Medium 等等网站,都是平时看到,然后进行汇总和分析。
这是 Hilt 系列的第四篇,主要来分析 Hilt 和 Koin 的性能,如果你之前对 Hilt 和 Koin 不了解也没有关系,对阅读本文没有什么影响