ANR 触发原理

Input超时机制

input的超时检测机制跟service、broadcast、provider截然不同,为了更好的理解input过程先来介绍两个重要线程的相关工作:

Read More

Share Comments

RecyclerView inflate优化

背景

本文是在工作中对App启动耗时中页面展现耗时的一个优化,特意记录优化方案和遇到的问题。
主要是针对首页Recyclerview itemview的一个优化,减少itemview inflate耗时,从而减少onCreateViewHolder耗时,最终减少页面展现的耗时

Read More

Share Comments

SP源码阅读和其导致ANR原因分析

背景

本文是在看了字节的这篇文章: 剖析 SharedPreference apply 引起的 ANR 问题,发现很多原理不太清楚,特意根据源码总结一下,避免网上的人云亦云

Read More

Share Comments

Java内存分配策略

java的内存分配策略

1、Java 程序运行时的内存分配策略有三种:

(1) 静态分配
(2) 栈式分配
(3) 堆式分配

Read More

Share Comments

Android Binder机制分析(三)

背景

上篇文章分析到了Binder机制,同时介绍了Android Framework层系统服务的binder使用。本篇文章分析下Binder的底层实现,以及为什么Binder只需要一次内存拷贝。

Read More

Share Comments

android场景实现AOP编程

我在很早之前就了解过面向切面(AOP)的编程思想,比如AspectJ 实现简单的切面编程,不过都快忘了 :(。本文是想探究AOP在Android环境中的使用,补全Android开发者的技能树。

常见的AOP编程框架有AspectJ、 Cglib,Hibernate 和 Spring 等等,而这些目前流行的AOP框架绝大多数底层实现都是直接或间接地通过 ASM 来实现字节码操作,本文重点就来介绍一下ASM。

Read More

Share Comments

移动view的几种方式总结

移动view的几种方式

使用View.layout(l, t, r, b)方法

Assign a size and position to a view and all of its descendants
这个方法是用来指定一个view和它所有的子view的尺寸和位置

Read More

Share Comments

自定义gradle插件

gradle和gradlew的区别

如果配置好了 gradle 环境变量后,就可以在cmd中使用gradle命令了
在cmd中输入: gradle -v

Read More

Share Comments