1、UIAbility和UIExtensionAbility有什么区别?分别推荐在什么场景使用
A:UIExtensionAbility是特定场景下带界面扩展能力的基类。不支持开发者直接继承该基类,但是开发者可以使用继承该类开发的其他一些ExtensionAbility。
-
UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。UIAbility运行时,任务列表里会有对应的任务视图。
-
UIExtensionAbility组件是一种带UI的扩展组件。UIExtensionAbility在运行期并没有独立的窗口,而是作为宿主的一个节点,嵌入到宿主窗口中显示,在任务列表中也没有对应的任务视图。
2、UIAbility/Page/Component之间的关系?如何搭配使用
A:UIAbility是应用中的组件,一般建议一个Hap包中仅包含一个UIAbility。
Page是页面展示,一个UIAbility中可以有一个或多个Page,开发者可以根据系统提供的能力进行页面间跳转。
Component是页面组件的概念,例如Text组件、Button组件。一个Page里面可以有一个或多个Component,开发者通过不同的组件布局来实现不同的页面。
3、关于emitter、eventHub的使用场景
A:Emitter主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。
4、如何禁用窗口的全屏显示功能
A:可以在module.json5文件中通过配置abilities中的supportWindowMode字段去指定是否显示。
fullscreen表示支持全屏显示,split表示支持分屏显示,floating表示支持窗口化显示。
5、系统是否支持应用自行在桌面上创建应用的快捷入口,直接打开指定页面
A:当前不支持。
6、如何在UIAbility、页面和组件中获取UIAbilityContext
A:可以在UIAbility中或者页面中分别进行获取UIAbility实例的上下文信息(UIAbilityContext),详细请参见获取UIAbility的上下文信息。
7、如何在工具类中获取Context
A:工具类中无法直接获取context,可以在EntryAbility中获取Context后保存至AppStorage,然后在工具类中使用APPStorage获取。
8、Applicationcontext、UIAbilitycontext、Context的区别是什么
A:区别如下
-
ApplicationContext和UIAbilitycontext都是继承自基类Context ,不同的Context有不同的属性和方法。
-
ApplicationContext:应用级别的Context。ApplicationContext在基类Context的基础上提供了订阅应用内应用组件的生命周期的变化、订阅系统内存变化和订阅应用内系统环境的变化的能力,在UIAbility、ExtensionAbility、AbilityStage中均可以获取。
-
UIAbilitycontext:每个UIAbility中都包含了一个Context属性,提供操作应用组件、获取应用组件的配置信息等能力。
9、在使用UIAbilityContext时报401“The context must be a valid Context”的Context类型错误
A:401报错表示context无效,需要使用UIAbility的Context。获取UIAbilityContext的方式如下:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit'; export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { let uiAbilityContext = this.context; // ... } }
10、应用、元服务和卡片是什么关系
A:关系如下
-
元服务也是一种应用,只不过没有图标,可以执行免安装拉起而已。
-
应用和元服务,不能共享包名,它们得分别打包,元服务和应用之间是分割开的,也不能共享entry模块
-
应用与元服务都可以有卡片,而不是某一方特有的。
-
元服务的卡片在手机上的入口,就表现为桌面卡片;在桌面长按任何一张已经添加的卡片,比如:图库和备忘录,在弹出来的菜单中选择“卡片中心”,进入卡片中心页面,可以找到卡片来添加到桌面。带下划线的桌面图标的应用表示存在服务卡片。
11、系统应用、三方应用、预置应用有什么差别
A:差比如下
-
系统应用:profile证书中app-feature为hos_system_app的应用,系统应用能调用系统接口。
-
三方应用:profile证书中app-feature为hos_normal_app的应用,三方应用不能调用系统接口。
-
预置应用:厂商在出厂时预先安装在设备上的应用,可以是系统应用,也可以是三方应用。
12、元服务工程的标题栏是否能去除
A:元服务场景默认支持标题栏,且为规格必选,不可去除。
13、如何设置默认语言和应用名称为中文
A:系统默认语言为中文,不需要额外设置。 应用名称在resources/zh_CN/element/string.json文件中配置。
14、如何查询应用进程的pid信息
A:可以通过如下两种方式获取:
-
方式一:通过以下命令查询应用进程信息。
执行hdc shell命令,进入设备的shell命令行。在shell命令行中,执行“ps -ef”命令,可以查看所有正在运行的进程信息。
-
方式二:通过调用process相关接口查询
15、除应用市场外,是否存在其它途径下载安装应用包
A:HarmonyOS NEXT版本普通应用用户有且仅可通过应用市场一个途径下载并安装应用包,不存在其他途径,仅支持通过应用市场下载并安装应用包。
更多详情查看:文档中心