Gityuan

Keep on going never give up

[置顶]Android 操作系统架构开篇

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

[置顶]Flutter 跨平台演进及架构开篇

基于Flutter 1.5.4或更高版本的源码,专注于分享Flutter引擎、框架、虚拟机等架构与原理解读的原创文章。

ActivityManagerService启动过程

基于Android 6.0的源码剖析, 分析Android系统服务ActivityManagerService,简称AMS frameworks/base/core/java/android/app/ - ActivityThread.java - LoadedApk.java - ContextImpl.java frameworks/base/services/j...

Android系统启动-SystemServer下篇

基于Android 6.0的源码剖析, 分析Android启动过程的system_server进程 frameworks/base/services/java/com/android/server/ - SystemServer.java frameworks/base/services/core/java/com/android/server/ - SystemServ...

Android系统启动-SystemServer上篇

基于Android 6.0的源码剖析, 分析Android启动过程的system_server进程 /frameworks/base/core/java/com/android/internal/os/ - ZygoteInit.java - RuntimeInit.java - Zygote.java /frameworks/base/core/services/j...

Android系统启动-zygote篇

基于Android 6.0的源码剖析, 分析Android启动过程的Zygote进程 /frameworks/base/cmds/app_process/App_main.cpp /frameworks/base/core/jni/AndroidRuntime.cpp /frameworks/base/core/java/com/android/internal/os/ - ...

Android系统启动-Init篇

基于Android 6.0的源码剖析, 分析Android启动过程进程号为1的init进程的工作内容 system/core/init/ - init.cpp - init_parser.cpp - signal_handler.cpp 一、概述 init进程是Linux系统中用户空间的第一个进程,进程号固定为1。Kernel启动后,在用户空间启动init进程,并...

Android系统启动-综述

基于Android 6.0的源码剖析, Android启动过程概述 一. 概述 Android系统底层基于Linux Kernel, 当Kernel启动过程会创建init进程, 该进程是所有用户空间的鼻祖, init进程会启动servicemanager(binder服务管家), Zygote进程(Java进程的鼻祖). Zygote进程会创建 system_server进程以及...

Java类加载器(ClassLoader)

本文主要讲述Java ClassLoader的工作原理,为后面将Android App代码热替换或者插件化升级做铺垫 一、 类加载器 ClassLoader即常说的类加载器,其功能是用于从Class文件加载所需的类,主要场景用于热部署、代码热替换等场景。 系统提供3种的类加载器:Bootstrap ClassLoader、Extension ClassLoader、Applica...

Java注解(Annotation)

本文讲述Java Annotation的原理,如何自定义Java注解以及通过反射解析注解。 一、注解 1.1 概述 注解(Annotation)在JDK1.5之后增加的一个新特性,注解的引入意义很大,有很多非常有名的框架,比如Hibernate、Spring等框架中都大量使用注解。注解作为程序的元数据嵌入到程序。注解可以被解析工具或编译工具解析,此处注意注解不同于注释(comm...

性能工具Traceview

Traceview 性能分析功能,首推Systrace,建议看看另一篇文章性能工具Systrace,关于Trracview就简单地讲一下。 代码实现: Debug.startMethodTracing("demo"); Debug.stopMethodTracing(); 视图: 参数说明: Name: 该线程运行过程中所调用的函数名 Incl Cpu Time:...

性能工具Systrace

无论是系统开发者,还是应用开发者都应该掌握systrace这一神技。 一、概述 保证系统流畅度,也就是保证系统能连续不间断地提供每秒60帧的运行状态。当出现掉帧时(也可称为Jank),需要知道当前整个系统所处的状态,systrace便是最佳的选择,它能手机检测android系统各个组件随着时间的运行状态,并能提示该如何有效地修复问题,接下来说说systrace如何使用以及如何解读...

Java线程池分析

Android是基于Java开发的平台,本文java线程池也适用于Android。 一、概述 在执行一个异步任务或并发任务时,往往是通过直接new Thread()方法来创建新的线程,这样做弊端较多,更好的解决方案是合理地利用线程池,线程池的优势很明显,如下: 降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗; 提高系统响应速度,当有任务到达时,无...

Android耗电统计算法

基于Android 6.0的源码剖析 一、 概述 Android系统中的耗电统计分为软件排行榜和硬件排行榜,软件排序榜是统计每个App的耗电总量的排行榜,硬件排行榜则是统计主要硬件的耗电总量的排行榜。 涉及耗电统计相关的核心类: /framework/base/core/res/res/xml/power_profile.xml /framework/base/core/ja...

wait、notify、sleep、interrupt对比分析

对比分析Java中的各个线程相关的wait()、notify()、sleep()、interrupt()方法 方法简述 Thread类 sleep:暂停当前正在执行的线程;(类方法) yield:暂停当前正在执行的线程,并执行其他线程;(类方法) join:等待该线程终止; interrupt:中断该线程,当线程调用wait(),sleep(),join()或...

Android内存分析命令

一、概述 1.1 内存指标概念 Item 全称 含义 等价 USS Unique Set Size 物理内存 进程独占的内存 PSS Proportional Set Size 物理内存 ...

Android消息机制3-Handler(实战)

本文基于Android 6.0的源代码,来分析Handler的用法 framework/base/core/java/andorid/os/HandlerThread.java 一、实例 Android消息机制1, Android消息机制2 这两篇文章已经分别从Java和Native角度讲解了消息机制,那么对于Handler的用法,往往是在一个线程中运行Looper,其他线程...