Gityuan

Keep on going never give up

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

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

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

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

Android事件分发机制

一.概述 事件分发有多种类型, 本文主要介绍Touch相关的事件分发. 整个事件分发流程中,会有大量MotionEvent对象,该对象用于记录所有与移动相关的事件,比如手指触摸屏幕事件。 一次完整的MotionEvent事件,是从用户触摸屏幕到离开屏幕。整个过程的动作序列:ACTION_DOWN(1次) -> ACTION_MOVE(N次) -> ACTIO...

adb连接不上手机的解决方法

adb驱动已正常安装,但仍无法通过adb devices找到设备? Windows用户 方法1 如果有sdk环境,只需要进入路径/{sdk目录}/tools/,再执行: Android update adb 方法2 如果没有sdk环境,也没关系,稍微复杂一些: 步骤如下: 在目录C:\Users\{用户名}\.android,新建adb_usb.ini文件,如...

grep && find命令用法

Linux下搜索文件内容常用grep,搜索文件信息使用find 一、 grep 搜索文本的命令 命令格式: grep [options]... pattern [file]... 命令格式: grep 查找规则... 正则表达式 查看文件 1.1 查找规则 options 解释 -i ...

源码解读Android属性动画

一. 概述 前面已介绍Android属性动画的启动方式: // [见小节2.1] ObjectAnimator anim = ObjectAnimator.ofFloat(targetObject, "alpha", 0f, 1f); // [见小节2.2] anim.setDuration(1000); // [见小节2.3] anim.start(); 这...

Android动画插值器

本文从源码的角度,来展开对动画的解析,关于动画基本用法,可查看三种动画实现。 关于动画有两个非常重要的类,那就是插值器(Interpolators)与 估值器(Evaluators),下面将详细讲解。 一、 差值器概述 先来看看不同差值器对动画的效果影响。 1.1 线性插值的动画 图1是在屏幕上进行水平位移的动画,总时间是40ms,移动总距离为40pixels(像素),每1...

Android三种动画实现

作为Android开发者,动画是非常重要的知识点,本文主要从入门角度来探索动画。 一、概述 Android的动画主要包括三大类:逐帧动画Frame、补间动画Tween、属性动画,其中属性动画功能非常强大,也是最常用的动画方法。 下面先列举一下这3类动画的实例代码,已形成初步印象: //逐帧动画,需资源文件frame_animation.xml ImageView img = (...

Android中的dp、sp与px换算关系

相信有不少开发者对于dp/sp/px,这些概念比较模糊,本文将讲解其含义和用途。 1. 基本概念 px: 像素(pixel),设备上的物理像素点。 dp:跟dip是同一个概念,与屏幕物理像素点无关,而是基于屏幕密度抽象单位,被称作“设备独立像素”,会随着屏幕的密度进行自动的大小调整。 sp: 专用于文字大小的设置,可根据字体大小首选项进行缩放。 inch: 英寸,...

数组遍历的性能分析

问题 完全遍历有序和无序的数组,时间复杂度都是O(n),为什么遍历有序数组比无序数组速度更快? 下面是一个C++代码,由于一些奇怪的原因,已排序的数据数组比未排序地数组运算差不多快6倍。 #include <algorithm> #include <ctime> #include <iostream> int main() { //...

dumpsys原理简介

dumpsys源码 dumpsys是Android自带的强大debug工具,命令源码来自dumpsys.cpp文件。 frameworks/native/cmds/dumpsys/dumpsys.cpp int main(int argc, char* const argv[]) { signal(SIGPIPE, SIG_IGN); //获取ServiceManage...

Android开发规范

Google官方Java代码风格参考规范链接, 中文翻译参考版链接。 命名规范 1. 包命名 规则:包名全部小写,采用反域名命名规则,一级包名是顶级域名,通常为com, edu, gov, net, org等,二级包名,通过为公司名或部门名或者个人名,三级包名通常为项目名,四级包名为模块名或者层级名。以下是从层级包名来划分android项目中采用的包划分结构 com.domai...

Android体系架构

本文讲述的Android系统体系架构,是指应用层之下的整个系统内部的架构层级关系。而并非常说的4层架构:应用层,framework,运行库与环境,Linux内核,而是把系统内部的流程调用划分更加详细。 一、架构 Android系统体系架构图: Android系统体系架构分为5层,自顶而下分别是: 应用程序框架(Application Framework) 进程通...

Java中的条件编译

在代码中添加大量log,对于CPU和内存的影响如何,会不会降低性能?相信有不少人对此有疑问,本文将详细解答该问题。 一、概述 条件编译是指源程序的代码行,可以在满足一定条件的情况下才进行编译,而未选中的源码,不会生成中间码或机器码,即部分内容参与编译。 条件编译的好处:对于不同硬件平台或者软件平台,或者不同功能模块的代码,编写到在同一个源文件,从而方便程序的维护和移植。 很多...

理解Java反射机制

对于Java使用者来说,反射机制可以说是不得不了解的重要技能之一 一、概述 JAVA反射机制,可在运行态直接操作任意类或对象的所有属性和方法,主要有以下几个功能: 在运行时获取任意对象所属的类 在运行时构造类的实例对象 在运行时获取或修改类/成员的属性 在运行时调用某个类/对象的方法 另外还可获取类的其他信息,比如描述修饰符、父类信息等 针对动态语言,...

设计模式-开篇

一、设计模式 1.1 六大设计原则 单一职责原则(SRP):一个类只负责一个职责,不要存在多个导致类变更的原因; 接口隔离原则(ISP):客户端不应该依赖它不需要的接口,多用组合,少用继承 依赖倒置原则(DIP): 提高灵活性,高层不依赖低层,两个都应该依赖于抽象 里氏替换原则(LSP):子类必须能够替换他们的基类 迪米特法则(LOD):类间解耦,类之间联系尽可能少...

ADB常用命令笔记

主要列举平时经常使用的一些adb命令 一. 基本指令 adb -s serialNumber shell //进入指定设备 adb version //查看版本 adb logcat //查看日志 adb devices //查看设备 adb get-state //连接状态 adb start-server //启动ADB服务 adb ki...