当前位置:首页>Linux>Linux系统框架(三)Android显示体系链路解析:从View到Display的流转

Linux系统框架(三)Android显示体系链路解析:从View到Display的流转

  • 2026-02-05 14:40:05
Linux系统框架(三)Android显示体系链路解析:从View到Display的流转

本篇是Android系统的第三篇,在上一篇介绍system service框架的时候,我们拿activity做例子介绍了UI是如何从最初用户的app到最终合成到显示的frame buffer,但我们并没有从原理角度串联起对几个framework组件的介绍:ams、wms、dms和surface flinger。比如显示与图层的关系、图层与窗口的关系、窗口与activity的关系、以及activity如何组织相关的UI组件来实现跟用户的交互,以及在这些关系之间这几个framework组件各起什么作用。

本文就从上面的问题出发,基于「什么是view?应用程序是如何通过ViewGroup实现应用页面的布局和交互--->view与activity之间的关系?activity实现页面的生命周期管理并参与系统的资源竞争,view通过ViewRootImpl完成activity ui组件的整体布局 ---> ams基于activity这一颗粒度管理app生命周期管理、进程调度、资源分配和权限管控 ---> activity和Windows之间的关系?Windows参与整个系统的布局和可见性,而应用一个或多个activity则参与充实Windows的内容。---> wms基于windows来实现应用程序窗口创建、布局、绘制、层级管理、事件分发,并最终完成对整个系统窗口的布局管理,从而将不同的应用渲染至一个surface上。---> Android系统一般有哪些surface 图层?view内容是如何通过ViewRootImpl最终渲染到surface上的?一些特殊的view,如视频和3D渲染,如何通过SurfaceView/TextureView直接实现在相应的surface上绘制 --->系统的不同 surface如何在surface flinger管理下最终渲染到一个显示器上的?vsync信号是如何同步管理起整个显示框架」这一纲领,串联起view--activity--windows--surface--display的整体联系,最终完成“应用UI设计→系统服务调度→硬件显示输出”。

一、什么是View?应用如何通过ViewGroup实现页面布局与交互

1. View的本质:UI的最小渲染与交互单元

View是Android中所有可视化元素的基类,是屏幕上能被用户看到并交互的“最小原子”,核心职责分为两部分:

  • • 渲染职责:通过measure()(测量自身尺寸)、layout()(确定在父容器中的位置)、draw()(将像素绘制到缓冲区)三个核心流程,完成自身视觉呈现(如TextView绘制文字、ImageView绘制图片);
  • • 交互职责:通过dispatchTouchEvent()(事件分发)、onTouchEvent()(事件处理)接收并响应用户的触摸、点击、滑动等输入事件,是用户与APP交互的“直接触点”。

2. ViewGroup:View的“布局管理者”

ViewGroup是View的子类,作为“容器型View”,核心作用是管理子View的排列规则和层级,实现复杂页面的布局:

  • • 布局规则封装:不同ViewGroup对应不同布局逻辑(如LinearLayout线性排列、RelativeLayout相对定位、ConstraintLayout约束布局),本质是通过重写onMeasure()/onLayout(),递归完成所有子View的尺寸测量和位置确定;
  • • View树构建:一个Android页面的UI本质是一棵“View树”——根节点是DecorView(ViewGroup),下层包含标题栏、内容区(ContentView)等子ViewGroup,最终叶子节点是Button、TextView等普通View;
  • • 事件分发中转:用户触摸事件会先传递到ViewGroup,再由ViewGroup根据子View的位置、可见性等规则,分发到目标子View,实现精准的交互响应。

核心总结

  • • View是“UI原子”,负责自身渲染和交互;ViewGroup是“布局容器”,负责组织View树、制定布局规则;
  • • 应用通过嵌套ViewGroup和View,构建出任意复杂度的页面布局,通过View的事件回调实现用户交互。

二、View与Activity的关系:Activity管生命周期,ViewRootImpl管UI布局

1. Activity的核心定位:View的“生命周期总管”+“资源竞争参与者”

