鸿蒙面试题

371 阅读5分钟

本文参考链接:juejin.cn/post/734267…

UIAbility的生命周期

Create(创建)

onWindowStageCreate(窗口创建)

Foreground(前台展示)

Background(后台隐藏)

onWindowStageDestroy(窗口销毁)

Destroy(销毁)

UIAbility的启动模式

Singleton(单实例模式)

Multiton(多实例模式)

Standard(标准实例模式)

Specified(指定实例模式)

Stage模型

image.png

module模块类型分为两种:entry(主入口ui基础功能) 和 feature(拓展,桌面卡片)

ablitity分为两种:UIAblitity(显示ui)和ExtensionAblitity(例如桌面卡片)

样式复用

@Styles方法 (不支持传参) @Extend方法 (支持传参)

UI复用

@Builder (支持传参) @BuilderParam(插槽)

管理组件状态(组件与组件)

@State @Prop(单向) @Link(双向)

@Observed和@ObjectLink (监听数组)

@Provide和@Consume (跨组件双向传递)

应用级状态管理(缓存)

  • localStorage:页面所有组件共享
    • let storage = new localStorage({count:0}):创建
    • @Entry(storage):传入页面实例
    • @localStorageProp(单向)
    • @localStorageLink('count') (双向)
  • AppStorage:整个应用共享
    • AppStorage.setOrCreate('count':0):初始化
    • @Entry(storage):传入页面实例
    • @storageProp(单向)
    • @storageLink('count') (双向
  • persistentStorage:整个应用共享 + 持久化存储 - persistentStorage.persistentProp('count':0):初始化 - @Entry(storage):传入页面实例 - @storageProp(单向) - @storageLink('count') (双向)

如何调试和优化应用的性能

  • 性能分析:首先,使用鸿蒙OS提供的性能分析工具来评估应用的性能。这些工具可以帮助你识别性能瓶颈,如CPU使用率、内存消耗、渲染速度等。

  • 代码优化

    • 减少不必要的计算:避免在UI线程中进行复杂的计算,这样可以防止界面卡顿。
    • 使用异步编程:对于可能阻塞主线程的操作,如网络请求、文件读写等,使用异步编程模式。
    • 优化数据结构和算法:选择高效的数据结构和算法,以减少内存使用和计算时间。
  • 内存管理

    • 避免内存泄漏:确保不再使用的资源被正确释放。
    • 合理使用缓存:适当使用缓存可以提高性能,但要避免缓存过大导致内存不足。
    • 优化图片资源:压缩图片大小,减少内存占用。
  • 网络优化

    • 减少网络请求:合并多个请求,减少网络延迟。
    • 使用缓存策略:对于频繁请求的数据,使用缓存策略来减少网络请求。
  • 数据库优化

    • 合理使用索引:为数据库表添加合适的索引,提高查询效率。
    • 避免频繁读写:批量操作可以减少数据库操作的次数。
  • 界面优化

    • 减少界面层级:简化界面布局,减少不必要的视图层级。
    • 使用高效的绘图API:选择性能更好的绘图API来渲染界面。
  • 日志和监控

    • 添加日志记录:在关键代码路径中添加日志记录,以便追踪性能问题。
    • 使用监控工具:使用鸿蒙OS提供的监控工具来实时监控应用的性能。
  • 用户反馈:积极收集用户反馈,了解应用在实际使用中的性能表现,并根据反馈进行针对性的优化。

各种配置文件的作用

app.json5

  • 应用的全局配置信息,包含应用的Bundle名称、开发厂商、版本号等基本信息。
  • 特定设备类型的配置信息。

module.json5

  • Module的基本配置信息,包含Module名称、类型、描述、支持的设备类型等基本信息。
  • 应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。
  • 应用运行过程中所需的权限信息。

main_pages.json

  • 页面列表json,对应上面module.json5的pages字段。

oh-package.json5

  • 应用/服务支持通过ohpm来安装、共享、分发代码,管理项目的依赖关系。oh-package.json5格式遵循标准的ohpm规范。

build-profile.json5

  • 应用/服务构建配置文件。

后台任务类型

OpenHarmony标准系统支持规范内受约束的后台任务,包括短时任务、长时任务、延迟任务、代理提醒和能效资源。

页面和自定义组件生命周期

页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。 页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:

onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。

onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。

onBackPress:当用户点击返回按钮时触发。

组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:

aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。

aboutToDisappear:在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

网络请求

  1. 在模块src-main-module.json5里面配置requestPermissions 权限为ohos.permissions.INTERNET

  2. 使用ohpm管理安装第三方库axios

  3. 之后导入使用就行了