某个应用的启动框架配置文件详细信息如下,以下说法正确的是:
{
"startupTasks": [
{
"name": "StartupTask_001",
"srcEntry": "./ets/startup/StartupTask_001.ets",
"dependencies": [
"StartupTask_002",
"StartupTask_003"
],
"runOnThread": "taskpool",
"waitOnMainThread": false
},
{
"name": "StartupTask_002",
"srcEntry": "./ets/startup/StartupTask_002.ets",
"dependencies": [
"StartupTask_004"
],
"runOnThread": "taskpool",
"waitOnMainThread": false
},
{
"name": "StartupTask_003",
"srcEntry": "./ets/startup/StartupTask_003.ets",
"runOnThread": "taskpool",
"waitOnMainThread": false
},
{
"name": "StartupTask_004",
"srcEntry": "./ets/startup/StartupTask_004.ets",
"runOnThread": "taskpool",
"waitOnMainThread": false
},
{
"name": "StartupTask_005",
"srcEntry": "./ets/startup/StartupTask_005.ets",
"runOnThread": "mainThread",
"waitOnMainThread": true
},
{
"name": "StartupTask_006",
"srcEntry": "./ets/startup/StartupTask_006.ets",
"runOnThread": "mainThread",
"waitOnMainThread": false,
"excludeFromAutoStart": true
}
],
"configEntry": "./ets/startup/StartupConfig.ets"
}
A.
StartupTask_006会在AbilityStage的onCreate前初始化完成
B.
StartupTask_005会在主线程执行
C.
StartupTask_001会在StartupTask_004之后执行;
D.
StartupTask_003会在StartupTask_004之后执行
Grid() {
ForEach(this.numbers, (day: string) => {
ForEach(this.numbers, (day: string) => {
GridItem() {
Text(day)
.fontSize(16)
.backgroundColor(0xF9CF93)
.width('100%')
.height(80)
.textAlign(TextAlign.Center)
}
}, (day: string) => day)
}, (day: string) => day)
}
.columnsTemplate('1fr '.repeat(this.columns))
.columnsGap(10)
.rowsGap(10)
.width('90%')
.scrollBar(BarState.Off)
.backgroundColor(0xFAEEE0)
.height('100%')
.cachedCount(3)
// 切换列数item位置重排动画
.animation({
duration: 300,
curve: Curve.Smooth
})
.xxxx?(
PinchGesture()
.onActionEnd((event: GestureEvent) => {
console.info('end scale:' + event.scale)
// 手指分开,减少列数以放大Item,触发阈值可以自定义,示例为2
if (event.scale > 2) {
this.columns--
} else if (event.scale < 0.6) {
this.columns++
}
// 可以根据设备屏幕宽度设定最大和最小列数,此处以最小1列最大4列为例
this.columns = Math.min(4, Math.max(1, this.columns));
AppStorage.setOrCreate('columnsCount', this.columns)
})
)
如果想让grid上的捏合手势手势生效,而不跟grid上的滚动手势形成冲突,.xxxx?手势接口应该怎么配置?
A.
parallelGesture
B.
gesture
C.
priorityGesture
D.
GesureGroup
通过如下openLink的接口启动,如下哪些配置的UIAbility不可能被拉起
import { hilog } from '@kit.PerformanceAnalysisKit';
import { UIAbility, common, OpenLinkOptions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class MyAbility extends UIAbility {
onForeground() {
let link: string = "https://www.example.com"
let openLinkOptions: OpenLinkOptions = {
appLinkingOnly: true,
parameters: {demo_key: "demo_value"}
};
try {
this.context.openLink(
link,
openLinkOptions,
(err, result) => {
hilog.error(DOMAIN, TAG, 'openLink callback error.code:' + JSON.stringify(err));
}
).then(()=>{
hilog.info(DOMAIN, TAG, 'open link success.');
}).catch((err: BusinessError)=>{
hilog.error(DOMAIN, TAG, 'open link failed, errCode ' + JSON.stringify(err.code));
})
}
catch (e) {
hilog.error(DOMAIN, TAG, 'exception occured, errCode ' + JSON.stringify(e.code));
}
}
}
A.
{
"name": "TargetAbility",
"skills": [
{
"actions":[
"ohos.want.action.viewData",
],
"entities":[
"entity.system.browsable",
],
"uris":[
{
"scheme": "https",
"host": "www.test.com",
"port": "8080",
"path": "path",
"autoVerify": ture
}
]
}
]
}
B.
{
"name": "TargetAbility",
"skills": [
{
"actions":[
"ohos.want.action.sendData",
],
"entities":[
"entity.system.browsable",
],
"uris":[
{
"scheme": "https",
"host": "www.test.com",
"port": "8080",
"path": "path",
"autoVerify": ture
}
]
}
]
}
C.
{
"name": "TargetAbility",
"skills": [
{
"actions":[
"ohos.want.action.vieData",
],
"entities":[
"entity.system.browsable",
],
"uris":[
{
"scheme": "http",
"host": "www.test.com",
"port": "8080",
"path": "path"
}
]
}
]
}
D.
{
"name": "TargetAbility",
"skills": [
{
"actions":[
"ohos.want.action.sendData",
],
"entities":[
"entity.system.browsable",
],
"uris":[
{
"scheme": "http",
"host": "www.test.com",
"port": "8080",
"path": "path",
"autoVerify": ture
}
]
}
]
}
下面持续交付&持续部署描述哪个是正确的:
A.持续交付(CD,Continuous Delivery):指的是,频繁的将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。它强调的是,不管怎么更新,软件是随时随地可以交付的。
B.持续交付可以随时随地部署到生产环境
C.在持续交付实践中,要考虑处理故障回滚和紧急修复,以确保系统在出现问题时能够快速恢复和修复。
D.持续部署是将代码库中的任何更改都应该自动且快速地投入生产环境。持续部署等同于持续交付。
HarmonyOS应用开发者小张,正在利用DevEco Studio进行一款复杂应用的UI界面调试。小张了解到ArkUI Inspector是DevEco Studio内置的一项强大工具,能够显著提升UI调试效率。基于ArkUI Inspector的特性描述,下列哪些描述是正确的
A.
交互式组件选择:用户既可以在组件树视图中选择组件,使UI界面上对应组件高亮显示并展示其属性详情;也可以直接在UI布局显示界面上点击选择组件
B.
UI效果查看:开发者能够查看连接真机上运行的应用程序的UI显示效果,页面组件树结构,以及选中组件的属性信息
C.
性能监控:提供详细的UI渲染性能指标,帮助开发者识别布局瓶颈和渲染效率问题,从而优化应用性能
D.
UI快照管理:支持导出应用的UI界面为快照图片,并允许这些快照被导入回ArkUI Inspector中,便于离线分析或分享讨论UI设计方案
小华正在使用DevEco Studio开发一个复杂的HarmonyOS应用,他意识到代码中有一段逻辑被多次重复使用,为了优化代码结构和减少冗余,他决定将这段逻辑提取出来作为一个独立的方法。同时,他也注意到有些常用的硬编码值可以抽象为常量,以提高代码的可读性和维护性。小华希望利用DevEco Studio的代码重构功能来高效完成这些任务,通过以下哪些操作来实现代码重构,以提升编码效率
A.
选中需要重构的代码块,右键点击选择“Refactor”,然后选择“Extract Method”来将代码块转换为一个新的函数/方法
B.
为了简化复杂类型的多次书写,小华可以选择特定类型字面量,通过“Refactor”菜单下的“Extract Type Alias”来创建类型别名
C.
如果小华识别到一组相关的对象字面值可以抽象为一个接口,他可以直接通过“Refactor”菜单中的“Extract Interface”功能实现
D.
若需要将局部变量提升为类成员变量,小华只需简单选中变量名,右键选择“Refactor” -> “Promote Local Variable”
44项目需要同时进行应用和元服务的开发,并针对当前项目工程中的代码可以分别构建出应用和元服务的包,如何在DevEco Studio中设置不同的构建配置,达成这个目的
A. 在模块级别buld-pronlejson5定义两个target;将两个target的bundleType分别设置成app和atomicService
B. 修改工程级别的AppScope/appjson5中的bundeType值为atomicServce
C. 在工程级别build-profile.json5定义两个product,将两个product的bundleType分网设置戏app和atomicService
D. 修改工程级别的AppScope/appjson5中的bundleType值为app