Activity是Android四大组件之一,并非直接参与UI绘制,而是承担两大核心角色:

  • • View的生命周期绑定者:Activity通过setContentView()加载布局文件(或动态创建View),将View树与自身生命周期绑定——Activity的onResume()触发View的首次绘制,onPause()暂停View的交互和绘制,onDestroy()递归销毁整个View树;
  • • 系统资源竞争参与者:Activity作为AMS管理的“最小资源单元”,会代表应用向系统申请CPU、内存等资源,AMS通过Activity的状态(前台/后台)决定应用进程的优先级,进而仲裁资源分配(如前台Activity的进程优先获取CPU资源)。

2. ViewRootImpl:连接View与系统服务的“桥梁”

View自身无法直接与系统服务通信,必须通过ViewRootImpl完成UI布局的最终落地:

  • • ViewRootImpl的创建时机:Activity的onResume()执行后,系统会为Activity的View树创建ViewRootImpl,它是View树的“隐形根节点”(不在View树结构中,但持有DecorView的引用);
  • • 核心作用

① 触发View树的measure()layout()draw()全流程,是UI绘制的“总开关”;

② 作为View与WMS的通信中介(通过Binder),向WMS上报View的尺寸、位置,接收WMS的布局指令;

③ 处理系统输入事件(如触摸、按键),将事件分发到View树的目标View。

核心总结

  • • Activity是View的“老板”:决定View的生死、为View争取系统资源;
  • • ViewRootImpl是View的“执行者”:承接Activity的指令,触发View布局绘制,对接系统服务;
  • • View是“干活的”:完成具体的渲染和交互,不关心生命周期和系统通信。

三、AMS:基于Activity管控App生命周期、进程调度与资源分配

AMS(ActivityManagerService)是System Server中最核心的服务,以Activity为基本颗粒度,实现对应用的全生命周期管控:

1. 核心职责

  • • Activity生命周期管控:通过ActivityStack/ATMS(Android 10+拆分)管理Activity任务栈,触发Activity的onCreate()/onResume()等生命周期回调,处理页面跳转、回退、多任务切换;
  • • 进程调度:根据Activity的启动需求,通过Zygote孵化应用进程;维护进程优先级(前台进程>可见进程>后台进程),触发低内存回收(LMK)杀死低优先级进程;
  • • 资源分配与权限管控:仲裁不同应用的资源竞争(如CPU/内存分配),校验Activity启动的权限(如后台启动Activity的限制),是应用与系统资源之间的“仲裁者”。

2. AMS与View/Activity的关联

AMS不直接接触View,仅通过管控Activity间接影响View:

  • • AMS通知Activity启动→Activity创建View树→ViewRootImpl触发View绘制;
  • • AMS将Activity标记为“后台状态”→系统降低应用进程优先级→View的绘制帧率降低(节省资源);
  • • AMS销毁Activity→Activity递归销毁View树→View释放资源。

核心总结

  • • AMS是“应用大管家”:只认Activity,不管View,通过管控Activity实现对应用的整体调度;
  • • AMS的决策(如进程优先级、Activity状态)会间接决定View的渲染资源和生命周期。

四、Activity与Window的关系:Window是UI载体,Activity填充内容

1. Window的本质:系统级的“UI展示容器”

Window是Android中承载所有可视化内容的抽象载体,是WMS管理的最小单元,核心特征:

  • • 每个Activity默认对应一个PhoneWindow(Window的子类),Activity的View树最终挂载在PhoneWindow的DecorView上;
  • • Window是“无实体的画布”:本身不可见,但定义了UI的显示区域、交互规则,是连接Activity与WMS的核心媒介;
  • • 一个应用可拥有多个Window:除了Activity的主Window,Dialog、Toast、悬浮窗等都会创建独立的Window。

2. Activity与Window的绑定逻辑

  • • DecorView是Window的“根View”:封装了标题栏、导航栏、内容区等系统级UI结构,Activity的View树仅占DecorView的“内容区”;
  • • Activity的核心作用是“填充Window内容”:Window由系统创建,Activity负责将View树挂载到Window上,让Window有“可显示的内容”。

核心总结

  • • Window是“系统级UI容器”,是WMS的管理对象;Activity是“内容填充者”,负责为Window提供View树;
  • • 关系类比:Window是“空房间”,Activity是“装修师傅”,View是“家具”——师傅把家具放进房间,房间的大小、位置由系统(WMS)决定。

五、WMS:基于Window实现系统窗口的全生命周期管理

