Gityuan

Keep on going never give up

[置顶]Android系统架构开篇

基于Android 6.0或更高版本的源码,专注于分享Android系统原理、架构分析的原创文章,这是Android系列文章的开篇。

彻底理解安卓应用无响应机制

引言 不论从事安卓应用开发,还是安卓系统研发,应该都遇到应用无响应(ANR,Application Not Responding)问题,当应用程序一段时间无法及时响应,则会弹出ANR对话框,让用户选择继续等待,还是强制关闭。 绝大多数人对ANR的了解仅停留在主线程耗时或CPU繁忙会导致ANR。面试过无数的候选人,几乎没有人能真正从系统级去梳理清晰ANR的来龙去脉,比如有哪些路径会引发AN...

Android技术架构演进与未来

引言 众所周知,Android是谷歌开发的一款基于Linux的开源操作系统,每年迭代一次大版本升级。 小米、华为、OPPO、VIVO、三星等各大厂商对Android原生系统进行二次开发衍生出具有各家特色的系统(比如MIUI),为手机、电视、平板电脑、手表等数十亿设备提供平台支持,使得Android作为全球最受欢迎的移动操作系统。Android诞生至今已有10余年,这一路走来Android遇...

理解Android P内部API的限制调用机制

本文基于原生Android 9.0源码来解读hidden API的限制调用机制 libcore/ojluni/src/main/java/java/lang/Class.java art/runtime/native/java_lang_Class.cc art/runtime/hidden_api.h art/runtime/runtime.h 一、引言 每一次Androi...

global reference限制策略

基于Android 9.0源码来讲一讲global reference问题 art/runtime/jni_internal.cc art/runtime/indirect_reference_table.cc art/runtime/java_vm_ext.cc art/runtime/jni_env_ext.cc art/runtime/java_vm_ext.h art/ru...

深度解读ArrayMap优势与缺陷

ArrayMap在内存使用上较HashMap更有优势,在Android开发中广为使用的基础API,也是大家所推荐的方法, 但你是否想过Google如此重要的基础类存在缺陷? 一、引言 在移动设备端内存资源很珍贵,HashMap为实现快速查询带来了很大内存的浪费。为此,2013年5月20日Google工程师Dianne Hackborn在Android系统源码中新增ArrayMap...

源码解读epoll内核机制

从源码角度来领略一下内核的轮询机制 kernel/fs/eventpoll.c kernel/include/linux/poll.h kernel/include/uapi/linux/eventpoll.h 一、概述 在linux还没有epoll机制前,select和poll作为IO多路复用的机制实现并发程序,但这两种方式有着如下缺点: 通过select方式单个进...

源码解读poll/select内核机制

从源码角度来解读内核的轮询机制,了解是如何实现事件监控功能的 kernel/fs/select.c kernel/include/linux/poll.h kernel/include/linux/fs.h kernel/include/linux/sched.h kernel/include/linux/wait.h kernel/kernel/sched/wait.c kern...

源码解读Linux等待队列

从源码角度来解读Linux等待队列机制,了解休眠与唤醒的运转原理 kernel/include/linux/wait.h kernel/kernel/sched/wait.c kernel/include/linux/sched.h kernel/kernel/sched/core.c 一、概述 Linux内核的等待队列是非常重要的数据结构,在内核驱动中广为使用,它是以双循环...