理解协程、LiveData 和 Flow

2020-11-29
阅读 9 分钟
3.6k
从 API 1 开始,处理 Activity 的生命周期 (lifecycle) 就是个老大难的问题,基本上开发者们都看过这两张生命周期流程图:

使用 Jetpack Security 在 Android 上进行数据加密

2020-11-28
阅读 5 分钟
3.6k
您是否尝试过对应用中的数据进行加密?作为开发者,您想要保护数据安全,并确保数据掌握在其合理使用者的手中。但是,大多数 Android 开发者没有专门的安全团队来帮助他们正确地加密应用数据。就算通过网络来搜索如何加密数据,您得到的答案也可能已经过时好几年了,找到的示例也难以保证准确性。

协程 Flow 最佳实践 | 基于 Android 开发者峰会应用

2020-11-28
阅读 8 分钟
3.6k
本文介绍了我们在开发 2019 Android 开发者峰会 (ADS) 应用时总结整理的 Flow 最佳实践 (应用源码已开源),我们将和大家共同探讨应用中的每个层级将如何处理数据流。

在 Android 开发中使用协程 | 代码实战

2020-11-28
阅读 10 分钟
1.9k
本文是介绍 Android 协程系列中的第三部分,这篇文章通过发送一次性请求来介绍如何使用协程处理在实际编码过程中遇到的问题。在阅读本文之前,建议您先阅读本系列的前两篇文章,关于在 Android 开发中使用协程的 背景介绍 和 上手指南。

Kotlin Vocabulary | 枚举和 R8 编译器

2020-11-27
阅读 4 分钟
2.2k
这方面的问题在 Kotlin 中显得更加有趣,因为 Kotlin 最终会编译为 Java 字节码,但是它却提供了 Java 所没有的功能。那么 Kotlin 是怎么做到的呢?这些功能有没有额外开销?如果有,我们能做些什么来优化它吗?

别让 USB 传输速度影响 Android 开发效率

2020-11-27
阅读 3 分钟
2.4k
在 Android Studio 3.5 版本中,我们在多个方面改进了迭代速度。开发者可以使用 Apply Changes: 根据代码结构,它可以替换更改的代码,并且重启当前 Activity; 如果代码和 Activity 生命周期无关,则会调用 "Apply Code Changes" 来仅替换代码而不会重启正在运行的 Activity。

是时候迁移至 AndroidX 了!

2020-11-26
阅读 5 分钟
4.6k
长久以来,我们致力于做到三件事: 实践指南、减少模板代码和简化任务流程,我们希望帮助开发者们集中精力专注在真正需要考虑的逻辑中去。Jetpack 为此而生,它所包含的库、工具和指南,可以帮助您更轻松地编写高质量的应用。

在 Android 开发中使用协程 | 上手指南

2020-11-26
阅读 7 分钟
2.6k
本文是介绍 Android 协程系列中的第二部分,这篇文章主要会介绍如何使用协程来处理任务,并且能在任务开始执行后保持对它的追踪。保持对协程的追踪本系列文章的第一篇,我们探讨了协程适合用来解决哪些问题。这里再简单回顾一下,协程适合解决以下两个常见的编程问题:处理耗时任务 (Long running tasks),这种任务常常会...

网易云音乐的 Kotlin 乐章 | Android 开发者故事

2020-11-26
阅读 2 分钟
2.7k
"音乐是灵魂之间的美好交流,是带着情绪的艺术品。网易云音乐要做的,就是帮助用户发现和分享好音乐,用音乐连接用户和音乐人,让用户去感受音乐人想表达的情绪,让更多的人用音乐取暖、发光、获得力量。"—— 郭元,网易云音乐产品经理

Kotlin Vocabulary | 类型别名 typealias

2020-11-25
阅读 2 分钟
1.6k
有时候一些可读性差、不够明确或者名字太长的类型声明会干扰代码的 "自我表达"。这种情况下,可以使用 Kotlin 特别针对这个问题提供的特性: Typealias (本文下称 "类型别名")。类型别名可以使您在不增加新类型的情况下,为现有类或函数类型提供替代名称。

在 Android 11 及更高版本系统中处理可空性

