2025年最新鸿蒙开发面试八股文合集-HarmonyOS NEXT Release
一、基础概念(必问)1. HarmonyOS与Android和IOS有什么区别?举个实际例子。
鸿蒙HarmonyOS是华为开发的一个开源、分布式的操纵体系。它设计用于多种装备,包罗智能手机、平板电脑、智能电视和物联网装备。好比你可以用手机操控电视、手表联动,数据主动同步(好比手机导航流转到车机),安卓和IOS做不到这种跨装备协作;别的鸿蒙体系更轻量,恰当智能家居等小内存装备。
鸿蒙与Android和iOS的主要区别在于:
分布式架构:HarmonyOS支持跨装备无缝协作,答应装备之间共享硬件资源。
性能:HarmonyOS优化了任务调度和内存管理,进步了性能和响应速度。
安全性:HarmonyOS采用了多条理的安全策略,包罗数据加密和安全启动。
生态体系:HarmonyOS正在构建自己的应用生态体系,鼓励开发者使用Ark Ts和ArkUI框架。
2. 鸿蒙HarmonyOS应用打包后的文件扩展名是?分哪几种?
鸿蒙的应用安装包打包后的文件扩展名为.hap(HarmonyOS Ability Package),这是HarmonyOS应用的标准包格式雷同安卓的APK。分三种:
Release包(.hap):正式发布用,删除了调试信息;
Debug包(.hap.debug):测试用,带日志;
Preview包(.hap.preview):临时测试用,不能上架。
3. 鸿蒙的“微内核”是什么?为什么用这个设计?
微内核只保存最基础的功能(好比任务调度),其他功能(好比文件体系)独立运行。利益是更安全(一个模块崩溃不影响团体)、体系更稳固,恰当物联网装备。
4.鸿蒙的Stage模型和FA模型区别是什么?近来鸿蒙更新了哪些新特性?
FA模型:早期版本,恰当简朴应用;
Stage模型:保举用!组件生命周期独立,更恰当复杂应用和跨装备协同
新特性:ArkTS语言加强、Stage模型推广、分布式硬件池(好比调用多装备算力);
5. 页面和自定义组件生命周期有哪些?
有@Entry装饰器的@component组件的生命周期
onPageShow(显示):页面每次显示时触发一次,包罗路由过程、应用进入前台等场景。
onPageHide(隐蔽):页面每次隐蔽时触发一次,包罗路由过程、应用进入后台等场景。
onBackPress(返回键):当用户点击返回按钮时触发。
有@Entry装饰器和无@Entry装饰器@Component组件都有的生命周期
aboutToAppear(创建前):组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其 build()函数之前执行。
onDidBuild:API12新增,组件 build()函数执行完成之后回调该接口,不建议在 onDidBuild函数中更改状态变量、使用 animateTo等功能,这会导致不稳固的UI表现。
aboutToDisappear(销毁前):aboutToDisappear函数在自定义组件析构销毁之前执行。不答应在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改会导致应用程序行为不稳固。
6.UIAbility的生命周期有哪些?UIability冷启动与热启动理解
UIAbility的生命周期包罗Create、Foreground、Background、Destroy四个状态
UIability首次启动为冷启动,非首次为热启动
冷启动为onCreate()→onWindowStageCreate()→onForeground()
热启动为onNewWant()→onForeground()
7. 如何进行用户数据长期化?
用户首选项(Preferences):【小数据】这是一种轻量级的配置数据长期化方式,适用于保存应用配置信息、用户偏好设置等。它通过文本形式保存数据,而且数据会全量加载到内存中,因此访问速度快,但不恰当存储大量数据。(雷同安卓的SharedPreferences)
键值型数据库(KV-Store):【大数据】适用于存储结构简朴的数据,如商品名称和价格、员工工号和出勤状态等。键值型数据库以“键值对”的形式构造数据,恰当数据关系不复杂的场景。
关系型数据库(RelationalStore):【复杂数据】基于SQLite,适用于存储包罗复杂关系的数据,如门生信息、雇员信息等。关系型数据库提供了一系列SQL操纵,如增编削查等。
8. 父子组件如何通讯?
@Prop装饰器、@Link装饰器、@Provide和@Consume装饰器、@Event装饰器、@Parame装饰器、@Provider装饰器和@Consumer装饰器
当前(API 12)状态管理有两个版本 @Component和 @ComponentV2
(1) 父子单向数据传递 @State+@Prop
@Prop装饰的变量可以和父组件建立单向的同步关系。@Prop装饰的变量是可变的,但是变化不会同步回其父组件。
(2) 父子双向数据传递 @State+@Link 、@objectLink+@Link
子组件中被 @Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。
(3) 跨组件通讯 @Provide装饰器和 @Consume装饰器
@Provide和 @Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。差异于 @Prop和 @Link,@Provide和 @Consume摆脱参数传递机制的束缚,实现跨层级传递。
(4) @Observed装饰器和 @ObjectLink装饰器
对于多层嵌套的情况,好比二维数组,大概数组项class,大概class的属性是class,他们的第二层的属性变化是无法观察到的。这就要用到 @Observed/@ObjectLink装饰器
注意:@ObjectLink装饰器不能在 @Entry装饰的自定义组件中使用且 @ObjectLink 装饰的变量不能被赋值,只能对其属性进行赋值操纵
总结:
父传子:用@Prop(单向,子改不了父)或@Link(双向,子能改父);
子传父:通过父组件定义的方法回调;
兄弟组件:通过共同的父组件中转,大概用全局状态管理(好比AppStorage)。
通过公共父组件传递
假如两个组件是同一个父组件的子组件,可以通过父组件来传递数据或事件。父组件可以作为中介,将一个子组件的数据或事件传递给另一个子组件。
使用全局状态管理
使用全局状态管理(如 AppStorage、LocalStorage)来存储共享数据。兄弟组件可以独立地读取和更新这个全局状态,从而实现通讯。
9. 鸿蒙常用的装饰器有哪些?
@State 定义状态,当前组件能使用
@Prop 父子组件通讯(特点:子组件数据不能修改)
@Link 父子组件通讯(特点:子组件数据可以修改)
@Observed 和 @ObjectLink 父子组件通讯(特点:嵌套第二层数据修改可以到达响应式,之火线案不可)
@Provide 和 @Consume 祖孙组件通讯
@Builder 和 @BuilderParam 父子组件通讯,通讯组件数据
@Watch 监督数据的变化(第一次不会触发)
10. @Prop和@ObjectLink装饰器有什么区别?
(1) 用途
@Prop装饰器:主要用于在组件之间传递数据,将父组件的值传递给子组件。它定义了子组件的属性,可以接收来自父组件的赋值。@ObjectLink用于建立对象之间的链接,通常用于在组件内部或组件之间共享和同步状态。它可以将一个对象的属性与另一个对象的属性进行链接,当一个对象的属性发生变化时,另一个对象的属性也会主动更新。
(2) 数据传递方式
@Prop:是单向的数据传递,从父组件到子组件。父组件可以设置子组件的 @Prop属性值,但子组件不能直接修改这个值。@ObjectLink是双向的数据传递,父组件和子组件都可以修改子组件的 @ObjectLink属性值。
(3) 性能
@Prop会深拷贝数据,具有拷贝的性能开销,性能低于 @ObjectLink详见官方文档。
11. 如何实现页面间的通讯?
(1) 使用@Provide装饰器和@Consume装饰器
(2) 使用路由(router)跳转传参
(3) 使用导航(pageStack.pushPath和pageStack.pushPathByName)跳转传参
12. Navigation组件跳转和router跳转有什么区别?
[*]Navigation:是路由容器组件,适用于模块内和跨模块的路由切换,一次开发,多端部署场景。Router位于页面栈管理节点 stage 下面,不提供导航容器的概念。
[*]Navigation和 Router都支持跳转传参,但 Router对象中暂不支持方法变量。
[*]Navigation:支持清算指定路由,页面栈没有上限,可以无限跳转。Router不支持清算指定路由且页面栈最大为32,页面栈到达32之后必须扫除之后才能继续跳转。
[*]Navigation:支持自定义转场动画和共享元素转场动画。 Router:仅支持简朴自定义转场动画。
[*]Navigation:支持通过 setInterception 方法设置路由拦截。Router:不支持路由拦截。
[*]Navigation:支持沉醉式页面和模态嵌套路由。Router:不支持,需要通过窗口配置实现沉醉式页面。
总而言之,Navigation 组件在功能上更具丰富性和灵活性,特别是在处理复杂的导航结构、动效和路由管理方面。 而 Router 则提供了更基础的路由跳转功能,恰当简朴的路由需求。开发者可以根据应用的具体需求和设计选择最符合的路由方案。
13. 如何进行全局状态管理?
应用全局的UI状态存储
(1) @Provide+@Consume装饰器
适用场景:适用于整个组件树而言“全局”的状态共享,且该状态改动不频仍的场景。
工作原理:通过在最顶层组件中使用 @Provide装饰器提供状态,其他需要共享状态的组件通过 @Consume装饰器获取该状态 。
优点:淘汰了状态传递的层级,提升了代码的可维护性和可拓展性。
注意事项:确保状态的生命周期与组件树的生命周期一致,避免不须要的UI刷新。
(2) AppStorage
适用场景:适用于整个应用而言“全局”的变量或应用的主线程内多个 UIAbility实例间的状态共享。
工作原理:AppStorage与应用的历程绑定,由UI框架在应用程序启动时创建,当应用历程停止,AppStorage被接纳。
优点:适用于需要在整个应用中共享状态的场景。
注意事项:确保状态的生命周期与应用历程一致,避免在应用退出后仍有状态存在。
(3) LocalStorage
适用场景:适用于单个Ability而言“全局”的变量,主要用于差异页面间的状态共享。
工作原理:LocalStorage的生命周期由应用程序决定,当应用释放最后一个指向 LocalStorage的引用时,LocalStorage被垃圾接纳。
优点:适用于需要在单个UIAbility中差异页面间共享状态的场景。
注意事项:确保状态的生命周期与应用程序的生命周期一致,避免在应用退出后仍有状态存在。
说明:LocalStorage在应用重启后数据会消失,因为LocalStorage 是一种用于页面或组件级别的数据存储方式,它答应开发者在页面或组件的生命周期内存储和检索数据。LocalStorage 的数据存储在内存中,因此它的读写速度相对较快。但是,当应用重启后,LocalStorage 中的数据会丢失。
14. 跨装备通讯的方式有哪些?
HarmonyOS支持多种跨装备通讯方式,包罗:
分布式软总线:一种高性能的通讯机制,答应装备之间建立直接毗连,进行数据传输。
蓝牙:使用标准的蓝牙技术进行装备间的通讯。
WLAN:通过WLAN网络实现装备间的通讯。
长途服务调用:通太过布式任务调度实现跨装备的服务调用。
15. H5如何与HarmonyOS应用(webView)进行通讯?
(1) 应用侧调用前端页面JS函数
应用侧可以通过runJavaScript()方法异步调用前端页面的JavaScript相干函数,并通过Promise方式返回脚本执行的结果。runJavaScript需要在loadUrl完成后,好比onPageEnd中调用。
(2) 前端页面调用应用侧函数
使用Web组件将应用侧代码注册到前端页面中,注册完成之后,前端页面中使用注册的对象名称就可以调用应用侧的函数,实如今前端页面中调用应用侧方法。注册应用侧代码有两种方式,一种在Web组件初始化调用,使用javaScriptProxy()接口。别的一种在Web组件初始化完成后调用,使用registerJavaScriptProxy()接口。
16. 鸿蒙应用的性能优化有哪些方法?
鸿蒙应用的性能优化方法主要包罗以下几个方面:
(1) 布局优化:使用扁平化布局方案,淘汰视图嵌套层级和组件数,避免过度绘制,合理控制元素的显示隐蔽。例如,在处理长列表时,可以淘汰列表项的复杂性,使用简朴的布局结构。
备注: 长列表加载性能优化
一.懒加载(10000条数据以上时建议使用layz)
二.缓存列表项(额外缓存部分列表项,一样平常为页面数据显示条数/2)
三.组件复用(淘汰组件创建的耗时操纵@Reusable,aboutToReuse)
四.布局优化(相对布局,控制布局在5-8层)
(2) 渲染优化:实施动态预加载和组件复用,使用LazyForEach方法进行懒加载,缓存列表项和组件复用,淘汰首屏显示时间,提升页面滑动帧率。
(3) 内存优化:使用内存分析工具如DevEco Profiler的Allocation Profiler,实时监测应用内存使用情况,辨认并修复内存泄漏问题。
(4) 启动优化:利用预启动Web渲染历程和预剖析、预毗连策略,淘汰网络延长,提升页面加载速度。
(5) 响应速度优化:将耗时操纵放在子线程中执行,避免阻塞主线程。使用HandlerThread处理耗时任务,避免应用无响应(ANR)
(6) 后台优化:合理使用后台服务和定时任务,避免不须要的后台运行。
(7) 资源优化:压缩图片和媒体资源,淘汰应用的体积和加载时间。
17. 鸿蒙Next优化应用启动时间有哪些方法?
HarmonyOS 鸿蒙Next优化应用启动时间的方法主要包罗以下几点:
优化冷启动流程:冷启动时,体系会重新创建历程,因此需关注应用历程创建与初始化、Application&Ability初始化等阶段。建议设置符合分辨率的启动页图标(如不高出256像素×256像素),以淘汰解码耗时。同时,尽量淘汰import的模块数量,按需加载,以紧缩初始化时间。
淘汰布局嵌套:优化页面布局,去除冗余嵌套,使用扁平化布局(如相对布局、Grid等),以低落体系绘制负担,提升渲染性能。
合理使用体系资源:利用并行化、预加载等技术,如多线程并发、Web预加载等,提升资源利用率,淘汰主线程负载,从而加速启动速度。
避免冗余操纵:合理使用体系接口,避免不须要的Trace和日志打印,淘汰体系开销。
18. 鸿蒙应用启动白屏时间长,如何优化?
(1) 淘汰首屏资源加载(懒加载非须要组件);
(2) 用SplashScreen设置启动页背景图;
(3) 预加载数据(好比用户信息)。
19. 碰到页面跳转卡顿,大概是什么缘故原由?怎么优化?
缘故原由:页面资源过大、网络哀求阻塞、动画未异步执行;
优化:用router.replaceUrl预加载下一页、图片压缩、耗时操纵放子线程。
20. 优化内存有哪些方法?
(1) 使用onMemoryLevel监听内存变化
(2) 使用LRUCache优化ArkTS内存
例如:我们搜索租房列表可以无限加载租房数据,如许数据会越来越多,我们使用LRUCacheUtil来管理数据
(3) 使用生命周期管理优化ArkTS内存
例如:aboutToDisappear中销毁订阅事件,扫除定时器等
(4) 使用purgeable优化C++内存
21. 多线程实现方式TaskPoll和Worker的区别?
TaskPool和Worker均支持多线程并发能力。由于TaskPool的工作线程会绑定体系的调度优先级,而且支持负载均衡(主动扩缩容),而Worker需要开发者自行创建,存在创建耗时以及不支持设置调度优先级,故在性能方面使用TaskPool会优于Worker,因此大多数场景保举使用TaskPool。
TaskPool偏向独立任务维度,该任务在线程中执行,无需关注线程的生命周期,超长任务(大于3分钟且非长时任务)会被体系主动接纳;而Worker偏向线程的维度,支持长时间占据线程执行,需要主动管理线程生命周期。
总结:
TaskPool性能比较好,短时任务用TaskPool,长时任务(3分钟以上)用Woker。
22. 鸿蒙的架构分为哪些条理?各条理的作用是什么?
鸿蒙体系采用分层架构设计,将体系划分为四个条理:内核层、体系服务层、框架层和应用层。这种分层架构具有以下优势:
模块化: 各层之间相对独立,便于开发和维护。
可扩展性: 各层可以根据需要进行扩展和升级,不会影响其他层。
安全性: 各层之间严格隔离,低落体系安全风险。
内核层:
内核子体系:采用多内核设计,支持差异资源受限装备选用恰当的OS内核。内核抽象层(KAL)通过屏蔽多内核差异,对上层提供基础的内核能力,包罗历程/线程管理、内存管理、文件体系、网络管理和外设管理等。
驱动子体系:硬件驱动框架(HDF)是鸿蒙硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。
体系服务层:
体系基本能力子体系集:为分布式应用在鸿蒙多装备上的运行、调度、迁移等操纵提供基础能力,包罗分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI等子体系。
基础软件服务子体系集:提供公共的、通用的软件服务,如事件通知、电话、多媒体、DFX(Design For X)、MSDP&DV等子体系。
加强软件服务子体系集:提供针对差异装备的差异化能力加强型软件服务,如智慧屏专有业务、穿戴专有业务、IoT专有业务等子体系。
硬件服务子体系集:提供硬件服务,如位置服务、生物特征辨认、穿戴专有硬件服务、IoT专有硬件服务等子体系。
框架层:
框架层是用户程序和体系交互的桥梁,提供JavaScript、C、C++等多语言的用户程序开发框架,以及UI框架、Ability框架等,同时为体系服务层的软硬件服务提供对外开放的多语言框架API。
应用层:
应用层包罗基础用户程序和第三方用户程序,基础用户程序作为体系的基础功能,第三方用户程序则由开发者开发,提供丰富的应用生态。
23. 鸿蒙项目工程三层架构是什么?
三层架构为了“一次开发,多端部署”,项目结构采用三层架构
三层工程结构如下:
commons(公共能力层):用于存放公共基础能力聚集(如工具库、公共配置等)。commons层可编译成一个或多个HAR包或HSP包,只可以被products和features依赖,不可以反向依赖。
features(基础特性层):开发页面、组件(HAR包或HSP包)。
products(产品定制层):定义phone\pad两个ability,引用 features 的包和 commons 的包完成应勤劳能
24. ForEach和LazyForEach的区别?
LazyForEach 是一个用于高效渲染列表的组件或功能,它答应开发者在用户滚动列表时才加载和渲染列表项,而不是一次性渲染整个列表。这种按需渲染的方式可以明显进步应用的性能,特别是在处理大量数据时。
LazyForEach 的工作原理通常是基于用户的滚动位置来动态地创建和销毁列表项的组件实例。当用户滚动到列表的某个部分时,LazyForEach 会加载并渲染那些即将进入视图的列表项,同时大概会卸载那些滚出视图的列表项,以节省内存和盘算资源。
ForEach和LazyForEach都是用于渲染列表的装饰器,它们的区别在于:
ForEach:渲染列表时,会将列表中的每一项都渲染一次,适用于列表项数量较少的情况。
LazyForEach:渲染列表时,只渲染当前可见的列表项,适用于列表项数量较多的情况。
25. Router.replace()方法的作用是什么?和Router.pushUrl()方法有什么区别?
Router.replace()方法用于替换当前路由,并将目标路由压入栈顶。与Router.pushUrl()方法差异,Router.replace()方法不会保存当前路由,而是直接替换掉当前路由。
26. ArkTs是什么?
ArkTs先容
ArkTS是HarmonyOS优选的主力应用开发语言。保持了TypeScript的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳固性和性能。
ArkTS的主要特点包罗:
静态类型检查:ArkTS在编译时进行类型检查,这有助于在代码运行前发现和修复错误,进步代码的稳固性和性能。
声明式UI:ArkTS定义了声明式UI描述,答应开发者以更简洁、更自然的方式开发跨端应用。
状态管理:ArkTS提供了多维度的状态管理机制,使得与UI相干联的数据可以在组件内使用,也可以在差异组件层级间传递,支持单向和双向数据流。
渲染控制:ArkTS支持条件渲染、循环渲染和数据懒加载,答应开发者根据应用的差异状态渲染UI内容。
兼容性:ArkTS兼容TS/JavaScript生态,开发者可以使用TS/JS进行开发或复用已有代码。
并发机制:ArkTS支持轻量化的并发机制,答应开发者编写并发代码,进步应用的性能和响应速度。
27. ArkTs与TypeScript有什么区别?(答5点以上)
ArkTs官方文档
ArkTS 是基于 TypeScript 开发的框架,但是有一些限定和差异。ArkTS 旨在提供更严格的类型检查和优化的代码性能,同时确保与 HarmonyOS 的开发环境和特性兼容。以下是 ArkTS 与 TypeScript 的差异:
不支持使用对象字面量声明类型。
不支持使用 var关键字。
不支持使用 in运算符。
不支持导入断言。
不支持使用 any类型。
不支持使用 import赋值表达式。
不支持使用 require导入
28. ArkUI框架有哪些特点?
ArkUI框架是鸿蒙(HarmonyOS)中的一个重要组件框架,具有以下几个特点:
组件树结构 : ArkUI框架通过布局组件和基础组件构建界面描述树(组件树),其中基础组件为叶子节点,布局组件为中心节点 。当用户进行交互时,会触发界面修改,通过重新渲染组件树来实现应用界面更新 。
数据与UI更新过程 : ArkUI框架的数据处理过程和UI更新过程是分开进行的。数据处理过程中,主要是对状态数据进行更新,并通过标脏过程确定布局最小影响范围,淘汰不须要的重新布局 。UI更新过程包罗组件标脏、布局、测量和渲染等阶段 。
布局组件 : ArkUI框架提供了多种布局组件,如Row、Column、Stack、Flex、List、Grid、RelativeContainer等。开发者可以根据场景选择符合的布局组件,以优化性能 。例如,线性布局(Row、Column)适用于横向或纵向排列组件,而弹性布局(Flex)适用于需要弹性排列的场景。
性能优化 : ArkUI框架在性能优化方面做了很多工作。例如,通过淘汰不须要的组件嵌套和节点数量,低落布局测算的复杂度,从而提升性能。开发者可以使用DevEco Studio提供的工具(如Profiler和ArkUI Inspector)来检察性能瓶颈和组件树结构,进一步优化应用性能。
状态管理 : ArkUI框架支持状态管理最佳实践,通过有用的状态管理淘汰无效的UI更新操纵,提升性能。例如,在状态变量变化导致UI更新时,只更新部分组件,而不是重新渲染整个界面。
29. 如何实现应用的后台运行?
后台服务:使用后台服务(如BackgroundService)来执行不需要用户直接交互的任务。
定时任务:通过体系提供的定时任务机制(如AlarmService)来周期性执行后台任务。
事件监听:注册体系事件,如网络变化、电量变化等,以在特定事件发生时唤醒应用进行处理。
30. Ability是如何与用户交互的?
界面显示:Ability可以包罗一个或多个AbilitySlice,用于显示UI界面并与用户进行交互。
事件处理:Ability可以处理用户的输入事件,如触摸、按键等。
数据绑定:Ability可以使用数据绑定机制,将UI组件与数据模型绑定,实现数据的主动更新和交互。
通知:Ability可以通过体系通知机制向用户发送通知,纵然应用不在前台运行。
31. 如何实现应用的多语言支持?
资源文件:为每种语言创建资源文件(如string.json),并在内里定义所有可本地化的字符串。
资源引用:在代码中使用资源ID引用字符串,而不是硬编码文本。
体系设置:应用会主动根据体系设置的语言环境加载相应的资源文件。
动态切换:支持在应用运行时切换语言,并动态更新UI。
32. 分布式数据库是如何实现数据同步的?
分布式事务:确保跨装备的数据库操纵具有原子性、一致性、隔离性和长期性。
数据版本控制:为数据添加版本号,确保同步时数据的一致性。
冲突办理策略:定义冲突办理策略,处理并发操纵导致的数据冲突。
网络状态感知:根据网络状态智能同步数据,优化同步服从和流量使用。
33. HarmonyOS中的权限管理模型是怎样的?
权限声明:应用在config.json中声明所需的权限。
权限申请:在应用运行时,根据需要动态申请权限。
权限检查:在执行敏感操纵前,检查是否已获得相应权限。
权限分组:体系将权限分为差异的组,便于管理和申请。
34. 如何实现应用的沉醉式模式?
沉醉式模式是指应用界面呈现出沉醉式的全屏模式,不留任何体系UI,用户只能看到应用内容。在沉醉式模式下,应用的UI元素会被覆盖,但体系状态栏、导航栏、键盘等体系UI依然可见。以下是实现步骤
设置窗口属性:
在应用的入口Ability中,可以通过设置窗口属性来实现沉醉式模式。这通常涉及到配置窗口特性(Window Features)来隐蔽状态栏和导航栏。
使用体系API:
鸿蒙OS提供了API来控制体系UI的显示和隐蔽。你可以在应用的代码中调用这些API来实现沉醉式效果。
配置应用的配置文件:
在应用的config.json或其他配置文件中,可以声明应用需要的窗口特性,如ohos:immersive。
动态切换:
应用可以根据用户的交互或特定场景动态地进入或退出沉醉式模式。这大概涉及到监听用户的手势或其他事件来切换UI状态。
适配差异装备:
差异的装备大概有差异的屏幕和体系UI,因此在实现沉醉式模式时,需要考虑差异装备的适配问题。
35. 如何获取屏幕的安全地区?
可以通过设置组件的expandSafeArea属性来获取获取UIWindow:首先,你需要获取到当前页面的UIWindow实例。
调用getSafeArea方法:通过UIWindow实例调用getSafeArea方法来获取安全地区的Rect对象。
36.hap、har、hsp三者的区别?
HAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包天生的模块包,其主要分为两种类型:entry和feature。(又称ability)
HAR(Harmony Archive)是静态共享包,可以包罗代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相干代码。(又称static library, 静态共享包)
HSP(Harmony Shared Package)是动态共享包,可以包罗代码、C++库、资源和配置文件,通过HSP可以实当代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同历程,具有相同的包名和生命周期。(又称shared library, 动态共享包)
37. 显示 want 和 隐式 want 的区别?
显式Want:在启动目标应用组件时,调用方传入的want参数中指定了abilityName和bundleName,称为显式Want。
显式Want通常用于应用内组件启动,通过在Want对象内指定本应用Bundle名称信息(bundleName)和abilityName来启动应用内目标组件。当有明确处理哀求的对象时,显式Want是一种简朴有用的启动目标应用组件的方式。
例如:打开其他窗口
隐式Want:在启动目标应用组件时,调用方传入的want参数中未指定abilityName,称为隐式Want。
当需要处理的对象不明确时,可以使用隐式Want,在当前应用中使用其他应用提供的某个能力,而不关心提供该能力的具体应用。隐式Want使用skills标签来定义需要使用的能力,并由体系匹配声明支持该哀求的所有应用来处理哀求。例如,需要打开一个链接的哀求,体系将匹配所有声明支持该哀求的应用,然后让用户选择使用哪个应用打开链接。
例如:将pdf文件传递给其他应用窗口
总的来说
显示want和隐式want的区别在于有无abilityName。有就是显示want,没有就是隐式want
显示want主要用于当前应用窗口跳转,隐式want打开其他应用的窗口
38. 鸿蒙开发中常用的开发工具有哪些?它们的特点是什么?
DevEco Studio
主要功能特点
项目管理: DevEco Studio支持多种项目模板,开发者可以根据自己的需求选择符合的模板进行开发。它还提供了强大的项目管理功能,方便开发者对项目进行构造和管理。
代码编辑: DevEco Studio提供了强大的代码编辑功能,包罗代码高亮、主动补全、代码格式化等,可以大大进步开发服从。
调试和测试: DevEco Studio集成了丰富的调试和测试工具,开发者可以通过这些工具对应用进行调试和测试,确保应用的质量。
模拟器: DevEco Studio内置了鸿蒙体系的模拟器,开发者可以在模拟器中运行和测试应用,无需依赖真实装备。
39. 如安在鸿蒙中实现跨装备的应用开发?
在鸿蒙体系中实现跨装备应用开发的方法如下:
跨装备拖拽:鸿蒙体系支持跨装备拖拽功能,答应用户在任意两台装备之间拖拽文件、文本等。例如,用户可以将A装备文件管理器中的图片拖拽至B装备的备忘录应用,实现跨装备的协同工作。
分布式架构:鸿蒙体系的核心突破在于分布式技术,通过微内核设计实现跨装备协同。用户可以将应勤劳能拆分为独立模块,无需安装完备APP,即用即走。例如,健康码、搭车码等应勤劳能可以独立使用,进步了使用的便捷性。
统一扫码功能:鸿蒙体系提供了统一扫码功能,用户可以在手机桌面下拉点击“扫一扫”即可完成车机版登录,较别的操纵体系流程提速3倍。
隐私保护:鸿蒙体系通过微内核设计,对用户身份认证、数据传输等环节进行全流程加密,确保数据安全。例如,用户在使用高德地图时,体系会确保应用只能访问用户授权的数据,保护用户的隐私安全。
40. 鸿蒙如何实现跨装备调用(好比手机调用电视的摄像头)?
用分布式任务调度:先发现装备(deviceManager),然后通过Ability调用长途服务;
数据通太过布式数据管理主动同步。
二、行为问题(看潜力和态度)
1. 在团队合作中,你以为最重要的是什么?
我以为在团队合作中,最重要的是沟通和协调能力。只有团队成员之间保持良好的沟通,相互了解对方的需求和意见,才能更好地协调各项任务。如答应以进步工作服从,更好地完成团队目标。
2. 如何对待工作压力和加班?
工作压力和加班是当代职场中普遍存在的问题,对个人身心健康和工作服从都有重要影响。
工作压力的影响
对身心健康的影响:长期的工作压力大概导致身材疲惫、精力压力大,甚至大概引发各种健康问题,如失眠、多梦、免疫力降落等。
对工作服从的影响:过大的工作压力大概导致工作服从低落,甚至出现工作失误。
加班的影响
利:在某些情况下,加班可以提供更多的学习和实践机会,加强团队凝结力,展现责任心和敬业精力。
弊:长期加班会导致身材疲惫、精力压力大,甚至大概引发各种健康问题,而且过度加班并不一定能带来工作服从的提升。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]