Gityuan

Keep on going never give up

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

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

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

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

ContentProvider引用计数

基于Android 6.0源码剖析,本文涉及的相关源码: 一.概述 上一篇文章理解ContentProvider原理介绍了provider的整个原理, 本文以查询操作为例,说一说provider引用计数的问题. 1.1 query操作 public final Cursor query(final Uri uri, String[] projection, ...

unbindService流程分析

基于Android 6.0的源码剖析, 分析bind service的启动流程。 frameworks/base/core/java/android/app/ContextImpl.java frameworks/base/core/java/android/app/LoadedApk.java frameworks/base/core/java/android/app/IServ...

bindService启动过程分析

基于Android 6.0的源码剖析, 分析bind service的启动流程。 /frameworks/base/core/java/android/app/ContextImpl.java /frameworks/base/core/java/android/app/LoadedApk.java /frameworks/base/core/java/android/app/IS...

如何自学Android

引言:知乎上我曾回答了 自学编程一年,压力过大,该怎么办? - Gityuan 的回答,之后有不少知乎朋友私信或Email给我,希望能讲讲学习Android的心得。业内有不少同仁写过关于如何自学的文章,本文则是从自身的学习经历和经验,可能并不是适合每一个人,写出来仅供大家参考。 看到很多人提问非科班该如何学习编程,其实科班也基本靠自学。有句话叫“师傅领进门修行靠个人”,再厉害的老师...

AMS杀进程场景之汇总

基于Android 6.0源码剖析,统计AMS所有可能杀进程的场景. 一. 杀进程场景 理解杀进程的实现原理, 介绍了杀进程的过程, 接下来本文介绍系统framework层, ActivityManagerService在哪些场景会调用ProcessRecord.java中的kill()方法来杀进程. void kill(String reason, boolean noisy...

理解杀进程的实现原理

基于Android 6.0的源码剖析, 分析kill进程的实现原理,以及讲讲系统调用(syscall)过程,涉及源码: /framework/base/core/java/android/os/Process.java /framework/base/core/jni/android_util_Process.cpp /system/core/libprocessgroup/pro...

Linux Kernel简介

一. Linux全局观 先来看一幅Linux kernel map:点击查看大图 这是makelinux网站提供的一幅非常经典的Linux内核图,涵盖了内核最为核心的方法. Linux除了驱动开发外,还有很多通用子系统,比如CPU, memory, file system等核心模块,即便不做底层驱动开发, 掌握这些模块对于加深理解整个系统运转机制还是很有帮助。 二. Kernel源...

理解Android进程创建流程

基于Android 6.0的源码剖析, 分析Android进程是如何一步步创建的,本文涉及到的源码: /frameworks/base/core/java/com/android/internal/os/ - ZygoteInit.java - ZygoteConnection.java - RuntimeInit.java - Zygote.jav...

理解Android编译命令

工欲善其事,必先利其器,对于想要深入学习Android源码,必须先掌握Android编译命令. 一、引言 关于Android Build系统,这个话题很早就打算整理下,迟迟没有下笔,决定跟大家分享下。先看下面几条指令,相信编译过Android源码的人都再熟悉不过的。 source setenv.sh lunch make -j12 记得最初刚接触Android时,同事告诉我...

简述Activity生命周期

基于Android 6.0的源码剖析, 分析android Activity启动流程中ActivityManagerService所扮演的角色 一、概述 上一篇文章startActivity启动过程分析,介绍了startActivity是如何一步步创建的,再来看看生命周期的控制。先来一张官方的Activity状态转换图: Activity的生命周期中只有在以下3种状态之一,...

startActivity启动过程分析

基于Android 6.0的源码剖析, 分析android Activity启动流程,相关源码: frameworks/base/services/core/java/com/android/server/am/ - ActivityManagerService.java - ActivityStackSupervisor.java - ActivityStack.ja...

startService启动过程分析

基于Android 6.0的源码剖析, 分析android Service启动流程,相关源码: frameworks/base/services/core/java/com/android/server/am/ - ActivityManagerService.java - ActiveServices.java - ServiceRecord.java - Pro...

Binder IPC的权限控制

基于Android 6.0的源码剖析, 分析Binder IPC通信的权限控制方法clearCallingIdentity和restoreCallingIdentity的原理和用途。 frameworks/base/core/java/android/os/Binder.java frameworks/base/core/jni/android_util_Binder.cpp fr...

Pm命令用法

一、Pm命令 1.1 命令列表 命令格式: pm <command> 命令列表: 命令 功能 实现方法 list packages 列举app包信息 PMS.getInstalledPackages install ...

Am命令用法

基于Android 6.0的源码剖析, 分析am命令 一、概述 作为一名开发者,相信对adb指令一定不会陌生。那么在手机连接adb后,可通过am命令做很多操作: 拨打电话 通过adb,可以直接拨打电话10086 adb shell am start -a android.intent.action.CALL -d tel:10086 打开网站 比如,打开网站www.g...