2020-11-25
阅读 2 分钟
2k
在去年 5 月的 I/O 开发者大会上,我们正式宣布 Kotlin 优先 (Kotlin First) 的这一重要理念,Kotlin 将成为 Android 开发者的首选语言。目前,在排名前 1,000 位的 Android 应用中,已有超过 60% 正在使用 Kotlin 进行开发。为什么 Kotlin 受到这么多开发者的喜爱呢?这里就不得不提 Kotlin 在可空性方面的优势了。Kot...

在 Android 模拟器上运行 ARM 应用

2020-11-25
阅读 2 分钟
2.4k
在 Android 11 开发者预览版 发布的时候,我们同时也推出了 Android 11 系统映像。新的系统映像在执行 ARM 二进制文件方面取得了显著的性能提升。此前,依赖 ARM 库且无法构建 x86 版本应用的开发者只能使用完整的 ARM 模拟系统映像 (其速度远低于在 x86 设备上运行 x86 系统映像) 或者实体机。Android 11 系统映像能够...

在 Android 开发中使用协程 | 背景介绍

2020-11-25
阅读 5 分钟
2.6k
Kotlin 中的 协程 提供了一种全新处理并发的方式,您可以在 Android 平台上使用它来简化异步执行的代码。协程是从 Kotlin 1.3 版本开始引入,但这一概念在编程世界诞生的黎明之际就有了,最早使用协程的编程语言可以追溯到 1967 年的 Simula 语言。

用户为先,看海外开发者如何提升用户体验|Google Play 开发者播客节目更新

2020-11-25
阅读 2 分钟
1.6k
您是否好奇过,通过外卖 APP 购买到的食物,是如何到达您手中的?这其中有哪些幕后工作?在开发领域,对于用户获取和用户留存,交付高质量的应用是获得业务成功的关键因素。那么,开发者该如何确保用户获得应有的高质量体验呢?为了探索这个问题,在本期节目中,美食外卖公司 Deliveroo (户户送) 的高级软件工程师 Maria...

Kotlin Vocabulary | 密封类 sealed class

2020-11-24
阅读 3 分钟
1.8k
我们可以使用枚举来实现这类模型,但枚举自身存在许多限制。枚举类型的每个值只允许有一个实例,同时枚举也无法为每个类型添加额外信息,例如,您无法为枚举中的 "Error" 添加相关的 Exception 类型数据。

两步使用 LiveData 替换 Observable Field

2020-11-24
阅读 3 分钟
2.2k
可观察性指的是一个对象会在其数据发生变更时向其他类发出通知。可观察性 是数据绑定库 (Data Binding) 的重要特性之一,它可以将数据和 UI 元素绑定在一起——当数据发生变化时,屏幕上的相关元素也会随之更新。

Kotlin Vocabulary | Collection 和 Sequence

2020-11-21
阅读 4 分钟
2k
在很多场景中我们会使用到集合,Kotlin 标准库 (Kotlin Standard Library) 中提供了非常多出色的关于集合的实用函数。其中,Kotlin 提供了基于不同执行方式的两种集合类型: 立即执行 (eagerly) 的 Collection 类型,延迟执行 (lazily) 的 Sequence 类型。本篇文章将向您介绍两者的区别,并向您介绍这两种类型分别该在哪...

回顾 Android 11 中的存储机制更新

2020-11-21
阅读 3 分钟
4.2k
Android 10 引入了对 外部存储权限的更改,旨在更好地保护用户数据以及降低应用的存储空间。在 Android 11 开发者预览版 的时候也加入了很多改进,以帮助开发者更好地适应这些权限修改。

使用视图绑定替代 findViewById

2020-11-20
阅读 6 分钟
3.8k
从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来。

回顾 | Android Jetpack 重要更新

2020-11-20
阅读 7 分钟
2.7k
Android Jetpack 集合了一系列的开发库,旨在帮助开发者更容易地创作高质量的应用,同时也更好地兼容老旧版本的 Android 系统。在正式发布 Jetpack 两年后的今天,我们已经看到大量的应用开发开始采用 Jetpack 中的开发库,这其中既包括大型开发团队的产品,也有那些刚起步的应用。而这一切仅仅是开始,因为近期我们发布...

Room 中的数据库关系

