opoojkk

没有什么困难是不能打败我的!

flutter渲染和布局

原文:Flutter architectural overview | Flutter 本节描述了Flutter的渲染管道,即将一层层的Widgets层级转换为实际绘制在屏幕上的像素的系列步骤。 Flutter的渲染模型 # 你可能会好奇:如果Flutter是一个跨平台框架,它是如何实现和单平台框架接近的性能呢?

Fragment的故事

Fragment 在原生 Android 开发中一直占有一席之地。像 ViewPager2、Dialog 都依赖 Fragment 来实现。虽然在实现底部导航(Bottom Navigation)时,ViewPager2 配合 Fragment 有一些小坑,但这并不影响 Fragment 在 Android 体系中的地位。

举报和被举报的

最近遇到一件有意思的事。自疫情开始,我一直在听梁文道的音频节目《八分》,今年他推出了付费版本《八分半》,犹豫了一阵子后,我订阅了。 一直以来相安无事,直到最近节目被全平台下架。有人猜测,是因为在蔡澜去世的那一期节目里,道长(梁文道)谈到了香港,提到了《苹果日报》的老板。我觉得这种说法可信度很高,因为如今的“爱国”已经到了空前的高度。

AI入门指南:从零开始理解人工智能

人工智能(英语:artificial intelligence,缩写为AI(英语文本)),指由人造机器所展现的智能。通常人工智能是指用普通计算机程序来呈现人类智能的技术。该词也指出研究这样的智能系统是否能够实现,以及如何实现。

LeakCanary检测到内存泄漏之后发生了什么

检测 # LeakCanary 是 Android 开发中最常用的内存泄漏检测工具之一。由于在 dump 内存快照时需要 挂起所有线程,这会带来明显的卡顿,因此它通常只在开发和调试阶段启用。 涉及到的类型有弱引用、引用队列和一个map。像是这样: 1 private val watchedObjects: MutableMap<String, KeyedWeakReference> = ConcurrentHashMap() 弱引用不会影响对象是否被回收,当弱引用被清理之后,弱引用会被添加进关联的弱引用队列。Leak Canary用到的弱引用类型KeyedWeakReference是WeakReference的一个子类,增加了key。弱引用的key也是watchedObjects的key,于是对象、弱引用、map几个关键信息就联系起来。

Google Play 企业开发者账号注册踩坑记录

注册企业账号 # 注册企业账号的第一步仍然是注册一个 Google 账号,这个过程比较简单。随后再进入 Google Play Console 注册开发者账号时,需要在个人开发者和企业开发者之间选择。网上关于个人账号的经验文章很多,这里主要记录企业开发者的流程和坑点。

Kotlin的枚举、密封类和密封接口

枚举 # 下面涉及到的语言均是Kotlin,理论上Kotlin和Java在枚举中具有的功能是相同的。 说到枚举,就有先入为主的概念,认为枚举只能定义两个简单的状态,像是下面这样: 1 2 3 enum class State{ OPEN, CLOSE; } 其实不是这样的,这只是最最基本的用法,把枚举当做常量使用了。

单例模式设计对比分析

懒汉式 # 1 2 3 4 5 6 7 8 9 10 // java public class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton() {} public static Singleton getInstance() { return INSTANCE; } } 1 2 // kotlin object KotlinSingleton {} 优势: 实现简单; 没有同步开销; 不足: 类加载时创建,可能造成资源浪费; 线程安全:

发布android库到Maven Central

平时写一些小东西时有一部分代码是很常用到的,总不能每次都写一遍,每次都复制也太麻烦了,最简单的方式就发布到maven仓库,用拉取远程仓库的方式解决。因此,废了一顿劲发布到maven central中。也刚好记录下来,帮助有需要的人。

Fragment重建过程详解

当Activity的配置发生变化或者低内存被回收后,会触发Activity的重建。可以通过重写onSaveInstanceState和onRestoreInstanceState实现重建时的保存和恢复逻辑。