Android性能优化(一)——卡顿优化 本文转载自努比亚技术团队公众号。 在分析任何问题之前,我们都需要先弄清楚其基本原理,也就是要掌握了这个“道”,才能真正着手去分析问题,否者只能是弄得一头雾水,也没法真正的理解和解决问题。所以要想分析并解决界面掉帧卡顿问题,我们就先需要知道在Android系统上应用UI线程到底是如何完成一帧画面的上帧显示动作的(本文讲解的内容主要基于Android原生应用的绘制渲染流程,对于游戏应用和Flutt 2022-06-28 Android Performance Optimization Repost Android Performance Optimization
Java并发编程——从ReentrantLock来看AQS的应用 上篇文章简单梳理了一下AQS原理,这篇文章通过ReentrantLock来看JUC包是如何应用AQS的。 ReentrantLock概述ReentrantLock意思为可重入锁,指的是一个线程能够对一个临界资源重复加锁,它通过AQS框架来提供公平锁与非公平锁的两种实现。 可以将其与Synchronized对比,区别如下: ReentrantLock Synchronized 锁实现机 2021-08-12 Concurrency AQS ReentrantLock
Java并发编程——AQS原理 AQS 全称是 Abstract Queued Synchronizer,翻译为抽象排队同步器。它是一套实现多线程同步功能的框架,由大名鼎鼎的 Doug Lea 操刀设计并开发实现的。AQS 在源码中被广泛使用,尤其是在 JUC包中,比如 ReentrantLock、Semaphore、CountDownLatch、ThreadPoolExecutor。 理解 AQS 对我们理解 JUC 中其他组 2021-08-05 Concurrency AQS CLH CAS
Android Framework(六)——ANR机制从产生到消费 最近看了几篇关于ANR机制的文章,本篇文章来源码跟踪一下ANR消息的产生、消费与dump的全过程,彻底理解ANR出现的原因,并且讨论如何监控ANR的产生。 ANR机制原理ANR(Application Not Responding)机制是Android系统中一种监控用户App是否长时间未响应的一种机制,类似于Windows系统中的“程序未响应”。 既然是监控耗时,类似于我们监控一个方法的执行时间, 2021-07-30 Android Framework AOSP ANR Service
Android Framework(五)——Activity生命周期分析 在系列第二篇文章中我们知道了Activity的整个启动流程,知道Activity是在App接收到启动Activity请求时通过反射的方式创建,在创建之后紧接着就会回调其生命周期。 本篇文章将会从Activity#attach开始,分析Activity在各个生命周期阶段的主要工作。 初始化阶段通过之前的文章,Activity的创建由ActivityThread的performLaunchActivi 2021-07-15 Android Framework AOSP Activity ViewModel
最佳实践 | 基于注解处理器实现视图绑定 上篇文章我们详细介绍了注解处理器的相关功能,不过即使看完也完全不知道注解处理器到底要怎么写。 注解处理器本身是个实践性十分强的概念,本篇文章将会从0到1编写一个Kotlin注解处理器(KAPT)实现Android中的视图绑定功能,在这之前,先来介绍一些能够协助我们快速开发的开源库。 注:源码链接放置在文末。 开源库推荐先推荐几个开源库:AutoService、JavaPoet、KotlinPo 2021-07-05 Best Practices APT KAPT
深入理解JVM(七)——插件化注解处理器 Java 中的注解(Annotation)在JDK 1.5中第一次被引入,当时开发者只能在运行时通过反射机制获取。反射的效率不高,局限性大,因此在JDK 1.6的JSR 269规范中引入了编译期注解,即插件化注解处理器(Pluggable Annotation Processor),使得我们可以通过注解处理器在Javac的编译阶段修改抽象语法树的内部。 在了解插件化注解处理器之前,先来了解一下Ja 2021-06-25 JVM APT
Android Framework(四)——ActivityManagerService 注意(WARNING):本文所贴源码全部来自 Android API 29 Platform,即 Android 10.0。 在前面的几篇文章中,AMS或者ATMS绝对是出现频率最高的缩写之一。关于ActivityManagerService(下文简称AMS),我们或多或少都知道它的一点职责,例如四大组件的启动和管理、管理ANR状态、发起应用程序进程启动请求等。 AMS可以说是Android 2021-06-16 Android Framework AOSP AMS
Android Framework(三)——应用程序进程启动流程 注意(WARNING):本文含有大量AOSP源码,阅读过程中如出现头晕、目眩、恶心、犯困等症状属正常情况,作者本人亦无法避免症状产生,故不承担任何法律责任。 本文所贴源码全部来自 Android API 29 Platform,即 Android 10.0。 阅读本文需要有一定的C/C++基础。 要想启动一个应用程序,首先要保证这个应用程序所需要的应用程序进程已经启动。 在上两篇文章中我们分别 2021-06-03 Android Framework AOSP
Android Framework(二)——Activity启动流程 注意(WARNING):本文含有大量AOSP源码,阅读过程中如出现头晕、目眩、恶心、犯困等症状属正常情况,作者本人亦无法避免症状产生,故不承担任何法律责任。 本文所贴源码全部来自 Android API 29 Platform,即 Android 10.0。 Android 中待启动的 Activity 分为两类,一种是 App 的Root Activity,也就是根Activity,另一种是 2021-05-22 Android Framework AOSP Activity