2020-11-20
阅读 4 分钟
2k
设计一个关系型数据库很重要的一部分是将数据拆分成具有相关关系的数据表,然后将数据以符合这种关系的逻辑方式整合到一起。从 Room 2.2 的稳定版开始,我们可利用一个 @Relation 注解来支持表之间所有可能出现的关系: 一对一、一对多和多对多。

官方 Kotlin 课程 | 学习使用 Kotlin 进行 Android 开发的最佳时机!

2020-11-18
阅读 2 分钟
2.4k
如今,越来越多的人希望考虑能够支持远程办公的职业,而从事应用开发或许可以实现。对于希望获得新机遇的人而言,即使过去没有编程经验,也可以立即开始学习 Android。

来 GitHub 参与 Jetpack 开源协作!

2020-11-17
阅读 1 分钟
3k
我们正式为各位开发者们介绍在 GitHub 上最新的一个开源库 (和开源组织) —— androidx!这是 Android Jetpack 各种组件库的源码和开发环境,与 AOSP 的主分支代码同步。

使用 Android Studio Profiler 工具解析应用的内存和 CPU 使用数据

2020-11-17
阅读 7 分钟
3.5k
为了帮助开发者开发出更加轻快高效的应用,我们在 Android Studio 3.0 以及更高版本中加入了 Android Profiler 工具,用于应用的 CPU、内存、网络和能耗分析。

Fragment 的过去、现在和将来

2020-11-16
阅读 8 分钟
3k
Fragment 是 Android 中历史十分悠久的一个组件,它在 API 11 被加入,时至今日已成为 Android 开发中最常用的组件之一。Fragment 有了哪些新特性、修复了哪些问题,都是开发者们十分关心的话题。下面我们就来重新说一说 Fragment —— 不仅仅是说现在的 Fragment,还会回顾它的发展,并让您一瞥它未来的样子。

卓盟科技: 动态资源加载技术背后的兼容性升级 | Android 开发者故事

2020-11-16
阅读 3 分钟
1.8k
玩家们总是希望游戏能马上加载完毕,这意味着 "加载" 这件事情本身也有轻重缓急: 游戏开始几分钟内会被用到的资源需要打包进 APK,其他的内容则等玩家启动游戏后在后台下载。

在 Android 和 Hilt 中限定作用域

2020-11-14
阅读 4 分钟
1.9k
将对象 A 的作用域限定到对象 B,指的是对象 B 的整个生命周期内始终持有相同的 A 实例。当涉及到 DI (依赖项注入) 时,限定对象 A 的作用域为一个容器,则意味着该容器在销毁之前始终提供相同的 A 实例。

从 "星际迷航" 破解 4X 策略游戏的制胜之道 | Google Play 开发者播客节目 · 第十一期

2020-11-11
阅读 2 分钟
2.6k
想要赢得策略游戏的胜利,面临挑战的不仅是玩家,对于创造游戏的企业而言同样如此。本期节目,Scopely 的 4X* 策略游戏 "Star Trek Fleet Command" (星际迷航舰队司令部) 总经理 David Eckleberry 和 Google Play 的开发者增长顾问 Howard Chen 将从多个角度共同探讨策略游戏发行的挑战: 带您了解 Scopely 接洽 "Star Tr...

减少崩溃,提升体验 | 使用 Kotlin 打造优质应用

2020-11-11
阅读 2 分钟
1.9k
每一个用户都希望从应用中获得无缝体验。崩溃会导致差评增加、应用卸载,甚至有损品牌认可度。与社区交流后,我们了解到开发者采用 Kotlin 的主要原因之一是为了更安全的代码。我将在本文中讲述 Kotlin 提高开发者代码稳定性的几种方式,也会通过 Google Play 商店统计的结果,看看使用 Kotlin 与崩溃数量之间是否有相关...

R8 编译器: 为 Kotlin 库和应用 "瘦身"

2020-11-09
阅读 6 分钟
2.6k
R8 是 Android 默认的程序缩减器,它可以通过移除未使用的代码和优化其余代码的方式降低 Android 应用大小,R8 同时也支持缩减 Android 库大小。除了生成更小的库文件,库压缩操作还可以隐藏开发库里的新特性,等到这些特性相对稳定或者可以面向公众的时候再对外开放。