自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 Activity布局加载流程源码分析(III)

在Activity布局加载流程源码分析(I)、Activity布局加载流程源码分析(II)、DecorView绘制流程源码分析与View绘制三大流程源码分析等四篇文章中,已经很详细分析了Acitivity的布局加载过程及布局内容的绘制过程。但在Activity布局加载流程源码分析(I) 中,对于setContentView(“资源文件”)怎么转化View的,没有细说,本篇博文主要想分析这部分内容(...

2019-06-27 19:23:50 357

原创 Android屏幕适配原理解析

最近在玩Android看到一篇文章一种极低成本的Android屏幕适配方式。细细阅读发现,其适配原理主要是根据dp/sp与px的转换,而dp/sp与px的转换又与DisplayMetrics的density相关,所以可以通过改变DisplayMetrics的density,scaledDensity和densityDpi的值来适配不同分辨率机型。这其中是怎么做到的呢,本篇博文将会从源码的角度来分析...

2018-06-19 19:59:56 3410 4

原创 Android框架源码阅读指南(博客专栏)

第一步:应用程序入口Android应用程序入口源码解析第二步:Android跨进程通信Binder通信机制原理解析Android跨进程通信方式(IPC)解析第三步:Activity的启动流程Activity启动流程源码分析(应用中)Activity启动流程源码分析(Launcher中)第四步:Activity的布局加载流程 Activity布局加载流程源码分析(...

2018-03-26 19:54:11 682 1

原创 Android显示原理源码分析

在博文DecorView绘制流程源码分析中,我们对Android的显示原理简单的说了一下,但没有深入。在博文中我们只知道Choreographer(舞蹈指挥者)只是post了一个操作,但后面到底怎么执行的?按啥逻辑执行的?我们都不清楚,作为一个喜欢刨根问底的程序员,是必须要分析分析的。在开始分析之前,我们需要了解一些概念,如:ViewRootImpl:是View的绘制的辅助类,所有Vie...

2018-03-05 20:43:41 2027

原创 Android Event事件分发机制源码分析

昨天我们对View绘制三大流程源码已做了深入分析,所以关于View的绘制流程,我相信大家也有了一个大致的了解(如果不了解,请回看博文)。然而对于View,还有一个知识点,也是极其重要的,那就是View的事件分发机制(也即Android事件分发机制)。所以,今天我们就来谈谈View的事件分发机制,从源码的角度,跟随Touch事件流,走一遍流程。在开始分析之前,我们需要了解一些概念,如一次Touc

2018-01-09 19:07:46 806 1

原创 View绘制三大流程源码分析

在上篇博文DecorView绘制流程源码分析中,关于DecorView作为Activity、Window中的顶级View的绘制,我们已经作了一个详细的分析。但在具体说到View的绘制的时候,我们没有详细说明,所以本篇博文将会对View的绘制原理作深度分析。在开始分析之前,我们需要了解一些概念,如:View:是所有UI组件的基类,是Android平台中用户界面体现的基础单位。ViewGr

2018-01-08 19:38:55 965

原创 DecorView绘制流程源码分析

通过Activiyt布局加载流程源码分析(I)和Activiyt布局加载流程源码分析(II)两篇博文,我们知道,首先,Activity的布局内容被加载进入装饰器DecorView中,然后WindowManager将DecorView添加到PhoneWindow中,也即Window中,最后ViewRootImpl对DecorView进行绘制操作,将其内容显示到手机上。但前两篇博文中,对于DecorV

2018-01-05 17:19:55 1730

原创 Activity布局加载流程源码分析(II)

在Activity布局加载流程源码分析(I)文章中,已经详细分析了setContentView()加载流程,但对于装饰器DecorView怎么被加载到Window上的,怎么被绘制到Window上的,上篇博文没有说到,所以本篇博文将会接着上篇博文,继续分析Activity布局的加载流程。在开始分析之前,我们需要了解一些概念,如:Window: 是一个抽象类,表示是一个窗口。Android系统中的界面

2018-01-03 18:51:59 1138

原创 Activity布局加载流程源码分析(I)

最近阅读Android源码,似乎有点发现新大陆的感觉。以前经常接触Android知识,在阅读源码中,开始变得豁然开朗。前两天才写完两篇博文Activity启动流程源码分析(应用中)和Activity启动流程源码分析(Launcher中),今天,就急不可耐的想写写Activity布局加载流程,其实,也就是想趁热打铁,好好梳理梳理这部分知识。在开始梳理之前,我们需要了解一些概念,如:Window: 是

2017-12-29 19:19:01 1223

原创 Activity启动流程源码分析(Launcher中)

Activity的启动方式,严格来说有两种形式。第一种是在Android应用中启动,第二种是从Launcher中点击应用快捷图标启动。Android应用中Activity启动流程,在上篇博文Activity启动流程源码分析(应用中)已介绍过了,想了解的同学,可以看看一下。本篇博文将会介绍从Launcher中启动Activity具体流程。在开始介绍之前,我们需要了解一些概念,如:ActivityTh

2017-12-27 18:37:58 1161

原创 Activity启动流程源码分析(应用中)

在移动应用开发中,Android四大组件之一Activity是最常用的。很多界面,如:闪屏、主界面、次功能界面等都需要Activity来作为主要的载体;界面与界面之间,即不同的Activity之间也都存在跳转切换,弄懂这其中跳转切换原理,将有助于我们更好的理解Android中Activity之间的交互逻辑,从而更好的开发Android应用。本篇博文将会重点介绍Android应用中的Activity的

2017-12-26 20:14:33 1417

原创 Android跨进程通信方式(IPC)解析

在Android的圈子里,一直有一个声音,那就是:要学会看Android源码。在前期,android开发者比较缺乏阶段,似乎大家也没那么重视,但随着时间的发展,Android开发者早已供大于求,需要具备的技能也不在仅限于应用开发,还需要对Android运行机制原理有一个深度的了解,从而更好的为项目服务。所以,阅读Android源码,也就成为Android开发人员必须要做的事。在阅读Androi...

2017-12-15 18:02:29 1300

原创 Binder通信机制原理解析

Binder是什么?Binder有啥用?作为一个应用开发者,如果我们开发的应用不涉及跨进程通信(IPC),我想我们也不会去接触Binder。但不知你有没有发现,近来的Andorid面试,都会问及Android跨进程通信方面的知识,这又是为什么呢?如果你喜欢看Android源码,你就会发现Binder无处不在,Android系统中很多服务都是通过Binder来进行跨进程通信,了解Binder,弄懂Bi

2017-12-14 20:40:17 2398

原创 Logger框架源码解析

在移动软件开发中,我们经常会用到很多框架,如网络框架retrofit,图片加载框架glide,数据库框架litepal,日志框架Logger等。这些框架对应用都很重要,日志框架也是其中重要的一部分。因为很多操作如调试,优化,修改bug等都需要通过日志来验证我们的想法,所以日志框架就成项目的必需。本篇博文将会介绍Logger日志框架,主要从源码的角度分析。一、什么是Logger框架?Simple, p

2017-11-30 17:15:28 1359 1

原创 Android应用程序入口源码解析

我们在写C、C++或java应用时,都会有一个main函数,但Android的main函数在哪里呢?偶记得从第一个HelloWorld应用开始,就知道,只要在AndroidManifest配置表中对Activity的intent-filter进行配置,action为android.intent.action.MAIN,category为android.intent.category.LAUNCHE...

2017-11-23 21:40:33 2187

原创 Android消息机制源码解析(Handler)

Android消息机制,其实也就是Handler机制,主要用于UI线程和子线程之间交互。众所周知,一般情况下,出于安全的考虑,所有与UI控件的操作都要放在主线程及UI线程,而一些耗时操作应当放在子线程中。当在子线程中完成耗时操作并要对UI控件进行操作时,就要用Handler来控制。另外,Android系统框架内,Activity生命周期的通知等功能也是通过消息机制来实现的。本篇博文主要是想通过Han

2017-11-21 15:29:58 2067 1

原创 Butter Knife框架源码解析

最初的开始,findViewById()获取View控件,setOnClickListener设置View的监听事件,然后UI界面开始有响应。当初完成这个操作,有点兴奋,而这也成为我Android开发的起点。随着时间的推移,android也越来越熟悉,findViewById和setOnClickListener不知写了多少遍,偶发现有好大一部分时间,就是在写findViewById获取变量。针对这

2017-11-17 17:55:16 677

原创 LeakCanary框架源码解析

如果我们开发的程序,出现内存泄漏,导致程序奔溃,造成用户卸载APP。这样的结果,是我们不想见到的。作为一名向上的程序员,如何避免内存泄漏,这就成为必须要解决的问题。良心企业Square,开源了LeakCanary框架,可以轻松集成,让检测内存泄漏变得十分容易。什么是内存泄漏? 内存泄漏是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系...

2017-11-16 18:11:25 1087

原创 Android悬浮窗原理解析(Window)[源码]

悬浮窗,在大多数应用中还是很少见的,目前我们接触到的悬浮窗,差不多都是一些系统级的应用软件,例如:360安全卫士,腾讯手机管家等;在某些服务行业如金融,餐饮等,也会在应用中添加悬浮窗,例如:美团的偷红包,博闻金融快捷联系等。但两种悬浮窗还是有区别的:系统悬浮窗:所有界面都会展示,包括主屏、锁屏应用悬浮窗:只在应用Activity中展示。一、窗口Window在了解悬浮窗之前,首先我们需要认识一下

2017-10-17 19:47:59 7732

原创 HTTP文件断点续传原理解析(源码)

生活中,有许多事物,在没有被揭开面纱之前,我们往往会觉得很神秘很高深,认为它一定很难,进而望而却步,失去了解它的机会。然而,很多事,只要我们自己能沉下心来,细细研究,那些神秘高深的,也会变得简单明了。”HTTP文件断点续传”就是这样一个好例子,深入了解背后之理,“HTTP文件断点续传原理”其实很简单。一、什么是断点续传1.定义:可以从下载或上传断开点继续开始传输,就叫断点续传。2.核心实现原理:i.

2017-09-08 20:20:04 7788 2

原创 Annontation注解的应用及介绍

一、什么是注解?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用。Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成

2017-08-22 11:41:00 1028

原创 Android Camera相机原理解析(源码)

在应用软件开发中,图片数据,对于一个公司来说是十分重要的,例如:上传图片资料,修改用户头像等,而这其中就离不开相机和相册的使用。对于ios平台来说,直接调用系统相机或相册,就可搞定一切。然而对于Android平台来说,直接调用系统相机或相册,在适配和体验上问题比较多,具体原因,相比大家也知道,安卓品牌太多太杂,性能不一。鉴于此,在开发的过程中,遇到类似问题,建议自己实现相机或相册功能,以保证体验完整

2017-08-22 11:02:21 6859 3

原创 二进制世界如何表达现实世界的文字、图像和视频

一切从0 与 1出发。电平 → 表示比特二进制 → 表示数字编码表 → 表示文字像素矩阵 → 表示图片采样点 → 表示声音帧序列 → 表示视频不同的编码规则让同样的二进制流拥有不同意义。从 0 和 1 的世界里,我们创造了丰富多彩的数字世界 🌏。

2025-10-10 17:45:14 1230

原创 HookConsumerWidget 深入理解

局部状态管理 UI 临时状态全局状态管理跨 Widget 共享数据性能优化需注意 rebuild 范围、对象缓存和副作用处理结合使用可以使 Flutter 代码更简洁、更易维护。

2025-09-18 18:42:44 749

原创 Flutter项目详解

是 Flutter 项目创建的核心命令。通过模板和选项可以快速创建应用、插件、模块或包。创建后结合常用命令即可快速启动、调试和构建项目。灵活使用和--org等选项,可以生成符合实际需求的项目结构。

2025-08-27 12:02:34 798

原创 hooks_riverpod框架解析

类似 React 的生命周期:挂载时执行回调,卸载时清理。,不同 Provider 适用于不同业务场景。在 Riverpod 里,所有状态都是。

2025-08-27 11:04:18 1009

原创 Flutter InheritedWidget 详解

是 Flutter数据向下传递的机制。它允许你把数据存储在 Widget 树的某个节点,树下的子组件可以直接获取这些数据,而不需要层层参数传递。Flutter 的 Provider、Bloc、Theme.of、MediaQuery.of都是基于实现的。Key?key,// 提供一个静态方法,方便子树获取数据// 当 counter 改变时,是否通知子 Widget 重新 build@override= counter;是数据共享的基石,可以避免参数层层传递。适合做。

2025-08-22 16:26:31 497

原创 iOS 正式包签名指南

iOS 正式包签名(Release 包签名)是 App 能够在 App Store 上架 或通过 Ad Hoc/TestFlight 分发的关键。它和调试签名(Development)有很大区别。在苹果体系里,签名用来保证 App 的合法性和设备的可执行性。主要涉及三样东西:证书 (Certificate) 用 Apple Developer 标识你是合法开发者账号申请的数字证书( / 文件)App ID 每个 App 的唯一标识(和 匹配

2025-08-18 14:31:10 668

原创 Flutter 布局控件使用详解

分类常用控件单个控件水平/垂直叠加布局页面结构滚动适配。

2025-08-07 15:15:21 528

原创 Flutter 多平台项目开发指南

目标推荐方案跨平台开发使用 Flutter 多平台项目结构快速适配利用平台判断拆分逻辑插件兼容性优先选支持 Web/Desktop 的插件UI 兼容性使用响应式布局应对不同尺寸与 DPI如需更多模板、插件推荐或平台适配方案,可查阅Flutter 官方文档。

2025-06-26 17:10:35 1497

原创 Flutter 与 Android 原生布局组件对照表(完整版)

Flutter 更强调组合式声明性布局,Android 更偏向静态 XML。Flutter 的是最接近的实现方式。灵活使用AlignExpandedFlexible可以覆盖大部分 Android 布局需求。

2025-05-28 19:48:20 833

原创 Android Studio 开发环境兼容性检索(AGP / Gradle / Kotlin / JDK)

更新时间:2025年5月AGPGradleKGPJDK。

2025-05-23 18:18:37 2092

原创 Jetpack Compose 常用组件列表

2025-04-27 17:23:27 667

原创 Flutter 与原生 Android/iOS 通信交互方式

目的通道类型Flutter 调原生方法原生通知 Flutter原生持续事件通知 FlutterFlutter 与原生双向消息交换。

2025-04-17 11:41:40 1026

原创 Git 本地常见快捷操作

Git 本地常见快捷操作

2025-03-14 18:52:10 369

原创 Flutter 常用组件大全

Flutter 提供了丰富的组件来构建 UI,以下是常见的组件,按。如果你需要更详细的示例代码,可以告诉我你的具体需求!

2025-03-13 12:17:04 965

转载 Android性能优化之启动加速35%

随着项目版本的迭代,App 的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关。下面小编就从应用的启动优化开始,根据实际案例,打造闪电般的 App 启动速度。一、前言。

2022-09-11 18:17:59 936

转载 Android adb &Linux文件操作指令

Android adb &Linux文件操作指令1.创建文件夹命令:mkdir 文件夹名 例:mkdir demo功能说明:建立目录语  法:mkdir [-p][--help][--version][-m <目录属性>][目录名称]补充说明:mkdir可建立目录并同时设置目录的权限。参  数:-m<目录属性>或–mode<目录属性> 建立目录时同时设置目录的权限。-p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层

2021-07-01 16:01:07 907

原创 内存泄漏-思维导图总结

内存泄漏

2021-03-23 16:56:16 385

原创 Android应用性能指标

1.布局复杂度描述:布局复杂会导致布局需要更长的时间,从而导致进入应用慢、页面切换慢;工具:hierarchyviewer2.耗电量描述:耗电量大会导致机器发热、缩短机器的有效使用时长;工具:Android开发者模式中的电量统计;3.内存描述:内存消耗大会导致频繁GC,GC时会暂停其它工作,导致页面卡顿;内存泄露会导致剩余可用内存越来越小;内存不足会导致应用异常;工具:Android Studio—Memory/CPU/GPU,DDMS—MAT,Leakcanay4.网络:

2021-03-23 16:37:41 792

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除