opoojkk

Stay curious about the world!

Android中的View加载是怎样执行的

在 Android 中,Activity 是四大组件之一,负责将 视图(View)与 生命周期 关联。当一个 Activity 创建时,通常会通过 setContentView 设置内容,其本质是将一个 View 添加到系统预留的容器中。 在这个过程中,xml 文件会被解析成一个树状结构的 View。本文主要介绍 xml 布局是如何转化为 View 的。

我们还需要技术文章吗

前几天我看到一个帖子,讨论的问题是:“在 AI 时代,技术文章还有必要吗?” 这是个有些“老派”的提法,但依然引起了不少人讨论。大多数人的观点是:没什么必要了。因为相比 AI 掌握的庞大知识,技术文章的那点内容微不足道。

Kotlin泛型和reified

Generics were introduced to the Java language to provide tighter type checks at compile time and to support generic programming. To implement generics, the Java compiler applies type erasure to: Replace all type parameters in generic types with their bounds or Object if the type parameters are unbounded. The produced bytecode, therefore, contains only ordinary classes, interfaces, and methods. Insert type casts if necessary to preserve type safety. Generate bridge methods to preserve polymorphism in extended generic types. Type erasure ensures that no new classes are created for parameterized types; consequently, generics incur no runtime overhead. Type Erasure (The Java™ Tutorials > Learning the Java Language > Generics (Updated))

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 {} 优势: 实现简单; 没有同步开销; 不足: 类加载时创建,可能造成资源浪费; 线程安全: