当前位置:首页>鸿蒙APP>鸿蒙开发中的所有生命周期详解

鸿蒙开发中的所有生命周期详解

  • 2026-08-07 06:22:26
鸿蒙开发中的所有生命周期详解

本文深入解析鸿蒙Stage模型下从应用进程到UI组件的全生命周期体系,涵盖UIAbility、WindowStage、AbilityStage、页面和组件等各个层级。全文图文并茂,附完整生命周期管理工具类封装代码与使用步骤。

引言:为什么理解生命周期至关重要

在鸿蒙应用开发中,生命周期是系统调度应用组件的核心机制。无论是应用启动、前后台切换,还是页面跳转、组件销毁,系统都会通过一系列生命周期回调通知开发者。正确理解和运用这些回调,是保证应用稳定性、优化性能和提升用户体验的关键。

鸿蒙的生命周期体系呈现多层次结构,涵盖从应用启动到销毁的完整流程,各层级生命周期既独立又相互关联。下图展示了鸿蒙生命周期的整体架构:

UIAbility生命周期(应用功能单元级)

UIAbility是鸿蒙Stage模型中包含UI的应用组件,主要用于与用户交互。每个UIAbility实例会在其生命周期的不同状态之间转换,核心生命周期包括 Create、Foreground、Background、Destroy 四个状态。

生命周期状态详解

两种启动场景的生命周期流程

场景一:冷启动(首次启动)

当用户首次启动一个UIAbility时,系统依次触发:

onCreate() → onWindowStageCreate() → onForeground()

场景二:热启动(从后台回到前台)

当UIAbility实例已存在,从后台切回前台时:

onNewWant() → onForeground()

⚠️ 关键注意:onWindowStageCreate() 不是每次进入前台都会执行的回调。它仅在UIAbility实例创建后执行一次。因此,不适合在onWindowStageCreate()中做每次前台恢复都需要执行的数据刷新操作——应改用onForeground()或页面级生命周期。

完整代码示例

// EntryAbility.etsimport { AbilityConstantUIAbilityWant } from '@kit.AbilityKit';import { hilog } from '@kit.PerformanceAnalysisKit';export default class EntryAbility extends UIAbility {  // 1. 首次创建时触发(仅一次)  onCreate(wantWantlaunchParamAbilityConstant.LaunchParam): void {    hilog.info(0x0000'testTag''UIAbility onCreate');    // 执行全局初始化:数据库、网络请求框架、全局配置等  }  // 2. WindowStage创建完成后触发(仅一次)  onWindowStageCreate(windowStagewindow.WindowStage): void {    hilog.info(0x0000'testTag''UIAbility onWindowStageCreate');    // 加载主页面    windowStage.loadContent('pages/Index'(err, data) => {      if (err.code) {        hilog.error(0x0000'testTag''Failed to load content');        return;      }    });    // 订阅窗口事件    windowStage.on('windowStageEvent'(data) => {      // 处理窗口获焦/失焦、可见/不可见等事件    });  }  // 3. 切换到前台时触发(每次)  onForeground(): void {    hilog.info(0x0000'testTag''UIAbility onForeground');    // 刷新UI数据、恢复动画、重新连接网络等  }  // 4. 切换到后台时触发(每次)  onBackground(): void {    hilog.info(0x0000'testTag''UIAbility onBackground');    // 暂停动画、释放临时资源、保存状态等  }  // 5. WindowStage销毁时触发(仅一次)  onWindowStageDestroy(): void {    hilog.info(0x0000'testTag''UIAbility onWindowStageDestroy');    // 释放窗口相关资源  }  // 6. 实例销毁时触发(仅一次)  onDestroy(): void {    hilog.info(0x0000'testTag''UIAbility onDestroy');    // 保存最终数据、释放所有资源  }  // 7. 热启动时触发(已存在实例再次被启动)  onNewWant(wantWantlaunchParamAbilityConstant.LaunchParam): void {    hilog.info(0x0000'testTag''UIAbility onNewWant');    // 处理新的跳转参数  }}

WindowStage生命周期(窗口级)

在Stage模型下,每个UIAbility对应一个WindowStage,每个WindowStage对应一个应用主窗口。UIAbility通过WindowStage持有一个主窗口,该主窗口为ArkUI提供绘制区域。