WMS(WindowManagerService)是System Server中负责窗口管理的核心服务,以Window为基本颗粒度,实现对所有系统窗口的统一管控:

1. 核心职责

  • • Window生命周期管理:为每个Window创建WindowState对象,管理Window的创建、显示、隐藏、销毁,响应AMS的Window创建/销毁指令;
  • • 窗口层级管理:定义严格的窗口层级规则(从下到上):
    壁纸层 → 应用窗口层(Activity) → 子窗口层(Dialog) → 系统窗口层(状态栏/导航栏) → 悬浮窗层
  • • 布局计算:结合DMS提供的显示设备参数(屏幕分辨率、可用区域),计算每个Window的位置、大小,处理分屏、多窗口、悬浮窗的布局适配;
  • • 事件分发:接收InputManagerService(IMS)的触摸/按键事件,根据Window的位置、焦点状态,将事件精准分发给目标Window的ViewRootImpl;
  • • Surface申请:为每个Window向SurfaceFlinger申请Surface(绘图缓冲区),维护Window与Surface的绑定关系。

2. WMS与其他组件的关联

  • • 与AMS:接收AMS的Window创建指令,向AMS反馈Window的焦点/可见状态(如Window隐藏→AMS触发Activity.onPause);
  • • 与DMS:获取显示设备的配置(分辨率、刷新率),适配多屏显示的Window布局;
  • • 与SurfaceFlinger:传递Window的层级、位置信息,让SurfaceFlinger完成最终的图层合成。

核心总结

  • • WMS是“窗口总管理员”:管所有Window的位置、层级、交互,是Window与SurfaceFlinger之间的“中介”;
  • • WMS不关心Window内的View内容,只关心Window的整体属性(位置、大小、层级)。

六、Android的Surface图层体系:View如何渲染到Surface,特殊View的处理

1. Surface的本质:“绘图缓冲区”(生产者-消费者模型)

Surface是Android中用于绘制图像的内存缓冲区,核心特征:

  • • 采用“生产者-消费者”模型:应用(View)是“生产者”,向Surface写入绘制数据;SurfaceFlinger是“消费者”,从Surface读取数据进行合成;
  • • 每个Surface对应一块GraphicBuffer(基于Gralloc分配的显存),避免CPU与GPU之间的频繁数据拷贝,保证渲染性能。

2. 系统常见的Surface图层(按层级从下到上)

图层类型
对应Window/Surface来源
作用
壁纸层
壁纸服务的Window
显示桌面壁纸
应用窗口层
Activity的PhoneWindow
显示应用的核心UI
子窗口层
Dialog/Toast的Window
显示应用的弹窗/提示
系统窗口层
状态栏/导航栏/锁屏的Window
显示系统核心UI
悬浮窗层
悬浮窗/输入法的Window
显示顶层交互UI

3. 普通View渲染到Surface的流程

  • • 关键细节:View的绘制数据不会直接到屏幕,而是先写入Surface的显存缓冲区,SurfaceFlinger按需读取;
  • • ViewRootImpl是View与Surface的“写入中介”,负责将View树的绘制结果批量写入Surface。

4. 特殊View(SurfaceView/TextureView)的独立Surface处理

对于视频播放、3D渲染等高性能场景,普通View的共享Surface会成为性能瓶颈,因此Android设计了专用View:

  • • SurfaceView:申请独立的Surface(脱离Activity主Window的Surface),由WMS单独管理,视频数据直接写入该Surface,与GUI层Surface并行;
  • • TextureView:基于SurfaceTexture封装,将视频数据转为OpenGL纹理,融入普通View树(无独立Surface),支持对视频的裁剪、旋转等操作;
  • • 核心差异:SurfaceView有独立Layer,性能更高;TextureView无独立Layer,灵活性更强。

核心总结

  • • Surface是“绘图显存缓冲区”,是View绘制数据与SurfaceFlinger之间的“数据载体”;
  • • 普通View共享Activity主Window的Surface,特殊View拥有独立Surface,满足高性能渲染需求。

七、SurfaceFlinger管理Surface合成到Display,VSync同步整个显示框架

1. DMS:Display的“硬件管家”

