- 博客(21)
- 收藏
- 关注
原创 android10 wms源码梳理-1
它运行在系统进程中,协调应用程序和系统之间的窗口操作,如添加、更新、和删除窗口。Window 类提供了一系列接口,允许开发者或子类定制窗口行为,例如 setContentView() 设置内容视图,setTitle() 设置窗口标题,addFlags() 添加窗口标志等。Sub-Window: 这是附属于主窗口的子窗口,例如对话框(Dialog)、弹出窗口(PopupWindow)等。Window 是UI系统的一个重要概念,它是一个抽象的概念,表示一个能够包含UI元素的区域,
2024-08-30 15:13:15
238
原创 android10 SystemUI源码梳理-1
/DragDownHelper->是一个用于处理用户向下拖动手势的辅助类。但位于 system_server 进程之外(frameworks/base/packages/SystemUI)//指向另一个实体类_com.android.systemui.statusbar.phone.StatusBar。//mBarService 是一个接口文件aidl。//启动其他配套的service。//statusBar高度更新。//通知 windowManager。//开始构建状态栏视图。
2024-08-23 15:24:41
345
原创 鸿蒙app学习-1
而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。实现对Ability的运行及生命周期进行统一的调度和管理,应用进程能够支撑多个Ability,Ability具有跨应用进程间和同一进程内调用的能力。框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。从上图可以看出,类Web开发范式与声明式开发范式的UI后端引擎和语言运行时是共用的,其中,UI后端引擎实现了ArkUI框架的六种基本能力。
2023-12-07 11:42:48
1316
1
原创 ubuntu22 代理设置
22及以上的系统默认配置的是python3.10 版本 electron-ssr 的软件 用python3.10下的版本编写。这时候需要额外安装3.10以下的版本。注意系统的3.10 版本不能删除, 删除了会导致系统终端有问题。sudo add-apt-repository ppa:deadsnakes/ppa 提示按回车。3.10移除了部分api 导致 electron-ssr 运行时候会报错。验证 python3.9 --version。提示python 未安装。可不用安装 单纯记录。
2023-11-03 18:15:21
694
原创 flutter 状态管理ChangeNotifier 源码分析-3
/如果一个监听器被添加了两次,并且在一次迭代中被移除了一次 它仍然会被再次调用 无法确定是哪个监听器被移除,因为它们是相同的。//固定长度通知集合 使用 [VoidCallback] 通知的 API。//它被删除的次数与注册的次数一样多,然后它将不再被调用。//出于性能原因,优化侦听器的列表长度。ChangeNotifier 源码。//开始回调通知到当前元素从重建。//在分析1的时候已经添加。//判断是否还有监听。//开始通知 可能多个地方调。//开始优化列表长度。
2022-08-23 10:39:44
673
1
原创 flutter 状态管理Provider.of<T>(context) 源码分析-2
/获取与给定类型`T`最近的小部件对应的元素,必须是具体的 [InheritedWidget] 子类的类型。如果没有找到这样的元素,则返回 null。//获取_InheritedProviderScopeElement元素。//_inheritedWidgets 会在 InheritedWidget的时候初始化。//_inheritedWidgets是map说明同一个类型只能存一个,并且它是共享的。//说明没有依赖关系。
2022-08-17 17:46:13
787
原创 flutter 生命周期源码解析
状态对象具有以下生命周期:分段理解各个生命周期生命周期1- createState分析源码生命周期2- 开始State对象与BuildContext相关联在上一步的构造方法中可以看到已经 state 和element 关联起来了那是怎么关联BuildContext 的 看state 源码 找到 BuildContext 对象生命周期3- 调用initState在 ComponentElement源码中 可以看到...........................
2022-06-23 10:15:42
670
原创 flutter 状态管理ChangeNotifierProvider源码分析-1
关联的组件概念changeNotifier 的使用文档Simple app state management | Flutter重要的是 notifyListeners 来通知先分析ChangeNotifier 源码
2022-06-21 15:49:32
428
原创 android 内存优化
在说明内存优化前,先用工具来说明android 应用的内存分布上面是一个默认的android项目里面很清楚的描述了应用内存的各种占比Java:从 Java 或 Kotlin 代码分配的对象的内存。 Native:从 C 或 C++ 代码分配的对象的内存。 Graphics:图形缓冲区队列为向屏幕显示像素(包括 GL 表面、GL 纹理等等)所使用的内存。(请注意,这是与 CPU 共享的内存,不是 GPU 专用内存。) Stack:您的应用中的原生堆栈和 J
2022-05-19 17:06:39
1075
原创 flutter Navigation 源码分析
文档描述Flutter 有一个命令式路由机制,Navigatorwidget,和一个更惯用的声明式路由机制(类似于用于 widget 的 build 方法),Routerwidget。这两个系统可以一起使用(实际上,声明式系统是使用命令式系统构建的)。..................
2022-05-18 16:34:50
225
原创 flutter dio Https证书校验和certificate_pinning源码解析
在dio 里面有一个http_certificate_pinning 插件, 用来配置固定证书。证书的的检查 来源于https 连接, https 比http 多了一个 安全机制的校验,在http 连接时候就是以前老说的几次握手之类的, https 在此之前 会先去...
2022-05-16 15:27:40
3620
原创 flutter dio 源码解析2
Future<Response<T>> _dispatchRequest<T>(RequestOptions reqOpt) async { var cancelToken = reqOpt.cancelToken; ResponseBody responseBody; try { //转换流 var stream = await _transformData(reqOpt); responseBody = await http...
2022-05-10 14:08:47
691
原创 flutter package 发布记录
export http_proxy=http://127.0.0.1:1081;export https_proxy=http://127.0.0.1:1081;在终端必须翻墙 一般使用ss翻墙前和翻墙后运行 curl google.com 确认是否翻墙成功如果用了国内镜像,运行unset FLUTTER_STORAGE_BASE_URL;unset PUB_HOSTED_URL 屏蔽掉镜像flutter packages pub publish --dry-run 看是否有问题.
2022-05-06 16:00:53
67
原创 flutter dio 组件源码解析1
dio 使用方法看https://github.com/flutterchina/dio记录下dio 配套组件dio_cookie_manager 管理cookie的dio_http2_adapter http2适配器(比如用来忽略所有坏的证书等等)dio_smart_retry 重试机制http_certificate_pinning 固定证书,用来做app端证书校验(避免被轻易抓包)curl_logger_dio_interceptor curl生成器,...
2022-05-05 15:17:04
957
原创 flutter 绘制源码解析
@protectedvoid drawFrame() {//看上一章节 pipelineOwner.flushLayout();//开始合成 pipelineOwner.flushCompositingBits();//开始绘制 pipelineOwner.flushPaint(); if (sendFramesToEngine) { renderView.compositeFrame(); // this sends the bits to the GPU pip.
2022-04-14 17:17:31
1617
原创 flutter widget layout测量源码解析
frame 的几个阶段。3. 构建阶段:小部件树中的所有脏[元素]都是重建4. 布局阶段:系统中所有脏的[RenderObject]都被放置out5. 合成位元阶段:任何脏位元上的合成位元6. 绘制阶段:系统中所有脏的[RenderObject]都是重新喷漆。这将生成[Layer]树7. 合成阶段:图层树变成[场景]并 发送到GPU。布局在 3 4阶段。@overridevoid drawFrame() { ...省略 try { if (renderVi
2022-03-30 16:24:33
780
原创 flutter Widget、Element和RenderObject 树的插入源码分析
Widget是 用户界面部分的不可变描述,所以一旦实例化,Widget的内部属性就无法改变widget 源码中@immutable 表示不可变@immutableabstract class Widget extends DiagnosticableTree {...}Element在树中特定位置的 Widget 实例化。它是管理 UI 更新和更改的树的可变部分。您可以将其视为管理小部件的生命周期。每个元素都包含对 Widget 和 Render Object 的引用。RenderO
2022-03-25 15:50:27
2175
原创 flutter (笔记) 动画学习
首先flutter 程序中包含两种动画 代码动画,绘图动画代码动画是以小部件为中心,它们倾向于增强特定现有小部件的外观或过渡,而不是单独充当独立的小部件。绘图的动画 是从无到有画出来的。它们通常是独立,如游戏角色,或者涉及纯粹用代码表达具有挑战性的转换。而我们平常用的动画都是代码动画, 绘制动画需要其他资源。Flutter 代码的动画有两种风格 隐式动画和显式动画隐式动画依赖于简单地为一些小部件属性设置一个新值,Flutter 负责将其从当前值设置为新值。这些小部件易于使用且功能强大(比
2022-03-17 18:32:52
2076
原创 flutter 事件分发源码解析2 dispatchEvent
@override // from HitTestDispatcher@pragma('vm:notify-debugger-on-exception')void dispatchEvent(PointerEvent event, HitTestResult? hitTestResult) { assert(!locked); // No hit test information implies that this is a [PointerHoverEvent], // [Pointer.
2022-03-15 10:56:01
1653
原创 flutter TextBotton onPressed事件注册到render源码分析
//onPressed 传递给父类 ButtonStyleButtonconst ButtonStyleButton({ Key? key, required this.onPressed, ......省略// build() 传递给. InkWellWidget build(BuildContext context) {.....省略final Widget result = ConstrainedBox( constraints: effective.
2022-03-11 18:37:39
2303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人