1.请讲解鸿蒙组件化思路
鸿蒙组件化思路主要体现在模块化、组件化和服务化。
- 鸿蒙系统通过模块化设计,将系统划分为多个独立的功能模块,每个模块负责特定的功能,提高了系统的可维护性和可扩展性。
- 组件化则是将功能模块进一步拆分为可复用的组件,这些组件可以跨应用、跨设备共享,提高了开发效率。
- 服务化则是通过微服务架构,将系统服务拆分为一系列独立的服务单元,每个服务单元提供特定的功能,通过服务间的协同工作实现复杂的业务逻辑。
2.鸿蒙实现音视频播放器开发UI部分+底层部分
在鸿蒙中实现音视频播放器的UI部分,可以利用鸿蒙提供的UI框架进行布局和界面元素的开发,如使用XML或ArkTS进行界面描述。底层部分则涉及音视频解码、渲染和播放控制等逻辑,通常需要使用鸿蒙提供的多媒体框架和API,如媒体播放服务、解码器接口等,实现音视频数据的处理和播放。
3.了解鸿蒙Napi吗?如果我需要编译第三方库如何链接?
鸿蒙Napi是鸿蒙系统提供的一套C/C++的API集合,用于与鸿蒙的JS/TS应用进行交互。 如果需要编译并链接第三方库到鸿蒙应用中,通常需要按照以下步骤操作:
- 编译第三方库以生成适合鸿蒙平台的库文件(如.so文件);
- 在鸿蒙应用的构建脚本中配置链接选项,指定第三方库文件的路径和名称;
- 在代码中通过头文件引用第三方库的功能,并在编译时确保链接器能够找到并链接这些库。
4. 鸿蒙如何实现自定义canvas?底层如何进行UI的渲染flutter skia
- 在鸿蒙中实现自定义canvas,可以通过继承鸿蒙提供的Canvas类并重写相关绘制方法来实现。底层的UI渲染通常涉及图形渲染引擎,如Flutter使用的Skia。
- Skia是一个开源的2D图形处理库,它提供了丰富的图形绘制和渲染功能。鸿蒙可能使用类似的技术进行UI渲染,通过调用Skia等渲染引擎的API来绘制界面元素,并将其呈现到屏幕上
5. 鸿蒙网络请求如何实现的?线上的APM是如何做流量的监控?
- 鸿蒙系统的网络请求通常通过调用系统提供的网络API来实现,这些API封装了底层的网络通信逻辑,开发者只需要关注业务逻辑的实现。
- 线上的APM(应用性能管理)流量监控通常是通过采集和分析应用在网络通信过程中的数据来实现的,包括请求次数、请求时长、响应状态码等信息。通过监控这些数据,可以及时发现和解决网络性能问题,提升用户体验。
6. 鸿蒙特性场景化能力
- 一次开发,多端部署(工程一多、功能一多、界面一多)
- 可分可合,自由流转
- 统一生态,原生智能 鸿蒙同一生态:开放共赢,三层统一 设备、应用和服务、三方框架
7. 请介绍UIAbility的启动模式?
- singleton(单实例模式)启动模式:每个UIAbility只存在唯一实例。任务列表中只会存在一个相同的UIAbility (会覆盖上一个实例)
- standard(标准实例模式)启动模式:每次启动UIAbility都会创建一个新的实例。在任务列表中可能存在一个或多个相同的UIAbility实例。新实例创建后,旧实例依然存在。
好处:实现多开效果 - multion (多实例模式) 启动模式:每次启动UIAbility都会创建一个新的实例。
新实例创建后,旧实例会被移除。
场景: 用户在使用分屏功能时,希望使用两个不同应用(例如备忘录应用和图库应用)之间进行分屏,也希望能使用同一个应用(例如备忘录应用自身)进行分屏。 - specified(指定实例模式)启动模式:每个UIAbility实例可以设置Key指示。启动UIAbility时,需要制定key,存在key相同实例直接被拉起,不存在则创建新实例
8. 鸿蒙OS提供了哪些开发工具和框架来帮助开发者提高开发效率?
- DevEco Studio:这是华为为鸿蒙OS开发的集成开发环境(IDE),提供了工程管理、代码编辑、编译构建、调试仿真等基础功能。此外,它还支持远程真机调试、APP云测试等特色服务,方便开发者进行高效的应用开发。
- 鸿蒙开发者服务:这是一套包括鸿蒙云服务、鸿蒙AI开放平台、鸿蒙支付服务等在内的开发者服务,可以帮助开发者快速构建和部署鸿蒙应用程序。
- 分布式架构:鸿蒙OS的分布式架构使得开发者可以更方便地实现多设备间的协作和数据共享,提高了开发效率和用户体验。
总的来说,鸿蒙OS提供的这些开发工具和框架为开发者提供了全方位的支持,从开发环境到应用发布,从单一设备到多设备协作,都有相应的解决方案,从而帮助开发者提高开发效率,降低开发成本。
9. 在鸿蒙OS中,如何调试和优化应用的性能?
1. 性能分析: 首先,使用鸿蒙OS提供的性能分析工具来评估应用的性能。这些工具可以帮助你识别性能瓶颈,如CPU使用率、内存消耗、渲染速度等。
2. 代码优化:
- 减少不必要的计算:避免在UI线程中进行复杂的计算,这样可以防止界面卡顿。
- 使用异步编程:对于可能阻塞主线程的操作,如网络请求、文件读写等,使用异步编程模式。
- 优化数据结构和算法:选择高效的数据结构和算法,以减少内存使用和计算时间。
3. 内存管理:**** 避免内存泄漏:确保不再使用的资源被正确释放。 合理使用缓存:适当使用缓存可以提高性能,但要避免缓存过大导致内存不足。 优化图片资源:压缩图片大小,减少内存占用。
4. 网络优化:**** 减少网络请求:合并多个请求,减少网络延迟。 使用缓存策略:对于频繁请求的数据,使用缓存策略来减少网络请求。
5. 数据库优化: 合理使用索引:为数据库表添加合适的索引,提高查询效率。 避免频繁读写:批量操作可以减少数据库操作的次数。
6. 界面优化:**** 减少界面层级:简化界面布局,减少不必要的视图层级。 使用高效的绘图API:选择性能更好的绘图API来渲染界面。
7. 日志和监控:**** 添加日志记录:在关键代码路径中添加日志记录,以便追踪性能问题。 使用监控工具:使用鸿蒙OS提供的监控工具来实时监控应用的性能。
8. 用户反馈: 积极收集用户反馈,了解应用在实际使用中的性能表现,并根据反馈进行针对性的优化。
通过以上步骤,你可以有效地调试和优化鸿蒙OS中应用的性能。需要注意的是,性能优化是一个持续的过程,需要不断地评估、调整和优化。
10.介绍鸿蒙开发中各种配置文件的作用?
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:
- 应用/服务构建配置文件。
11.ArkTS语言基础类库有哪些能力
ArkTS语言基础类库是HarmonyOS系统上为应用开发者提供的常用基础能力,主要包含能力如下图所示。
ArkTS语言基础类库能力示意图
- 提供异步并发和多线程并发的能力。
- 支持Promise和async/await等标准的JS异步并发能力。
- TaskPool为应用程序提供一个多线程的运行环境,降低整体资源的消耗、提高系统的整体性能,开发者无需关心线程实例的生命周期。
- Worker支持多线程并发,支持Worker线程和宿主线程之间进行通信,开发者需要主动创建和关闭Worker线程。
- 提供常见的容器类库增、删、改、查的能力。
- 提供XML、URL、URI构造和解析的能力。
- XML被设计用来传输和存储数据,是一种可扩展标记语言。语言基础类库提供了XML生成、解析与转换的能力。
- URL、URI构造和解析能力:其中URI是统一资源标识符,可以唯一标识一个资源。URL为统一资源定位符,可以提供找到该资源的路径。
- 提供常见的字符串和二进制数据处理的能力,以及控制台打印的相关能力。
- 字符串编解码功能。
- 基于Base64的字节编码和解码功能。
- 提供常见的有理数操作支持,包括有理数的比较、获取分子分母等功能。
- 提供Scope接口用于描述一个字段的有效范围。
- 提供二进制数据处理的能力,常见于TCP流或文件系统操作等场景中用于处理二进制数据流。
- Console提供控制台打印的能力。
- 提供获取进程信息和操作进程的能力。
12.鸿蒙有哪些后台任务类型
OpenHarmony标准系统支持规范内受约束的后台任务,包括短时任务、长时任务、延迟任务、代理提醒和能效资源。
开发者可以根据如下功能介绍,选择合适的后台任务以满足应用退至后台后继续运行的需求。
- 短时任务:适用于实时性要求高、耗时不长的任务,例如状态保存。
- 长时任务:适用于长时间运行在后台、用户可感知的任务,例如后台播放音乐、导航、设备连接等,使用长时任务避免应用进程被挂起。
- 延迟任务:对于实时性要求不高、可延迟执行的任务,系统提供了延迟任务,即满足条件的应用退至后台后被放入执行队列,系统会根据内存、功耗等统一调度。
- 代理提醒:代理提醒是指应用退后台或进程终止后,系统会代理应用做相应的提醒。适用于定时提醒类业务,当前支持的提醒类型包括倒计时、日历和闹钟三类。
13.鸿蒙页面和自定义组件生命周期
自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用,可以调用组件的生命周期。
页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。 页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:
onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。
onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。
onBackPress:当用户点击返回按钮时触发。
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
aboutToDisappear:在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。
生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(页面)生命周期。
14. 请介绍UIAbility的生命周期?
UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态
15.请简述鸿蒙OS与Android OS的主要区别是什么?
- 设备兼容性:鸿蒙OS是一款面向各种设备的分布式操作系统,支持手机、平板电脑、智能手表、智能家居、汽车等多种设备类型,并能在这些设备之间实现无缝切换和共享数据。而Android系统则主要用于移动设备,如手机和平板电脑。
- 系统架构:鸿蒙OS采用分布式技术架构,通过分布式技术实现多设备间的协作和数据共享,更加灵活、安全、高效。而Android则采用单一设备架构,其多设备协作能力较弱,数据共享相对不便。
- 应用生态:Android系统已经建立了非常完善的应用生态系统,拥有数百万的应用程序,涵盖了各种应用场景。相比之下,鸿蒙OS的应用程序数量较少,生态系统相对不成熟。不过,鸿蒙OS的应用程序数量正在不断增长,未来可能会吸引更多的开发者和应用。
- 安全性:鸿蒙OS采用了多层安全防护措施,包括安全隔离、安全通信、安全识别等,相比Android更加安全。此外,鸿蒙OS还采用了一种名为“微内核”的操作系统内核架构,该架构的安全性和稳定性都非常高。
- 性能和效率:鸿蒙OS在性能和效率方面进行了优化,采用了分布式架构,可以根据设备的资源情况进行智能调度和管理,旨在提供更流畅的用户体验。而Android系统在某些低端设备上可能存在卡顿和性能瓶颈的问题。
16.HarmonyOs IDL是什么?Andriod IDL是什么?
HarmonyOS Interface Definition Language(简称HarmonyOS IDL)是HarmonyOS的接口描述语言。HarmonyOS IDL与其他接口语言类似,通过HarmonyOS IDL定义客户端与服务端均认可的编程接口,可以实现在二者间的跨进程通信(IPC,Inter-Process Communication)。跨进程通信意味着可以在一个进程访问另一个进程的数据,或调用另一个进程的方法。
Android 接口定义语言 (AIDL) 与您可能使用过的其他接口语言 (IDL) 类似。您可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间通信 (IPC) 进行相互通信。在 Android 中,一个进程通常无法访问另一个进程的内存。因此,为进行通信,进程需将其对象分解成可供操作系统理解的原语,并将其编组为可供您操作的对象。
17. 编译过鸿蒙吗?简单说一下编译流程,编译子系统?(暂时搁置)
18.MVVM在鸿蒙架构中的实践、架构问题的理解?
MVVM(Model-View-ViewModel)是一种软件架构设计模式,它旨在促进开发过程中的可维护性和可测试性,尤其适用于构建用户界面。在鸿蒙架构中,MVVM的实践和架构问题的理解对于实现高效且易于维护的应用程序至关重要。
MVVM在鸿蒙架构中的实践
- Model层:在鸿蒙架构中,Model层通常负责数据的存储和处理。它与后端服务或本地数据库进行交互,获取和更新数据。Model层的设计应考虑到数据的完整性和安全性,确保数据的正确性和有效性。
- View层:View层负责展示用户界面,并与用户进行交互。在鸿蒙系统中,View层可以利用系统提供的UI组件和布局方式,实现美观且易于使用的界面。同时,View层还应能够响应用户的操作,如点击、滑动等,并将这些操作传递给ViewModel层进行处理。
- ViewModel层:ViewModel层是MVVM架构的核心,它作为Model和View之间的桥梁,实现了数据的双向绑定。ViewModel层接收View层的用户操作指令,并调用Model层进行数据处理。同时,当Model层的数据发生变化时,ViewModel层会将这些变化通知给View层,实现界面的自动更新。
在鸿蒙架构中实践MVVM时,需要注意以下几点:
- 组件化开发:鸿蒙系统支持组件化开发,可以将不同的功能模块拆分成独立的组件,便于管理和维护。在MVVM架构中,也可以将不同的视图和功能拆分成独立的ViewModel和View组件,提高代码的可复用性和可维护性。
- 数据绑定:鸿蒙系统提供了丰富的数据绑定机制,可以简化ViewModel和View之间的数据交互。通过数据绑定,可以实现View的自动更新和数据的实时同步。
- 性能优化:在鸿蒙架构中实践MVVM时,需要考虑性能优化的问题。例如,可以通过懒加载、异步处理等方式提高应用程序的响应速度和用户体验。
MVVM架构问题的理解
在鸿蒙架构中,MVVM架构可能会面临一些挑战和问题,例如:
- 复杂性:MVVM架构相比传统的MVC(Model-View-Controller)架构更为复杂,需要更多的代码和组件来实现。这可能会增加开发难度和成本。然而,通过合理的架构设计和组件划分,可以降低这种复杂性。
- 学习成本:对于新接触MVVM架构的开发人员来说,可能需要一定的时间来学习和掌握。然而,一旦掌握了MVVM的思想和技巧,就可以更加高效地进行开发和维护。
- 兼容性问题:鸿蒙系统作为一个新兴的操作系统,可能存在与现有MVVM框架或库的兼容性问题。这需要在实践中进行不断探索和调试,以找到最佳的解决方案。
19.鸿蒙存储?
- 分布式数据存储:鸿蒙系统支持分布式数据存储,其中资产类型的数据支持下一级属性修改,并且支持JS接口间的互通,但与其他语言不互通。这种存储方式适用于需要处理大量数据和实现数据同步的场景,能够有效地管理和同步资产数据,确保数据的一致性和可用性1。
- 用户首选项存储:用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据。用户首选项会将数据缓存放在内存中,当需要持久化时,可以使用flush接口将内存中的数据写入持久化文件中。这种存储方式适合保存用户的个性化设置等少量数据,但不适合存放过多的数据,因为随着数据量的增加,会导致应用占用的内存增大2。
- 默认存储位置:鸿蒙操作系统的默认存储位置在设备内部,以确保系统的安全和稳定性。这种存储位置的选择是为了保护用户数据和系统文件不被未经授权的访问和修改3。
综上所述,鸿蒙系统的存储方式结合了分布式数据存储、用户首选项存储以及默认存储位置的选择,以满足不同应用场景和数据管理的需求。
综上所述,MVVM在鸿蒙架构中的实践和架构问题的理解是一个复杂且持续的过程。通过不断的实践和学习,可以逐步掌握MVVM在鸿蒙架构中的最佳实践方法,并解决可能出现的问题和挑战。
其余问题待更新,整理后更新文档~~~ 欢迎大神进行补充指导~~~