DMS(DisplayManagerService)是显示设备的基础管理服务,核心作用:

  • • 管理物理/虚拟显示设备(主屏、外接显示器、投屏),维护显示参数(分辨率、刷新率、色域);
  • • 向WMS/SurfaceFlinger提供显示设备的硬件信息,是“显示硬件与系统服务的中介”。

2. SurfaceFlinger:图层合成的“最终执行者”

SurfaceFlinger是运行在独立进程的核心服务,负责将所有Surface合成为最终的屏幕图像:

核心流程

  • • 合成方式:优先使用HWC(硬件合成),由显示芯片直接合成图层,性能高、功耗低;复杂场景用GPU合成。

3. VSync信号:整个显示框架的“同步时钟”

VSync(垂直同步)信号由Display硬件生成(如60Hz屏幕每16.6ms一次),核心作用:

  • • 同步View绘制:Choreographer接收VSync信号后,触发ViewRootImpl的performTraversals()(measure/layout/draw),保证View绘制节奏与屏幕刷新率一致;
  • • 同步SurfaceFlinger合成:SurfaceFlinger在VSync信号到来时,统一合成所有Layer,避免“屏幕撕裂”;
  • • 核心价值:消除绘制与合成的异步性,保证画面流畅。

核心总结

  • • DMS管“显示硬件参数”,SurfaceFlinger管“图层合成”;
  • • VSync是“全局同步时钟”,让View绘制、SurfaceFlinger合成、屏幕显示保持节奏一致;
  • • FrameBuffer是“最终帧缓冲区”,合成后的图像写入此处,由Display硬件直接读取显示。

八、完整链路总结(View→Display)

用户操作→View接收交互事件→Activity处理业务逻辑→AMS管控Activity生命周期→Activity填充Window内容→WMS管理Window布局/层级→WMS为Window申请Surface→View绘制数据写入Surface→SurfaceFlinger合成所有Surface的Layer→SurfaceFlinger将合成图像写入FrameBuffer→Display硬件显示图像

各核心组件的关键角色

  1. 1. AMS:管控Activity生命周期、进程调度,是“应用资源的仲裁者”;
  2. 2. WMS:管控Window布局、层级、事件分发,是“窗口的管理者”;
  1. 3. DMS:管控显示设备参数,是“显示硬件的中介”;
  2. 4. SurfaceFlinger:管控图层合成、VSync同步,是“图像合成的最终执行者”;
  1. 5. Activity:View的生命周期总管,Window的内容填充者;
  2. 6. View:UI渲染与交互的最小单元,Surface的数据生产者;
  1. 7. Window:WMS的管理单元,Surface的载体;
  2. 8. Surface:View绘制数据的显存缓冲区,Layer的数据来源。

核心关键点回顾

  1. 1. 整个显示体系的核心逻辑是“分层解耦”:View管绘制、Activity管生命周期、Window管系统交互、Surface管数据载体、SurfaceFlinger管合成、Display管硬件输出;
  2. 2. AMS/WMS/DMS/SurfaceFlinger各司其职:AMS管应用、WMS管窗口、DMS管显示硬件、SurfaceFlinger管图像合成;
  1. 3. VSync信号是全局同步核心,保证绘制、合成、显示的节奏一致,是画面流畅的关键。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 23:40:56 HTTP/2.0 GET : https://f.mffb.com.cn/a/470705.html
  2. 运行时间 : 0.537526s [ 吞吐率:1.86req/s ] 内存消耗:4,613.67kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ffc284323eb6685bcf680af7488dcc01
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000598s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000724s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.100718s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.100781s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000963s ]
  6. SELECT * FROM `set` [ RunTime:0.082583s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000941s ]
  8. SELECT * FROM `article` WHERE `id` = 470705 LIMIT 1 [ RunTime:0.000659s ]
  9. UPDATE `article` SET `lasttime` = 1770478857 WHERE `id` = 470705 [ RunTime:0.036743s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.003043s ]
  11. SELECT * FROM `article` WHERE `id` < 470705 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002689s ]
  12. SELECT * FROM `article` WHERE `id` > 470705 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000605s ]
  13. SELECT * FROM `article` WHERE `id` < 470705 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008207s ]
  14. SELECT * FROM `article` WHERE `id` < 470705 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002285s ]
  15. SELECT * FROM `article` WHERE `id` < 470705 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.047748s ]
0.539245s