主窗口生命周期状态

主窗口生命周期包括四种状态:

订阅窗口事件

onWindowStageCreate()中可通过windowStage.on('windowStageEvent')订阅窗口事件:

onWindowStageCreate(windowStagewindow.WindowStage): void {  // 订阅窗口阶段事件  windowStage.on('windowStageEvent'(eventData: window.WindowStageEventType) => {    switch (eventData) {      case window.WindowStageEventType.SHOWN:        console.info('窗口已显示');        break;      case window.WindowStageEventType.RESUMED:        console.info('窗口已恢复(可交互)');        break;      case window.WindowStageEventType.PAUSED:        console.info('窗口已暂停(不可交互)');        break;      case window.WindowStageEventType.HIDDEN:        console.info('窗口已隐藏');        break;    }  });}

AbilityStage生命周期(模块级)

AbilityStage是鸿蒙Stage模型中模块级别的组件容器。在开始加载对应Module的第一个UIAbility实例之前,系统会先创建AbilityStage实例。

AbilityStage核心生命周期回调

代码示例

// MyAbilityStage.etsimport { AbilityStageWant } from '@kit.AbilityKit';export default class MyAbilityStage extends AbilityStage {  // 在加载第一个UIAbility之前执行  onCreate(): void {    console.info('AbilityStage onCreate');    // 执行模块级的初始化:如依赖注入、全局单例创建等  }  onAcceptWant(wantWant): string {    console.info('AbilityStage onAcceptWant');    // 返回指定的UIAbility实例标识    return 'specifiedAbility';  }  onConfigurationUpdated(configConfiguration): void {    console.info('AbilityStage onConfigurationUpdated');    // 处理系统配置变化(如语言、主题切换)  }  onMemoryLevel(levelAbilityConstant.MemoryLevel): void {    console.info(`AbilityStage onMemoryLevel: ${level}`);    // 内存不足时释放缓存资源  }}

ExtensionAbility生命周期(扩展组件级)

ExtensionAbility是鸿蒙中面向特定场景的应用组件,如服务卡片、输入法等。开发者不直接从ExtensionAbility派生,而是通过其派生类实现特定场景功能。

常见的ExtensionAbility派生类包括:

  • FormExtensionAbility:卡片服务

  • UIExtensionAbility:带界面的扩展组件

  • InputMethodExtensionAbility:输入法

  • WorkSchedulerExtensionAbility:工作调度

以FormExtensionAbility(卡片)为例,其生命周期包括:

页面生命周期(页面级)

在鸿蒙ArkUI中,页面是指被@Entry装饰器修饰的组件,它是应用的入口组件,一个页面有且仅能有一个@Entry

页面生命周期回调

页面在被@Entry修饰的基础上,额外拥有以下三大专属生命周期:

代码示例

@Entry@Componentstruct HomePage {  @State messagestring = '首页';  // 页面每次显示时触发  onPageShow(): void {    console.info('页面显示');    // 刷新实时数据、验证用户会话等  }  // 页面每次隐藏时触发  onPageHide(): void {    console.info('页面隐藏');    // 暂停数据推送、保存未完成表单等  }  // 用户点击返回时触发  onBackPress(): boolean {    console.info('用户点击返回');    // return true 表示拦截返回,false 表示默认路由返回    return false;  }  build() {    Column() {      Text(this.message).fontSize(24)    }  }}

组件生命周期(组件级)

自定义组件是指被@Component装饰器修饰的UI单元,它是UI的最小单元。所有@Component修饰的组件都拥有以下生命周期:

组件生命周期回调

生命周期流程图

代码示例

@Componentstruct ChildComponent {  @State countnumber = 0;  // 组件创建后、build前执行(仅一次)  aboutToAppear(): void {    console.info('子组件即将出现');    // 初始化数据、启动定时器等  }  // build执行完毕后执行  onDidBuild(): void {    console.info('子组件构建完成');    // 埋点上报、非UI操作等  }  // 组件销毁前执行  aboutToDisappear(): void {    console.info('子组件即将销毁');    // ⚠️ 禁止在此修改状态变量(特别是@Link)[reference:44]    // 取消定时器、解绑事件监听  }  build() {    Column() {      Text(`计数: ${this.count}`)      Button('增加').onClick(() => this.count++)    }  }}

生命周期管理工具类封装

下面提供一个完整的生命周期管理工具类,用于统一监听和管理UIAbility、页面、组件的生命周期事件。

工具类代码

// LifecycleManager.etsimport { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';import { hilog } from '@kit.PerformanceAnalysisKit';// 生命周期事件类型export enum LifecycleEvent {  // UIAbility级  ABILITY_CREATE = 'ABILITY_CREATE',  ABILITY_FOREGROUND = 'ABILITY_FOREGROUND',  ABILITY_BACKGROUND = 'ABILITY_BACKGROUND',  ABILITY_DESTROY = 'ABILITY_DESTROY',  WINDOW_STAGE_CREATE = 'WINDOW_STAGE_CREATE',  WINDOW_STAGE_DESTROY = 'WINDOW_STAGE_DESTROY',  NEW_WANT = 'NEW_WANT',  // 页面级  PAGE_SHOW = 'PAGE_SHOW',  PAGE_HIDE = 'PAGE_HIDE',  PAGE_BACK_PRESS = 'PAGE_BACK_PRESS',  // 组件级  COMPONENT_APPEAR = 'COMPONENT_APPEAR',  COMPONENT_DID_BUILD = 'COMPONENT_DID_BUILD',  COMPONENT_DISAPPEAR = 'COMPONENT_DISAPPEAR',}// 生命周期事件监听器类型export type LifecycleListener = (event: LifecycleEvent, data?: object) => void;// 生命周期管理器(单例)export class LifecycleManager {  private static instance: LifecycleManager;  private listeners: Map<LifecycleEvent, LifecycleListener[]> = new Map();  private constructor() {}  public static getInstance(): LifecycleManager {    if (!LifecycleManager.instance) {      LifecycleManager.instance = new LifecycleManager();    }    return LifecycleManager.instance;  }  // 注册监听器  public on(event: LifecycleEvent, listener: LifecycleListener): void {    if (!this.listeners.has(event)) {      this.listeners.set(event, []);    }    this.listeners.get(event)!.push(listener);  }  // 移除监听器  public off(event: LifecycleEvent, listener: LifecycleListener): void {    const listeners = this.listeners.get(event);    if (listeners) {      const index = listeners.indexOf(listener);      if (index !== -1) {        listeners.splice(index, 1);      }    }  }  // 触发事件  public emit(event: LifecycleEvent, data?: object): void {    const listeners = this.listeners.get(event);    if (listeners) {      listeners.forEach(listener => {        try {          listener(event, data);        } catch (error) {          hilog.error(0x0000'LifecycleManager', `监听器执行异常: ${error}`);        }      });    }  }}// 生命周期感知基类(UIAbility扩展)export abstract class LifecycleAwareAbility extends UIAbility {  private lifecycleManager = LifecycleManager.getInstance();  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {    this.lifecycleManager.emit(LifecycleEvent.ABILITY_CREATE, { want, launchParam });    this.onAbilityCreate(want, launchParam);  }  onWindowStageCreate(windowStage: window.WindowStage): void {    this.lifecycleManager.emit(LifecycleEvent.WINDOW_STAGE_CREATE, { windowStage });    this.onWindowStageReady(windowStage);  }  onForeground(): void {    this.lifecycleManager.emit(LifecycleEvent.ABILITY_FOREGROUND);    this.onAbilityForeground();  }  onBackground(): void {    this.lifecycleManager.emit(LifecycleEvent.ABILITY_BACKGROUND);    this.onAbilityBackground();  }  onWindowStageDestroy(): void {    this.lifecycleManager.emit(LifecycleEvent.WINDOW_STAGE_DESTROY);    this.onWindowStageDestroyed();  }  onDestroy(): void {    this.lifecycleManager.emit(LifecycleEvent.ABILITY_DESTROY);    this.onAbilityDestroy();  }  onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {    this.lifecycleManager.emit(LifecycleEvent.NEW_WANT, { want, launchParam });    this.onNewWantReceived(want, launchParam);  }  // 子类需要实现的方法  protected abstract onAbilityCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void;  protected abstract onWindowStageReady(windowStage: window.WindowStage): void;  protected abstract onAbilityForeground(): void;  protected abstract onAbilityBackground(): void;  protected abstract onWindowStageDestroyed(): void;  protected abstract onAbilityDestroy(): void;  protected abstract onNewWantReceived(want: Want, launchParam: AbilityConstant.LaunchParam): void;}// 页面生命周期混入(供页面组件使用)export function withPageLifecycle(component: any): void {  const originalAboutToAppear = component.aboutToAppear;  const originalOnPageShow = component.onPageShow;  const originalOnPageHide = component.onPageHide;  const originalAboutToDisappear = component.aboutToDisappear;  const manager = LifecycleManager.getInstance();  component.aboutToAppear = function(...args: any[]) {    manager.emit(LifecycleEvent.COMPONENT_APPEAR, { component: this });    if (originalAboutToAppear) {      originalAboutToAppear.apply(this, args);    }  };  component.onPageShow = function(...args: any[]) {    manager.emit(LifecycleEvent.PAGE_SHOW, { component: this });    if (originalOnPageShow) {      originalOnPageShow.apply(this, args);    }  };  component.onPageHide = function(...args: any[]) {    manager.emit(LifecycleEvent.PAGE_HIDE, { component: this });    if (originalOnPageHide) {      originalOnPageHide.apply(this, args);    }  };  component.aboutToDisappear = function(...args: any[]) {    manager.emit(LifecycleEvent.COMPONENT_DISAPPEAR, { component: this });    if (originalAboutToDisappear) {      originalAboutToDisappear.apply(this, args);    }  };}

使用步骤

步骤一:在Ability中使用生命周期感知基类

// EntryAbility.etsimport { LifecycleAwareAbility } from '../utils/LifecycleManager';export default class EntryAbility extends LifecycleAwareAbility {  protectedonAbilityCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {    console.info('自定义创建逻辑');  }  protectedonWindowStageReady(windowStage: window.WindowStage): void {    windowStage.loadContent('pages/Index');  }  protectedonAbilityForeground(): void {    console.info('应用进入前台');  }  protectedonAbilityBackground(): void {    console.info('应用进入后台');  }  protectedonWindowStageDestroyed(): void {    console.info('窗口销毁');  }  protectedonAbilityDestroy(): void {    console.info('应用销毁');  }  protectedonNewWantReceived(want: Want, launchParam: AbilityConstant.LaunchParam): void {    console.info('热启动收到新Want');  }}

步骤二:在页面中注册生命周期监听

// HomePage.etsimport { LifecycleManagerLifecycleEvent } from '../utils/LifecycleManager';@Entry@Componentstruct HomePage {  aboutToAppear(): void {    // 注册生命周期监听    LifecycleManager.getInstance().on(LifecycleEvent.PAGE_SHOW(event, data) => {      console.info('通过管理器监听到页面显示');      // 执行数据刷新等操作    });  }  aboutToDisappear(): void {    // 清理监听器(根据需要)  }  build() {    Column() {      Text('首页')    }  }}

步骤三:使用混入函数(可选)

// 在页面组件定义后调用import { withPageLifecycle } from '../utils/LifecycleManager';@Entry@Componentstruct MyPage {  // ... 组件定义}// 混入生命周期管理withPageLifecycle(MyPage);

生命周期最佳实践与避坑指南

核心原则

  1. 轻量级操作:生命周期回调在应用主线程执行,耗时任务应采用异步处理或子线程执行

  2. 资源管理:在onCreate()/aboutToAppear()中申请资源,在对应的销毁回调中释放

  3. 状态保存:在onBackground()/onPageHide()中保存用户数据

十大避坑要点

总结

鸿蒙的生命周期体系可以归纳为五个层级:

理解各层级生命周期的触发时机和调用顺序,是构建高质量鸿蒙应用的基础。建议开发者在实际项目中:

  • 使用生命周期管理工具类统一管理事件

  • 在正确的生命周期回调中执行对应的业务逻辑

  • 注意冷启动与热启动的生命周期差异

  • 及时释放资源,避免内存泄漏

AI时代,技术岗位正在加速升级,掌握AI技术能力和权威认证,将成为未来职业发展的重要竞争力。如果你正在规划AI方向学习路线,想了解HCIA-AI认证要求、学习内容及课程优惠,这个活动建议你一定要参加👇

最新文章

随机文章

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