Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
d7a60652
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
d7a60652
编写于
8月 30, 2023
作者:
O
openharmony_ci
提交者:
Gitee
8月 30, 2023
浏览文件
操作
浏览文件
下载
差异文件
!23368 元能力文档示例代码ArkTS规范整改
Merge pull request !23368 from liuliu/codecheck
上级
4b0b5216
81291591
变更
37
展开全部
隐藏空白更改
内联
并排
Showing
37 changed file
with
844 addition
and
780 deletion
+844
-780
zh-cn/application-dev/IDL/idl-guidelines.md
zh-cn/application-dev/IDL/idl-guidelines.md
+66
-65
zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md
.../application-models/ability-startup-with-implicit-want.md
+15
-15
zh-cn/application-dev/application-models/abilitystage.md
zh-cn/application-dev/application-models/abilitystage.md
+4
-2
zh-cn/application-dev/application-models/access-dataability.md
.../application-dev/application-models/access-dataability.md
+57
-7
zh-cn/application-dev/application-models/api-switch-overview.md
...application-dev/application-models/api-switch-overview.md
+10
-7
zh-cn/application-dev/application-models/application-context-fa.md
...lication-dev/application-models/application-context-fa.md
+28
-30
zh-cn/application-dev/application-models/application-context-stage.md
...ation-dev/application-models/application-context-stage.md
+32
-12
zh-cn/application-dev/application-models/bind-serviceability-from-stage.md
...-dev/application-models/bind-serviceability-from-stage.md
+21
-15
zh-cn/application-dev/application-models/bind-serviceextensionability-from-fa.md
...pplication-models/bind-serviceextensionability-from-fa.md
+14
-10
zh-cn/application-dev/application-models/connect-serviceability.md
...lication-dev/application-models/connect-serviceability.md
+10
-8
zh-cn/application-dev/application-models/create-dataability.md
.../application-dev/application-models/create-dataability.md
+46
-31
zh-cn/application-dev/application-models/create-pageability.md
.../application-dev/application-models/create-pageability.md
+13
-14
zh-cn/application-dev/application-models/create-serviceability.md
...plication-dev/application-models/create-serviceability.md
+11
-14
zh-cn/application-dev/application-models/driverextensionability.md
...lication-dev/application-models/driverextensionability.md
+11
-9
zh-cn/application-dev/application-models/hop-multi-device-collaboration.md
...-dev/application-models/hop-multi-device-collaboration.md
+1
-1
zh-cn/application-dev/application-models/inputmethodextentionability.md
...ion-dev/application-models/inputmethodextentionability.md
+7
-6
zh-cn/application-dev/application-models/itc-with-emitter.md
zh-cn/application-dev/application-models/itc-with-emitter.md
+8
-10
zh-cn/application-dev/application-models/itc-with-worker.md
zh-cn/application-dev/application-models/itc-with-worker.md
+4
-4
zh-cn/application-dev/application-models/mission-management-overview.md
...ion-dev/application-models/mission-management-overview.md
+13
-12
zh-cn/application-dev/application-models/mission-set-icon-name-for-task-snapshot.md
...ication-models/mission-set-icon-name-for-task-snapshot.md
+8
-3
zh-cn/application-dev/application-models/pageability-switch.md
.../application-dev/application-models/pageability-switch.md
+13
-11
zh-cn/application-dev/application-models/redirection-rules.md
...n/application-dev/application-models/redirection-rules.md
+1
-1
zh-cn/application-dev/application-models/serviceextensionability.md
...ication-dev/application-models/serviceextensionability.md
+57
-36
zh-cn/application-dev/application-models/start-local-pageability.md
...ication-dev/application-models/start-local-pageability.md
+7
-7
zh-cn/application-dev/application-models/start-page.md
zh-cn/application-dev/application-models/start-page.md
+76
-45
zh-cn/application-dev/application-models/start-pageability-from-stage.md
...on-dev/application-models/start-pageability-from-stage.md
+24
-14
zh-cn/application-dev/application-models/start-remote-pageability.md
...cation-dev/application-models/start-remote-pageability.md
+7
-7
zh-cn/application-dev/application-models/start-serviceability.md
...pplication-dev/application-models/start-serviceability.md
+5
-6
zh-cn/application-dev/application-models/start-uiability-from-fa.md
...ication-dev/application-models/start-uiability-from-fa.md
+30
-25
zh-cn/application-dev/application-models/subscribe-system-environment-variable-changes.md
...n-models/subscribe-system-environment-variable-changes.md
+20
-13
zh-cn/application-dev/application-models/uiability-data-sync-with-ui.md
...ion-dev/application-models/uiability-data-sync-with-ui.md
+6
-228
zh-cn/application-dev/application-models/uiability-intra-device-interaction.md
.../application-models/uiability-intra-device-interaction.md
+167
-84
zh-cn/application-dev/application-models/uiability-launch-type.md
...plication-dev/application-models/uiability-launch-type.md
+13
-6
zh-cn/application-dev/application-models/uiability-lifecycle.md
...application-dev/application-models/uiability-lifecycle.md
+18
-11
zh-cn/application-dev/application-models/uiability-usage.md
zh-cn/application-dev/application-models/uiability-usage.md
+9
-5
zh-cn/application-dev/application-models/want-overview.md
zh-cn/application-dev/application-models/want-overview.md
+6
-2
zh-cn/application-dev/application-models/windowextensionability.md
...lication-dev/application-models/windowextensionability.md
+6
-4
未找到文件。
zh-cn/application-dev/IDL/idl-guidelines.md
浏览文件 @
d7a60652
...
...
@@ -215,53 +215,47 @@ export default class IdlTestServiceStub extends rpc.RemoteObject implements IIdl
super
(
des
);
}
async
onRemoteMessageRequest
(
code
:
number
,
data
,
reply
,
option
):
Promise
<
boolean
>
{
async
onRemoteMessageRequest
(
code
:
number
,
data
:
rpc
.
MessageSequence
,
reply
:
rpc
.
MessageSequence
,
option
:
rpc
.
MessageOption
):
Promise
<
boolean
>
{
console
.
log
(
"
onRemoteMessageRequest called, code =
"
+
code
);
switch
(
code
)
{
case
IdlTestServiceStub
.
COMMAND_TEST_INT_TRANSACTION
:
{
let
_data
=
data
.
readInt
();
this
.
testIntTransaction
(
_data
,
(
errCode
,
returnValue
)
=>
{
reply
.
writeInt
(
errCode
);
if
(
errCode
==
0
)
{
reply
.
writeInt
(
returnValue
);
}
});
return
true
;
}
case
IdlTestServiceStub
.
COMMAND_TEST_STRING_TRANSACTION
:
{
let
_data
=
data
.
readString
();
this
.
testStringTransaction
(
_data
,
(
errCode
)
=>
{
reply
.
writeInt
(
errCode
);
});
return
true
;
}
case
IdlTestServiceStub
.
COMMAND_TEST_MAP_TRANSACTION
:
{
let
_data
=
new
Map
();
let
_dataSize
=
data
.
readInt
();
for
(
let
i
=
0
;
i
<
_dataSize
;
++
i
)
{
let
key
=
data
.
readInt
();
let
value
=
data
.
readInt
();
_data
.
set
(
key
,
value
);
if
(
code
==
IdlTestServiceStub
.
COMMAND_TEST_INT_TRANSACTION
)
{
let
_data
=
data
.
readInt
();
this
.
testIntTransaction
(
_data
,
(
errCode
:
number
,
returnValue
:
number
)
=>
{
reply
.
writeInt
(
errCode
);
if
(
errCode
==
0
)
{
reply
.
writeInt
(
returnValue
);
}
this
.
testMapTransaction
(
_data
,
(
errCode
)
=>
{
reply
.
writeInt
(
errCode
);
});
return
true
;
}
case
IdlTestServiceStub
.
COMMAND_TEST_ARRAY_TRANSACTION
:
{
let
_data
=
data
.
readStringArray
();
this
.
testArrayTransaction
(
_data
,
(
errCode
,
returnValue
)
=>
{
reply
.
writeInt
(
errCode
);
if
(
errCode
==
0
)
{
reply
.
writeInt
(
returnValue
);
}
});
return
true
;
}
default
:
{
console
.
log
(
"
invalid request code
"
+
code
);
break
;
});
return
true
;
}
else
if
(
code
==
IdlTestServiceStub
.
COMMAND_TEST_STRING_TRANSACTION
)
{
let
_data
=
data
.
readString
();
this
.
testStringTransaction
(
_data
,
(
errCode
:
number
)
=>
{
reply
.
writeInt
(
errCode
);
});
return
true
;
}
else
if
(
code
==
IdlTestServiceStub
.
COMMAND_TEST_MAP_TRANSACTION
)
{
let
_data
:
Map
<
number
,
number
>
=
new
Map
();
let
_dataSize
=
data
.
readInt
();
for
(
let
i
=
0
;
i
<
_dataSize
;
++
i
)
{
let
key
=
data
.
readInt
();
let
value
=
data
.
readInt
();
_data
.
set
(
key
,
value
);
}
this
.
testMapTransaction
(
_data
,
(
errCode
:
number
)
=>
{
reply
.
writeInt
(
errCode
);
});
return
true
;
}
else
if
(
code
==
IdlTestServiceStub
.
COMMAND_TEST_ARRAY_TRANSACTION
)
{
let
_data
=
data
.
readStringArray
();
this
.
testArrayTransaction
(
_data
,
(
errCode
:
number
,
returnValue
:
number
)
=>
{
reply
.
writeInt
(
errCode
);
if
(
errCode
==
0
)
{
reply
.
writeInt
(
returnValue
);
}
});
return
true
;
}
else
{
console
.
log
(
"
invalid request code
"
+
code
);
}
return
false
;
}
...
...
@@ -312,17 +306,20 @@ class IdlTestImp extends IdlTestServiceStub {
在服务实现接口后,需要向客户端公开该接口,以便客户端进程绑定。如果开发者的服务要公开该接口,请扩展Ability并实现onConnect()从而返回IRemoteObject,以便客户端能与服务进程交互。服务端向客户端公开IRemoteAbility接口的代码示例如下:
```
ts
export
default
{
import
Want
from
'
@ohos.app.ability.Want
'
;
import
rpc
from
"
@ohos.rpc
"
;
export
default
class
ServiceAbility
{
onStart
()
{
console
.
info
(
'
ServiceAbility onStart
'
);
}
,
}
;
onStop
()
{
console
.
info
(
'
ServiceAbility onStop
'
);
}
,
onCommand
(
want
,
startId
)
{
}
;
onCommand
(
want
:
Want
,
startId
:
number
)
{
console
.
info
(
'
ServiceAbility onCommand
'
);
}
,
onConnect
(
want
)
{
}
;
onConnect
(
want
:
Want
)
{
console
.
info
(
'
ServiceAbility onConnect
'
);
try
{
console
.
log
(
'
ServiceAbility want:
'
+
typeof
(
want
));
...
...
@@ -332,9 +329,9 @@ export default {
console
.
log
(
'
ServiceAbility error:
'
+
err
)
}
console
.
info
(
'
ServiceAbility onConnect end
'
);
return
new
IdlTestImp
(
'
connect
'
);
}
,
onDisconnect
(
want
)
{
return
new
IdlTestImp
(
'
connect
'
)
as
rpc
.
RemoteObject
;
}
;
onDisconnect
(
want
:
Want
)
{
console
.
info
(
'
ServiceAbility onDisconnect
'
);
console
.
info
(
'
ServiceAbility want:
'
+
JSON
.
stringify
(
want
));
}
...
...
@@ -346,6 +343,8 @@ export default {
客户端调用connectServiceExtensionAbility()以连接服务时,客户端的onAbilityConnectDone中的onConnect回调会接收服务的onConnect()方法返回的IRemoteObject实例。由于客户端和服务在不同应用内,所以客户端应用的目录内必须包含.idl文件(SDK工具会自动生成Proxy代理类)的副本。客户端的onAbilityConnectDone中的onConnect回调会接收服务的onConnect()方法返回的IRemoteObject实例,使用IRemoteObject创建IdlTestServiceProxy类的实例对象testProxy,然后调用相关IPC方法。示例代码如下:
```
ts
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
IdlTestServiceProxy
from
'
./idl_test_service_proxy
'
function
callbackTestIntTransaction
(
result
:
number
,
ret
:
number
):
void
{
...
...
@@ -372,10 +371,10 @@ function callbackTestArrayTransaction(result: number, ret: number): void {
}
}
var
onAbilityConnectDone
=
{
onConnect
:
function
(
elementName
,
proxy
)
{
let
testProxy
=
new
IdlTestServiceProxy
(
proxy
);
let
testMap
=
new
Map
();
let
onAbilityConnectDone
:
common
.
ConnectOptions
=
{
onConnect
:
(
elementName
,
proxy
)
=>
{
let
testProxy
:
IdlTestServiceProxy
=
new
IdlTestServiceProxy
(
proxy
);
let
testMap
:
Map
<
number
,
number
>
=
new
Map
();
testMap
.
set
(
1
,
1
);
testMap
.
set
(
1
,
2
);
testProxy
.
testIntTransaction
(
123
,
callbackTestIntTransaction
);
...
...
@@ -383,21 +382,23 @@ var onAbilityConnectDone = {
testProxy
.
testMapTransaction
(
testMap
,
callbackTestMapTransaction
);
testProxy
.
testArrayTransaction
([
'
1
'
,
'
2
'
],
callbackTestMapTransaction
);
},
onDisconnect
:
function
(
elementName
)
{
onDisconnect
:
(
elementName
)
=>
{
console
.
log
(
'
onDisconnectService onDisconnect
'
);
},
onFailed
:
function
(
code
)
{
onFailed
:
(
code
)
=>
{
console
.
log
(
'
onDisconnectService onFailed
'
);
}
};
let
context
:
common
.
UIAbilityContext
=
this
.
context
;
function
connectAbility
():
void
{
let
want
=
{
let
want
:
Want
=
{
bundleName
:
'
com.example.myapplicationidl
'
,
abilityName
:
'
com.example.myapplicationidl.ServiceAbility
'
};
let
connectionId
=
-
1
;
connectionId
=
this
.
context
.
connectServiceExtensionAbility
(
want
,
onAbilityConnectDone
);
connectionId
=
context
.
connectServiceExtensionAbility
(
want
,
onAbilityConnectDone
);
}
...
...
@@ -427,18 +428,18 @@ export default class MySequenceable {
getString
()
:
string
{
return
this
.
str
;
}
marshalling
(
messageParcel
)
{
marshalling
(
messageParcel
:
rpc
.
MessageSequence
)
{
messageParcel
.
writeInt
(
this
.
num
);
messageParcel
.
writeString
(
this
.
str
);
return
true
;
}
unmarshalling
(
messageParcel
)
{
unmarshalling
(
messageParcel
:
rpc
.
MessageSequence
)
{
this
.
num
=
messageParcel
.
readInt
();
this
.
str
=
messageParcel
.
readString
();
return
true
;
}
private
num
;
private
str
;
private
num
:
number
;
private
str
:
string
;
}
```
...
...
zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md
浏览文件 @
d7a60652
...
...
@@ -47,23 +47,23 @@
```
ts
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
function
implicitStartAbility
()
{
let
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
let
wantInfo
=
{
// uncomment line below if wish to implicitly query only in the specific bundle.
// bundleName: 'com.example.myapplication',
'
action
'
:
'
ohos.want.action.viewData
'
,
// entities can be omitted.
'
entities
'
:
[
'
entity.system.browsable
'
],
'
uri
'
:
'
https://www.test.com:8080/query/student
'
}
context
.
startAbility
(
wantInfo
).
then
(()
=>
{
...
}).
catch
((
err
)
=>
{
...
})
let
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
let
wantInfo
:
Want
=
{
// uncomment line below if wish to implicitly query only in the specific bundle.
// bundleName: 'com.example.myapplication',
'
action
'
:
'
ohos.want.action.viewData
'
,
// entities can be omitted.
'
entities
'
:
[
'
entity.system.browsable
'
],
'
uri
'
:
'
https://www.test.com:8080/query/student
'
}
context
.
startAbility
(
wantInfo
).
then
(()
=>
{
// ...
}).
catch
((
err
:
BusinessError
)
=>
{
// ...
})
```
匹配过程分析:
...
...
zh-cn/application-dev/application-models/abilitystage.md
浏览文件 @
d7a60652
...
...
@@ -18,12 +18,13 @@ DevEco Studio默认工程中未自动生成AbilityStage,如需要使用Ability
```
ts
import
AbilityStage
from
'
@ohos.app.ability.AbilityStage
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
MyAbilityStage
extends
AbilityStage
{
onCreate
()
{
// 应用的HAP在首次加载的时,为该Module初始化操作
}
onAcceptWant
(
want
)
{
onAcceptWant
(
want
:
Want
)
{
// 仅specified模式下触发
return
"
MyAbilityStage
"
;
}
...
...
@@ -58,9 +59,10 @@ DevEco Studio默认工程中未自动生成AbilityStage,如需要使用Ability
```
ts
import
AbilityStage
from
'
@ohos.app.ability.AbilityStage
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
export
default
class
MyAbilityStage
extends
AbilityStage
{
onMemoryLevel
(
level
)
{
onMemoryLevel
(
level
:
AbilityConstant
.
MemoryLevel
)
{
// 根据系统可用内存的变化情况,释放不必要的内存
}
}
...
...
zh-cn/application-dev/application-models/access-dataability.md
浏览文件 @
d7a60652
...
...
@@ -32,10 +32,13 @@
2.
构建数据库相关的RDB数据。
```
ts
let
valuesBucket
=
{
"
name
"
:
"
gaolu
"
}
import
ohos_data_ability
from
'
@ohos.data.dataAbility
'
import
rdb
from
'
@ohos.data.rdb
'
let
valuesBucket
:
rdb
.
ValuesBucket
=
{
"
name
"
:
"
gaolu
"
}
let
da
=
new
ohos_data_ability
.
DataAbilityPredicates
()
let
valArray
=
new
Array
(
"
value1
"
);
let
cars
=
new
Array
({
"
batchInsert1
"
:
"
value1
"
,});
let
valArray
=
new
Array
(
"
value1
"
);
let
cars
=
new
Array
({
"
batchInsert1
"
:
"
value1
"
,}
as
rdb
.
ValuesBucket
);
```
注:关于DataAbilityPredicates的详细内容,请参考
[
DataAbility谓词
](
../reference/apis/js-apis-data-ability.md
)
。
...
...
@@ -43,11 +46,13 @@
3.
调用insert方法向指定的DataAbility子模块插入数据。
```
ts
import
{
BusinessError
}
from
'
@ohos.base
'
;
// callback方式调用:
DAHelper
.
insert
(
urivar
,
valuesBucket
,
(
error
,
data
)
=>
{
(
error
:
BusinessError
,
data
:
number
)
=>
{
console
.
info
(
"
DAHelper insert result:
"
+
data
)
}
);
...
...
@@ -55,10 +60,15 @@
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
import
{
BusinessError
}
from
'
@ohos.base
'
;
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// promise方式调用(await需要在async方法中使用):
let
datainsert
=
await
DAHelper
.
insert
(
urivar
,
valuesBucket
).
then
((
data
)
=>
{
console
.
info
(
"
insert success.
"
);
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
"
insert failed.
"
);
});
```
...
...
@@ -66,6 +76,10 @@
4.
调用delete方法删除DataAbility子模块中指定的数据。
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// callback方式调用:
DAHelper
.
delete
(
urivar
,
...
...
@@ -78,6 +92,10 @@
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// promise方式调用(await需要在async方法中使用):
let
datadelete
=
await
DAHelper
.
delete
(
urivar
,
...
...
@@ -88,6 +106,10 @@
5.
调用update方法更新指定DataAbility子模块中的数据。
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// callback方式调用:
DAHelper
.
update
(
urivar
,
...
...
@@ -101,6 +123,10 @@
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// promise方式调用(await需要在async方法中使用):
let
dataupdate
=
await
DAHelper
.
update
(
urivar
,
...
...
@@ -112,6 +138,10 @@
6.
调用query方法在指定的DataAbility子模块中查找数据。
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// callback方式调用:
DAHelper
.
query
(
urivar
,
...
...
@@ -125,6 +155,10 @@
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// promise方式调用(await需要在async方法中使用):
let
dataquery
=
await
DAHelper
.
query
(
urivar
,
...
...
@@ -136,6 +170,10 @@
7.
调用batchInsert方法向指定的DataAbility子模块批量插入数据。
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// callback方式调用:
DAHelper
.
batchInsert
(
urivar
,
...
...
@@ -148,6 +186,10 @@
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// promise方式调用(await需要在async方法中使用):
let
databatchInsert
=
await
DAHelper
.
batchInsert
(
urivar
,
...
...
@@ -158,6 +200,10 @@
8.
调用executeBatch方法向指定的DataAbility子模块进行数据的批量处理。
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// callback方式调用:
DAHelper
.
executeBatch
(
urivar
,
...
...
@@ -168,7 +214,7 @@
valuesBucket
:
{
"
executeBatch
"
:
"
value1
"
,},
predicates
:
da
,
expectedCount
:
0
,
predicatesBackReferences
:
null
,
predicatesBackReferences
:
undefined
,
interrupted
:
true
,
}
],
...
...
@@ -180,6 +226,10 @@
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
let
urivar
=
"
dataability:///com.ix.DataAbility
"
let
DAHelper
=
featureAbility
.
acquireDataAbilityHelper
(
urivar
);
// promise方式调用(await需要在async方法中使用):
let
dataexecuteBatch
=
await
DAHelper
.
executeBatch
(
urivar
,
...
...
@@ -193,7 +243,7 @@
},
predicates
:
da
,
expectedCount
:
0
,
predicatesBackReferences
:
null
,
predicatesBackReferences
:
undefined
,
interrupted
:
true
,
}
]
...
...
zh-cn/application-dev/application-models/api-switch-overview.md
浏览文件 @
d7a60652
...
...
@@ -11,15 +11,16 @@ startAbility接口由FA模型切换到Stage模型的示例:
```
ts
import
fa
from
'
@ohos.ability.featureAbility
'
;
let
parameter
=
{
import
{
BusinessError
}
from
'
@ohos.base
'
;
fa
.
startAbility
({
"
want
"
:
{
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
com.example.myapplication.EntryAbility
"
}
}
fa
.
startAbility
(
parameter
).
then
((
data
)
=>
{
}).
then
((
data
)
=>
{
console
.
info
(
'
startAbility success
'
);
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
'
startAbility failed.
'
);
})
```
...
...
@@ -27,15 +28,17 @@ startAbility接口由FA模型切换到Stage模型的示例:
-
Stage示例示例
```
ts
import
Want
from
'
@ohos.app.ability.Want
'
;
// context为Ability对象的成员,在非Ability对象内部调用需要
// 将Context对象传递过去
let
wantInfo
=
{
let
wantInfo
:
Want
=
{
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
EntryAbility
"
};
this
.
context
.
startAbility
(
wantInfo
).
then
((
data
)
=>
{
this
.
context
.
startAbility
(
wantInfo
).
then
(()
=>
{
console
.
info
(
'
startAbility success.
'
);
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
'
startAbility failed.
'
);
})
```
zh-cn/application-dev/application-models/application-context-fa.md
浏览文件 @
d7a60652
...
...
@@ -17,6 +17,8 @@ import featureAbility from "@ohos.ability.featureAbility";
```
ts
import
featureAbility
from
"
@ohos.ability.featureAbility
"
;
let
context
=
featureAbility
.
getContext
()
```
...
...
@@ -28,39 +30,35 @@ let context = featureAbility.getContext()
1.
查询Bundle信息。
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
export
default
{
onCreate
()
{
// 获取context并调用相关方法
let
context
=
featureAbility
.
getContext
();
context
.
getBundleName
((
data
,
bundleName
)
=>
{
console
.
info
(
"
ability bundleName:
"
+
bundleName
)
});
console
.
info
(
'
Application onCreate
'
)
},
onDestroy
()
{
console
.
info
(
'
Application onDestroy
'
)
},
}
import
featureAbility
from
'
@ohos.ability.featureAbility
'
export
function
onCreate
()
{
// 获取context并调用相关方法
let
context
=
featureAbility
.
getContext
();
context
.
getBundleName
((
data
,
bundleName
)
=>
{
console
.
info
(
"
ability bundleName:
"
+
bundleName
)
});
console
.
info
(
'
Application onCreate
'
)
}
export
function
onDestroy
()
{
console
.
info
(
'
Application onDestroy
'
)
}
```
2.
设置当前featureAbility的显示方向。
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
import
bundleManager
from
'
@ohos.bundle.bundleManager
'
;
export
default
{
onCreate
()
{
// 获取context并调用相关方法
let
context
=
featureAbility
.
getContext
();
context
.
setDisplayOrientation
(
bundleManager
.
DisplayOrientation
.
LANDSCAPE
).
then
(()
=>
{
console
.
info
(
"
Set display orientation.
"
)
})
console
.
info
(
'
Application onCreate
'
)
},
onDestroy
()
{
console
.
info
(
'
Application onDestroy
'
)
},
}
import
featureAbility
from
'
@ohos.ability.featureAbility
'
import
bundleManager
from
'
@ohos.bundle.bundleManager
'
;
export
function
onCreate
()
{
// 获取context并调用相关方法
let
context
=
featureAbility
.
getContext
();
context
.
setDisplayOrientation
(
bundleManager
.
DisplayOrientation
.
LANDSCAPE
).
then
(()
=>
{
console
.
info
(
"
Set display orientation.
"
)
})
console
.
info
(
'
Application onCreate
'
)
}
export
function
onDestroy
()
{
console
.
info
(
'
Application onDestroy
'
)
}
```
zh-cn/application-dev/application-models/application-context-stage.md
浏览文件 @
d7a60652
...
...
@@ -16,8 +16,10 @@
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
let
uiAbilityContext
=
this
.
context
;
...
}
...
...
@@ -31,8 +33,9 @@
```
ts
import
ServiceExtensionAbility
from
'
@ohos.app.ability.ServiceExtensionAbility
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
MyService
extends
ServiceExtensionAbility
{
onCreate
(
want
)
{
onCreate
(
want
:
Want
)
{
let
serviceExtensionContext
=
this
.
context
;
...
}
...
...
@@ -53,8 +56,10 @@
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
let
applicationContext
=
this
.
context
.
getApplicationContext
();
...
}
...
...
@@ -96,9 +101,11 @@
```ts
import UIAbility from '@ohos.app.ability.UIAbility';
import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import Want from '@ohos.app.ability.Want';
export default class EntryAbility extends UIAbility {
onCreate(want
, l
aunchParam) {
onCreate(want
: Want, launchParam: AbilityConstant.L
aunchParam) {
let applicationContext = this.context.getApplicationContext();
let cacheDir = applicationContext.cacheDir;
let tempDir = applicationContext.tempDir;
...
...
@@ -131,9 +138,11 @@
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
let
cacheDir
=
this
.
context
.
cacheDir
;
let
tempDir
=
this
.
context
.
tempDir
;
let
filesDir
=
this
.
context
.
filesDir
;
...
...
@@ -167,9 +176,11 @@
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
contextConstant
from
'
@ohos.app.ability.contextConstant
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
// 存储普通信息前,切换到EL1设备级加密
if
(
this
.
context
.
area
===
contextConstant
.
AreaMode
.
EL2
)
{
// 获取area
this
.
context
.
area
=
contextConstant
.
AreaMode
.
EL1
;
// 修改area
...
...
@@ -203,9 +214,11 @@ export default class EntryAbility extends UIAbility {
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
let
bundleName2
=
'
com.example.application
'
;
let
context2
=
this
.
context
.
createBundleContext
(
bundleName2
);
let
label2
=
context2
.
applicationInfo
.
label
;
...
...
@@ -225,9 +238,11 @@ export default class EntryAbility extends UIAbility {
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
let
bundleName2
=
'
com.example.application
'
;
let
moduleName2
=
'
module1
'
;
let
context2
=
this
.
context
.
createModuleContext
(
bundleName2
,
moduleName2
);
...
...
@@ -240,9 +255,11 @@ export default class EntryAbility extends UIAbility {
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
let
moduleName2
=
'
module1
'
;
let
context2
=
this
.
context
.
createModuleContext
(
moduleName2
);
...
...
...
@@ -260,17 +277,20 @@ export default class EntryAbility extends UIAbility {
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
AbilityLifecycleCallback
from
'
@ohos.app.ability.AbilityLifecycleCallback
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
window
from
'
@ohos.window
'
;
const
TAG
:
string
=
'
[Example].[Entry].[EntryAbility]
'
;
export
default
class
EntryAbility
extends
UIAbility
{
// 定义生命周期ID
lifecycleId
:
number
;
lifecycleId
:
number
=
-
1
;
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
// 定义生命周期回调对象
let
abilityLifecycleCallback
=
{
let
abilityLifecycleCallback
:
AbilityLifecycleCallback
=
{
// 当UIAbility创建时被调用
onAbilityCreate
(
uiAbility
)
{
console
.
info
(
TAG
,
`onAbilityCreate uiAbility.launchWant:
${
JSON
.
stringify
(
uiAbility
.
launchWant
)}
`
);
...
...
zh-cn/application-dev/application-models/bind-serviceability-from-stage.md
浏览文件 @
d7a60652
...
...
@@ -11,29 +11,33 @@ UIAbility关联访问ServiceAbility和UIAbility关联访问ServiceExtensionAbili
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
window
from
'
@ohos.window
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
console
.
info
(
"
EntryAbility onCreate
"
);
}
onDestroy
()
{
console
.
info
(
"
EntryAbility onDestroy
"
)
}
onWindowStageCreate
(
windowStage
)
{
onWindowStageCreate
(
windowStage
:
window
.
WindowStage
)
{
console
.
info
(
"
EntryAbility onWindowStageCreate
"
)
let
want
=
{
let
want
:
Want
=
{
bundleName
:
"
com.ohos.fa
"
,
abilityName
:
"
ServiceAbility
"
,
};
let
options
=
{
onConnect
:
function
(
elementName
,
proxy
)
{
let
options
:
common
.
ConnectOptions
=
{
onConnect
:
(
elementName
,
proxy
)
=>
{
console
.
info
(
"
onConnect called.
"
);
},
onDisconnect
:
function
(
elementName
)
{
onDisconnect
:
(
elementName
)
=>
{
console
.
info
(
"
onDisconnect called.
"
);
},
onFailed
:
function
(
code
)
{
onFailed
:
(
code
)
=>
{
console
.
info
(
"
onFailed code is:
"
+
code
);
}
};
...
...
@@ -58,29 +62,31 @@ export default class EntryAbility extends UIAbility {
```
ts
import
Extension
from
'
@ohos.app.ability.ServiceExtensionAbility
'
import
Extension
from
'
@ohos.app.ability.ServiceExtensionAbility
'
;
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
ServiceExtension
extends
Extension
{
onCreate
(
want
)
{
onCreate
(
want
:
Want
)
{
console
.
info
(
"
ServiceExtension onCreate
"
)
}
onDestroy
()
{
console
.
info
(
"
ServiceExtension onDestroy
"
)
}
onRequest
(
want
,
startId
)
{
onRequest
(
want
:
Want
,
startId
:
number
)
{
console
.
info
(
"
ServiceExtension onRequest
"
)
let
wantFA
=
{
let
wantFA
:
Want
=
{
bundleName
:
"
com.ohos.fa
"
,
abilityName
:
"
ServiceAbility
"
,
};
let
options
=
{
onConnect
:
function
(
elementName
,
proxy
)
{
let
options
:
common
.
ConnectOptions
=
{
onConnect
:
(
elementName
,
proxy
)
=>
{
console
.
info
(
"
onConnect called.
"
);
},
onDisconnect
:
function
(
elementName
)
{
onDisconnect
:
(
elementName
)
=>
{
console
.
info
(
"
onDisconnect called.
"
);
},
onFailed
:
function
(
code
)
{
onFailed
:
(
code
)
=>
{
console
.
info
(
"
onFailed code is:
"
+
code
);
}
};
...
...
zh-cn/application-dev/application-models/bind-serviceextensionability-from-fa.md
浏览文件 @
d7a60652
...
...
@@ -11,20 +11,22 @@ PageAbility关联访问ServiceExtensionAbility和PageAbility关联访问ServiceA
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
let
want
=
{
let
want
:
Want
=
{
bundleName
:
"
com.ohos.stage
"
,
abilityName
:
"
com.ohos.stage.ServiceExtensionAbility
"
};
let
faConnect
=
{
onConnect
:
function
(
elementName
,
proxy
)
{
let
faConnect
:
common
.
ConnectOptions
=
{
onConnect
:
(
elementName
,
proxy
)
=>
{
console
.
info
(
"
Faconnection onConnect called.
"
);
},
onDisconnect
:
function
(
elementName
)
{
onDisconnect
:
(
elementName
)
=>
{
console
.
info
(
"
Faconnection onDisconnect called.
"
);
},
onFailed
:
function
(
code
)
{
onFailed
:
(
code
)
=>
{
console
.
info
(
"
Faconnection onFailed code is:
"
+
code
);
}
};
...
...
@@ -39,20 +41,22 @@ ServiceAbility/DataAbility关联访问ServiceExtensionAbility和ServiceAbility/D
```
ts
import
particleAbility
from
'
@ohos.ability.particleAbility
'
;
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
let
want
=
{
let
want
:
Want
=
{
bundleName
:
"
com.ohos.stage
"
,
abilityName
:
"
com.ohos.stage.ServiceExtensionAbility
"
};
let
faConnect
=
{
onConnect
:
function
(
elementName
,
proxy
)
{
let
faConnect
:
common
.
ConnectOptions
=
{
onConnect
:
(
elementName
,
proxy
)
=>
{
console
.
info
(
"
Faconnection onConnect called.
"
);
},
onDisconnect
:
function
(
elementName
)
{
onDisconnect
:
(
elementName
)
=>
{
console
.
info
(
"
Faconnection onDisconnect called.
"
);
},
onFailed
:
function
(
code
)
{
onFailed
:
(
code
)
=>
{
console
.
info
(
"
Faconnection onFailed code is:
"
+
code
);
}
};
...
...
zh-cn/application-dev/application-models/connect-serviceability.md
浏览文件 @
d7a60652
...
...
@@ -19,9 +19,11 @@ PageAbility创建连接本地ServiceAbility回调实例的代码以及连接本
import
rpc
from
"
@ohos.rpc
"
import
promptAction
from
'
@ohos.promptAction
'
import
featureAbility
from
'
@ohos.ability.featureAbility
'
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
let
option
=
{
onConnect
:
function
onConnectCallback
(
element
,
proxy
)
{
let
option
:
common
.
ConnectOptions
=
{
onConnect
:
(
element
,
proxy
)
=>
{
console
.
info
(
`onConnectLocalService onConnectDone`
)
if
(
proxy
===
null
)
{
promptAction
.
showToast
({
...
...
@@ -38,21 +40,21 @@ let option = {
message
:
"
Connect service success
"
})
},
onDisconnect
:
function
onDisconnectCallback
(
element
)
{
onDisconnect
:
(
element
)
=>
{
console
.
info
(
`onConnectLocalService onDisconnectDone element:
${
element
}
`
)
promptAction
.
showToast
({
message
:
"
Disconnect service success
"
})
},
onFailed
:
function
onFailedCallback
(
code
)
{
onFailed
:
(
code
)
=>
{
console
.
info
(
`onConnectLocalService onFailed errCode:
${
code
}
`
)
promptAction
.
showToast
({
message
:
"
Connect local service onFailed
"
})
}
}
}
;
let
request
=
{
let
request
:
Want
=
{
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
com.example.myapplication.ServiceAbility
"
,
}
...
...
@@ -69,7 +71,7 @@ Service侧把自身的实例返回给调用侧的示例代码如下:
import
rpc
from
"
@ohos.rpc
"
class
FirstServiceAbilityStub
extends
rpc
.
RemoteObject
{
constructor
(
des
:
any
)
{
constructor
(
des
:
Object
)
{
if
(
typeof
des
===
'
string
'
)
{
super
(
des
)
}
else
{
...
...
@@ -77,7 +79,7 @@ class FirstServiceAbilityStub extends rpc.RemoteObject {
}
}
onRemoteRequest
(
code
:
number
,
data
:
any
,
reply
:
any
,
option
:
any
)
{
onRemoteRequest
(
code
:
number
,
data
:
rpc
.
MessageParcel
,
reply
:
rpc
.
MessageParcel
,
option
:
rpc
.
MessageOption
)
{
console
.
info
(
`onRemoteRequest called`
)
if
(
code
===
1
)
{
let
string
=
data
.
readString
()
...
...
zh-cn/application-dev/application-models/create-dataability.md
浏览文件 @
d7a60652
...
...
@@ -7,56 +7,71 @@
创建DataAbility的代码示例如下:
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
import
dataAbility
from
'
@ohos.data.dataAbility
'
import
relationalStore
from
'
@ohos.data.relationalStore
'
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
import
dataAbility
from
'
@ohos.data.dataAbility
'
;
import
relationalStore
from
'
@ohos.data.relationalStore
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
{
AsyncCallback
,
BusinessError
}
from
'
@ohos.base
'
;
import
rdb
from
'
@ohos.data.rdb
'
;
const
TABLE_NAME
=
'
book
'
const
STORE_CONFIG
=
{
name
:
'
book.db
'
,
securityLevel
:
1
}
const
STORE_CONFIG
:
relationalStore
.
StoreConfig
=
{
name
:
'
book.db
'
,
securityLevel
:
1
}
const
SQL_CREATE_TABLE
=
'
CREATE TABLE IF NOT EXISTS book(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, introduction TEXT NOT NULL)
'
let
rdbStore
:
relationalStore
.
RdbStore
=
undefined
let
rdbStore
:
relationalStore
.
RdbStore
|
undefined
=
undefined
export
default
{
onInitialized
(
abilityInfo
)
{
console
.
info
(
'
DataAbility onInitialized, abilityInfo:
'
+
abilityInfo
.
bundleName
)
export
default
class
DataAbility
{
onInitialized
(
want
:
Want
)
{
console
.
info
(
'
DataAbility onInitialized, abilityInfo:
'
+
want
.
bundleName
)
let
context
=
featureAbility
.
getContext
()
relationalStore
.
getRdbStore
(
context
,
STORE_CONFIG
,
(
err
,
store
)
=>
{
console
.
info
(
'
DataAbility getRdbStore callback
'
)
store
.
executeSql
(
SQL_CREATE_TABLE
,
[])
rdbStore
=
store
});
}
,
insert
(
uri
,
valueBucket
,
callback
)
{
}
;
insert
(
uri
:
string
,
valueBucket
:
rdb
.
ValuesBucket
,
callback
:
AsyncCallback
<
number
>
)
{
console
.
info
(
'
DataAbility insert start
'
)
rdbStore
.
insert
(
TABLE_NAME
,
valueBucket
,
callback
)
},
batchInsert
(
uri
,
valueBuckets
,
callback
)
{
if
(
rdbStore
)
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBucket
,
callback
)
}
};
batchInsert
(
uri
:
string
,
valueBuckets
:
Array
<
rdb
.
ValuesBucket
>
,
callback
:
AsyncCallback
<
number
>
)
{
console
.
info
(
'
DataAbility batch insert start
'
)
for
(
let
i
=
0
;
i
<
valueBuckets
.
length
;
i
++
)
{
console
.
info
(
'
DataAbility batch insert i=
'
+
i
)
if
(
i
<
valueBuckets
.
length
-
1
)
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBuckets
[
i
],
(
err
:
any
,
num
:
number
)
=>
{
console
.
info
(
'
DataAbility batch insert ret=
'
+
num
)
})
}
else
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBuckets
[
i
],
callback
)
if
(
rdbStore
)
{
for
(
let
i
=
0
;
i
<
valueBuckets
.
length
;
i
++
)
{
console
.
info
(
'
DataAbility batch insert i=
'
+
i
)
if
(
i
<
valueBuckets
.
length
-
1
)
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBuckets
[
i
],
(
err
:
BusinessError
,
num
:
number
)
=>
{
console
.
info
(
'
DataAbility batch insert ret=
'
+
num
)
})
}
else
{
rdbStore
.
insert
(
TABLE_NAME
,
valueBuckets
[
i
],
callback
)
}
}
}
},
query
(
uri
,
columns
,
predicates
,
callback
)
{
};
query
(
uri
:
string
,
columns
:
Array
<
string
>
,
predicates
:
dataAbility
.
DataAbilityPredicates
,
callback
:
AsyncCallback
<
relationalStore
.
ResultSet
>
)
{
console
.
info
(
'
DataAbility query start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
query
(
rdbPredicates
,
columns
,
callback
)
},
update
(
uri
,
valueBucket
,
predicates
,
callback
)
{
if
(
rdbStore
)
{
rdbStore
.
query
(
rdbPredicates
,
columns
,
callback
)
}
};
update
(
uri
:
string
,
valueBucket
:
rdb
.
ValuesBucket
,
predicates
:
dataAbility
.
DataAbilityPredicates
,
callback
:
AsyncCallback
<
number
>
)
{
console
.
info
(
'
DataAbilityupdate start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
update
(
valueBucket
,
rdbPredicates
,
callback
)
},
delete
(
uri
,
predicates
,
callback
)
{
if
(
rdbStore
)
{
rdbStore
.
update
(
valueBucket
,
rdbPredicates
,
callback
)
}
};
delete
(
uri
:
string
,
predicates
:
dataAbility
.
DataAbilityPredicates
,
callback
:
AsyncCallback
<
number
>
)
{
console
.
info
(
'
DataAbilitydelete start
'
)
let
rdbPredicates
=
dataAbility
.
createRdbPredicates
(
TABLE_NAME
,
predicates
)
rdbStore
.
delete
(
rdbPredicates
,
callback
)
}
if
(
rdbStore
)
{
rdbStore
.
delete
(
rdbPredicates
,
callback
)
}
};
};
```
zh-cn/application-dev/application-models/create-pageability.md
浏览文件 @
d7a60652
...
...
@@ -4,28 +4,28 @@
开发者需要重写app.js/app.ets中的生命周期回调函数,开发者通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会在app.js/app.ets中默认生成onCreate()和onDestroy()方法,其他方法需要开发者自行实现。接口说明参见前述章节,创建PageAbility示例如下:
```
ts
export
default
{
export
default
class
EntryAbility
{
onCreate
()
{
console
.
info
(
'
Application onCreate
'
)
}
,
}
;
onDestroy
()
{
console
.
info
(
'
Application onDestroy
'
)
}
,
}
;
onShow
()
{
console
.
info
(
'
Application onShow
'
)
}
,
}
;
onHide
()
{
console
.
info
(
'
Application onHide
'
)
}
,
}
;
onActive
()
{
console
.
info
(
'
Application onActive
'
)
}
,
}
;
onInactive
()
{
console
.
info
(
'
Application onInactive
'
)
}
,
}
;
onNewWant
()
{
console
.
info
(
'
Application onNewWant
'
)
}
,
}
;
}
```
...
...
@@ -84,14 +84,13 @@ import fs from '@ohos.file.fs';
try
{
console
.
info
(
'
Begin to getOrCreateDistributedDir
'
);
dir
=
await
featureAbility
.
getContext
().
getOrCreateDistributedDir
();
console
.
info
(
'
distribute dir is
'
+
dir
)
console
.
info
(
'
distribute dir is
'
+
dir
);
let
fd
:
number
;
let
path
=
dir
+
"
/a.txt
"
;
fd
=
fs
.
openSync
(
path
,
fs
.
OpenMode
.
READ_WRITE
).
fd
;
fs
.
close
(
fd
);
}
catch
(
error
)
{
console
.
error
(
'
getOrCreateDistributedDir failed with
'
+
error
);
}
let
fd
:
number
;
let
path
=
dir
+
"
/a.txt
"
;
fd
=
fs
.
openSync
(
path
,
fs
.
OpenMode
.
READ_WRITE
).
fd
;
fs
.
close
(
fd
);
})()
```
zh-cn/application-dev/application-models/create-serviceability.md
浏览文件 @
d7a60652
...
...
@@ -6,33 +6,30 @@
重写ServiceAbility的生命周期方法,添加其他Ability请求与ServiceAbility交互时的处理方法。
```
ts
import
Want
from
'
@ohos.app.ability.Want
'
;
import
rpc
from
"
@ohos.rpc
"
class
FirstServiceAbilityStub
extends
rpc
.
RemoteObject
{
constructor
(
des
:
any
)
{
if
(
typeof
des
===
'
string
'
)
{
super
(
des
)
}
else
{
return
}
constructor
(
des
:
string
)
{
super
(
des
);
}
}
export
default
{
export
default
class
ServiceAbility
{
onStart
()
{
console
.
info
(
'
ServiceAbility onStart
'
)
}
,
}
;
onStop
()
{
console
.
info
(
'
ServiceAbility onStop
'
)
}
,
onCommand
(
want
,
startId
)
{
}
;
onCommand
(
want
:
Want
,
startId
:
number
)
{
console
.
info
(
'
ServiceAbility onCommand
'
)
}
,
onConnect
(
want
)
{
}
;
onConnect
(
want
:
Want
)
{
console
.
info
(
'
ServiceAbility onConnect
'
+
want
)
return
new
FirstServiceAbilityStub
(
'
test
'
)
}
,
onDisconnect
(
want
)
{
}
;
onDisconnect
(
want
:
Want
)
{
console
.
info
(
'
ServiceAbility onDisconnect
'
+
want
)
}
}
...
...
zh-cn/application-dev/application-models/driverextensionability.md
浏览文件 @
d7a60652
...
...
@@ -27,17 +27,18 @@
const
REQUEST_CODE
=
99
;
class
StubTest
extends
rpc
.
RemoteObject
{
constructor
(
des
)
{
constructor
(
des
:
string
)
{
super
(
des
);
}
// 接收应用传递过来的消息处理,以及将处理的结果返回给应用
onRemoteMessageRequest
(
code
,
data
,
reply
,
option
)
{
onRemoteMessageRequest
(
code
:
number
,
data
:
rpc
.
MessageSequence
,
reply
:
rpc
.
MessageSequence
,
option
:
rpc
.
MessageOption
)
{
if
(
code
===
REQUEST_CODE
)
{
// 接收应用传递过来的数据
// 应用使用多次调用data.writeInt()写入多个数据时,驱动可以通过多次调用data.readInt()方法接收对应的数据
let
optFir
=
data
.
readInt
();
let
optSec
=
data
.
readInt
();
let
optFir
:
number
=
data
.
readInt
();
let
optSec
:
number
=
data
.
readInt
();
// 驱动将数据的处理结果返回给应用
// 示例中为接收了两个数据,并将两个数据的求和返回给应用
reply
.
writeInt
(
optFir
+
optSec
);
...
...
@@ -52,6 +53,7 @@
```
ts
import
DriverExtensionAbility
from
'
@ohos.app.ability.DriverExtensionAbility
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
rpc
from
'
@ohos.rpc
'
;
const
TAG
:
string
=
'
[Example].[Entry].[DriverExtAbility]
'
;
...
...
@@ -62,24 +64,24 @@
}
export
default
class
DriverExtAbility
extends
DriverExtensionAbility
{
onInit
(
want
)
{
onInit
(
want
:
Want
)
{
console
.
info
(
TAG
,
`onInit, want:
${
want
.
abilityName
}
`
);
}
onRelease
()
{
console
.
info
(
TAG
,
`onRelease
, want:
${
want
.
abilityName
}
`
);
console
.
info
(
TAG
,
`onRelease`
);
}
onConnect
(
want
)
{
onConnect
(
want
:
Want
)
{
console
.
info
(
TAG
,
`onConnect, want:
${
want
.
abilityName
}
`
);
return
new
StubTest
(
"
test
"
);
}
onDisconnect
(
want
)
{
onDisconnect
(
want
:
Want
)
{
console
.
info
(
TAG
,
`onDisconnect, want:
${
want
.
abilityName
}
`
);
}
onDump
()
{
onDump
(
params
:
Array
<
string
>
)
{
console
.
info
(
TAG
,
`onDump, params:`
+
JSON
.
stringify
(
params
));
return
[
'
params
'
];
}
...
...
zh-cn/application-dev/application-models/hop-multi-device-collaboration.md
浏览文件 @
d7a60652
...
...
@@ -67,7 +67,7 @@
console
.
error
(
"
createDeviceManager err:
"
+
JSON
.
stringify
(
err
));
}
}
function
getRemoteDeviceId
()
{
function
getRemoteDeviceId
()
:
string
|
undefined
{
if
(
typeof
dmClass
===
'
object
'
&&
dmClass
!==
null
)
{
let
list
=
dmClass
.
getAvailableDeviceListSync
();
if
(
typeof
(
list
)
===
'
undefined
'
||
typeof
(
list
.
length
)
===
'
undefined
'
)
{
...
...
zh-cn/application-dev/application-models/inputmethodextentionability.md
浏览文件 @
d7a60652
...
...
@@ -55,12 +55,13 @@
在InputMethodService.ts文件中,增加导入InputMethodExtensionAbility的依赖包,自定义类继承InputMethodExtensionAbility并加上需要的生命周期回调。
```
ts
import
Want
from
'
@ohos.app.ability.Want
'
;
import
InputMethodExtensionAbility
from
'
@ohos.InputMethodExtensionAbility
'
;
import
keyboardController
from
'
./model/KeyboardController
'
export
default
class
InputDemoService
extends
InputMethodExtensionAbility
{
onCreate
(
want
)
{
onCreate
(
want
:
Want
)
{
keyboardController
.
onCreate
(
this
.
context
);
// 初始化窗口并注册对输入法框架的事件监听
}
...
...
@@ -141,7 +142,7 @@
this
.
panel
=
inputPanel
;
if
(
this
.
panel
)
{
await
this
.
panel
.
resize
(
dWidth
,
keyHeight
);
await
this
.
panel
.
mo
b
eTo
(
0
,
nonBarPosition
);
await
this
.
panel
.
mo
v
eTo
(
0
,
nonBarPosition
);
await
this
.
panel
.
setUiContent
(
'
inputmethodextability/pages/Index
'
);
}
});
...
...
@@ -159,7 +160,7 @@
this
.
textInputClient
=
textInputClient
;
// 此为输入法客户端实例,由此调用输入法框架提供给输入法应用的功能接口
this
.
boardController
=
kbController
;
})
globalThis
.
input
Ability
.
on
(
'
inputStop
'
,
()
=>
{
inputMethod
Ability
.
on
(
'
inputStop
'
,
()
=>
{
this
.
onDestroy
();
// 销毁KeyboardController
});
}
...
...
@@ -277,14 +278,14 @@
// 数字键盘
@Component
struct numberMenu {
private numberList: sourceListType[]
private numberList: sourceListType[]
= numberSourceListData;
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceEvenly }) {
Flex({ justifyContent: FlexAlign.SpaceBetween }) {
ForEach(this.numberList, (item: sourceListType) => { // 数字键盘第一行
keyItem({ keyValue: item })
}, (item: sourceListType) => item.content);
}, (item: sourceListType)
: sourceListType
=> item.content);
}
.padding({ top: "2%" })
.width("96%")
...
...
@@ -333,7 +334,7 @@
5.
在工程Module对应的
[
module.json5配置文件
](
../quick-start/module-configuration-file.md
)
中注册InputMethodExtensionAbility,type标签需要设置为“inputMethod”,srcEntry标签表示当前InputMethodExtensionAbility组件所对应的代码路径。
```
ts
```
json
{
"module"
:
{
...
...
...
zh-cn/application-dev/application-models/itc-with-emitter.md
浏览文件 @
d7a60652
...
...
@@ -13,12 +13,12 @@ Emitter的开发步骤如下:
import
emitter
from
"
@ohos.events.emitter
"
;
// 定义一个eventId为1的事件
let
event
=
{
let
event
:
emitter
.
InnerEvent
=
{
eventId
:
1
};
// 收到eventId为1的事件后执行该回调
let
callback
=
(
eventData
)
=>
{
let
callback
=
(
eventData
:
emitter
.
EventData
)
=>
{
console
.
info
(
'
event callback
'
);
};
...
...
@@ -32,18 +32,16 @@ Emitter的开发步骤如下:
import
emitter
from
"
@ohos.events.emitter
"
;
// 定义一个eventId为1的事件,事件优先级为Low
let
event
=
{
let
event
:
emitter
.
InnerEvent
=
{
eventId
:
1
,
priority
:
emitter
.
EventPriority
.
LOW
};
let
eventData
=
{
data
:
{
"
content
"
:
"
c
"
,
"
id
"
:
1
,
"
isEmpty
"
:
false
,
}
};
let
data
=
new
Map
<
string
,
Object
>
();
data
.
set
(
"
content
"
,
"
c
"
);
data
.
set
(
"
id
"
,
1
);
data
.
set
(
"
isEmpty
"
,
false
);
let
eventData
:
emitter
.
EventData
=
{
data
};
// 发送eventId为1的事件,事件内容为eventData
emitter
.
emit
(
event
,
eventData
);
...
...
zh-cn/application-dev/application-models/itc-with-worker.md
浏览文件 @
d7a60652
...
...
@@ -9,7 +9,7 @@ Worker的开发步骤如下:
1.
在工程的
[
模块级build-profile.json5
](
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-building-configuration-0000001218440654#section6887184182020
)
文件的buildOption属性中添加配置信息。
```
ts
```
json
"buildOption"
:
{
"sourceOption"
:
{
"workers"
:
[
...
...
@@ -27,7 +27,7 @@ Worker的开发步骤如下:
let
parent
=
worker
.
workerPort
;
// 处理来自主线程的消息
parent
.
onmessage
=
function
(
message
)
{
parent
.
onmessage
=
(
message
)
=>
{
console
.
info
(
"
onmessage:
"
+
message
)
// 发送消息到主线程
parent
.
postMessage
(
"
message from worker thread.
"
)
...
...
@@ -46,7 +46,7 @@ Worker的开发步骤如下:
wk.postMessage("message from main thread.")
// 处理来自worker线程的消息
wk.onmessage =
function(message)
{
wk.onmessage =
(message) =>
{
console.info("message from worker: " + message)
// 根据业务按需停止worker线程
...
...
@@ -65,7 +65,7 @@ Worker的开发步骤如下:
wk.postMessage("message from main thread.")
// 处理来自worker线程的消息
wk.onmessage =
function(message)
{
wk.onmessage =
(message) =>
{
console.info("message from worker: " + message)
// 根据业务按需停止worker线程
...
...
zh-cn/application-dev/application-models/mission-management-overview.md
浏览文件 @
d7a60652
...
...
@@ -36,34 +36,35 @@
```
ts
import
missionManager
from
'
@ohos.app.ability.missionManager
'
import
{
BusinessError
}
from
'
@ohos.base
'
;
let
listener
=
{
let
listener
:
missionManager
.
MissionListener
=
{
// 任务创建
onMissionCreated
:
function
(
mission
)
{
onMissionCreated
:
(
mission
)
=>
{
console
.
info
(
"
--------onMissionCreated-------
"
)
},
// 任务销毁
onMissionDestroyed
:
function
(
mission
)
{
onMissionDestroyed
:
(
mission
)
=>
{
console
.
info
(
"
--------onMissionDestroyed-------
"
)
},
// 任务快照变化
onMissionSnapshotChanged
:
function
(
mission
)
{
onMissionSnapshotChanged
:
(
mission
)
=>
{
console
.
info
(
"
--------onMissionSnapshotChanged-------
"
)
},
// 任务被移动到前台
onMissionMovedToFront
:
function
(
mission
)
{
onMissionMovedToFront
:
(
mission
)
=>
{
console
.
info
(
"
--------onMissionMovedToFront-------
"
)
},
// 任务图标变化
onMissionIconUpdated
:
function
(
mission
,
icon
)
{
onMissionIconUpdated
:
(
mission
,
icon
)
=>
{
console
.
info
(
"
--------onMissionIconUpdated-------
"
)
},
// 任务名称变化
onMissionLabelUpdated
:
function
(
mission
)
{
onMissionLabelUpdated
:
(
mission
)
=>
{
console
.
info
(
"
--------onMissionLabelUpdated-------
"
)
},
// 任务实例被关闭
onMissionClosed
:
function
(
mission
)
{
onMissionClosed
:
(
mission
)
=>
{
console
.
info
(
"
--------onMissionClosed-------
"
)
}
};
...
...
@@ -80,8 +81,8 @@
// 3.获取单个任务的详细信息()
let
missionId
=
11
;
// 11只是示例,实际是从系统中获取的任务id,下面类似
let
mission
=
missionManager
.
getMissionInfo
(
""
,
missionId
).
catch
(
function
(
err
)
{
console
.
info
(
err
);
let
mission
=
missionManager
.
getMissionInfo
(
""
,
missionId
).
catch
(
(
err
:
BusinessError
)
=>
{
console
.
info
(
'
${err.code}
'
);
});
// 4.获取任务快照
...
...
@@ -116,8 +117,8 @@
});
// 9.删除全部任务
missionManager
.
clearAllMissions
().
catch
(
function
(
err
)
{
console
.
info
(
err
);
missionManager
.
clearAllMissions
().
catch
(
(
err
:
BusinessError
)
=>
{
console
.
info
(
'
${err.code}
'
);
});
// 10.解注册任务变化通知
...
...
zh-cn/application-dev/application-models/mission-set-icon-name-for-task-snapshot.md
浏览文件 @
d7a60652
...
...
@@ -21,7 +21,9 @@
示例中的context的获取方式请参见
[
获取UIAbility的上下文信息
](
uiability-usage.md#获取uiability的上下文信息
)
。示例中的
`pixelMap`
的获取方式请参见
[
图片解码
](
../media/image-decoding.md
)
。
```
ts
let
context
=
...;
// UIAbilityContext
import
common
from
'
@ohos.app.ability.common
'
;
let
context
:
common
.
UIAbilityContext
=
...;
// UIAbilityContext
let
pixelMap
:
PixelMap
=
...;
// 图片的PixelMap信息
context
.
setMissionIcon
(
pixelMap
,
(
err
)
=>
{
...
...
@@ -41,11 +43,14 @@ context.setMissionIcon(pixelMap, (err) => {
通过调用
[
`UIAbilityContext.setMissionLabel()`
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextsetmissionlabel
)
方法修改任务快照的名称。
```
ts
let
context
=
...;
// UIAbilityContext
import
common
from
'
@ohos.app.ability.common
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
let
context
:
common
.
UIAbilityContext
=
this
.
context
;
// UIAbilityContext
context
.
setMissionLabel
(
'
test
'
).
then
(()
=>
{
console
.
info
(
'
Succeeded in seting mission label.
'
);
}).
catch
((
err
)
=>
{
}).
catch
((
err
:
BusinessErrpr
)
=>
{
console
.
error
(
`Failed to set mission label. Code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
});
```
...
...
zh-cn/application-dev/application-models/pageability-switch.md
浏览文件 @
d7a60652
...
...
@@ -42,15 +42,17 @@ FA模型中PageAbility对应Stage模型中的UIAbility。切换步骤如下。
```
ts
import
Window
from
'
@ohos.window
'
onWindowStageCreate
(
windowStage
:
Window
.
WindowStage
)
{
// Main window is created, set main page for this ability
windowStage
.
loadContent
(
'
pages/Index
'
,
(
err
,
data
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
"
loadContent failed
"
)
return
;
}
});
}
import
Window
from
'
@ohos.window
'
export
default
class
EntryAbility
extends
UIAbility
{
onWindowStageCreate
(
windowStage
:
Window
.
WindowStage
)
{
// Main window is created, set main page for this ability
windowStage
.
loadContent
(
'
pages/Index
'
,
(
err
,
data
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
"
loadContent failed
"
)
return
;
}
});
}
}
```
zh-cn/application-dev/application-models/redirection-rules.md
浏览文件 @
d7a60652
...
...
@@ -19,7 +19,7 @@ PageAbility作为可见Ability,可以通过startAbility启动有界面的且
如果需设置当前Ability可由任何应用访问,对应config.json文件的示例代码如下所示:
```
ts
```
json
{
"module"
:
{
...
...
...
zh-cn/application-dev/application-models/serviceextensionability.md
浏览文件 @
d7a60652
...
...
@@ -134,27 +134,29 @@ export default class ServiceExtImpl extends IdlServiceExtStub {
```
ts
import
ServiceExtensionAbility
from
'
@ohos.app.ability.ServiceExtensionAbility
'
;
import
ServiceExtImpl
from
'
../IdlServiceExt/idl_service_ext_impl
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
rpc
from
'
@ohos.rpc
'
;
const
TAG
:
string
=
"
[ServiceExtAbility]
"
;
export
default
class
ServiceExtAbility
extends
ServiceExtensionAbility
{
serviceExtImpl
=
new
ServiceExtImpl
(
"
ExtImpl
"
);
serviceExtImpl
:
ServiceExtImpl
=
new
ServiceExtImpl
(
"
ExtImpl
"
);
onCreate
(
want
)
{
onCreate
(
want
:
Want
)
{
console
.
info
(
TAG
,
`onCreate, want:
${
want
.
abilityName
}
`
);
}
onRequest
(
want
,
startId
)
{
onRequest
(
want
:
Want
,
startId
:
number
)
{
console
.
info
(
TAG
,
`onRequest, want:
${
want
.
abilityName
}
`
);
}
onConnect
(
want
)
{
onConnect
(
want
:
Want
)
{
console
.
info
(
TAG
,
`onConnect, want:
${
want
.
abilityName
}
`
);
// 返回ServiceExtImpl对象,客户端获取后便可以与ServiceExtensionAbility进行通信
return
this
.
serviceExtImpl
;
return
this
.
serviceExtImpl
as
rpc
.
RemoteObject
;
}
onDisconnect
(
want
)
{
onDisconnect
(
want
:
Want
)
{
console
.
info
(
TAG
,
`onDisconnect, want:
${
want
.
abilityName
}
`
);
}
...
...
@@ -194,15 +196,19 @@ export default class ServiceExtImpl extends IdlServiceExtStub {
1.
在系统应用中启动一个新的ServiceExtensionAbility。示例中的context的获取方式请参见
[
获取UIAbility的上下文信息
](
uiability-usage.md#获取uiability的上下文信息
)
。
```
ts
let
context
=
...;
// UIAbilityContext
let
want
=
{
"
deviceId
"
:
""
,
"
bundleName
"
:
"
com.example.myapplication
"
,
"
abilityName
"
:
"
ServiceExtAbility
"
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
let
context
:
common
.
UIAbilityContext
=
...;
// UIAbilityContext
let
want
:
Want
=
{
deviceId
:
""
,
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
ServiceExtAbility
"
};
context
.
startServiceExtensionAbility
(
want
).
then
(()
=>
{
console
.
info
(
'
Succeeded in starting ServiceExtensionAbility.
'
);
}).
catch
((
err
)
=>
{
}).
catch
((
err
:
BusinessError
)
=>
{
console
.
error
(
`Failed to start ServiceExtensionAbility. Code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
})
```
...
...
@@ -210,15 +216,19 @@ export default class ServiceExtImpl extends IdlServiceExtStub {
2.
在系统应用中停止一个已启动的ServiceExtensionAbility。
```
ts
let
context
=
...;
// UIAbilityContext
let
want
=
{
"
deviceId
"
:
""
,
"
bundleName
"
:
"
com.example.myapplication
"
,
"
abilityName
"
:
"
ServiceExtAbility
"
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
let
context
:
common
.
UIAbilityContext
=
...;
// UIAbilityContext
let
want
:
Want
=
{
deviceId
:
""
,
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
ServiceExtAbility
"
};
context
.
stopServiceExtensionAbility
(
want
).
then
(()
=>
{
console
.
info
(
'
Succeeded in stopping ServiceExtensionAbility.
'
);
}).
catch
((
err
)
=>
{
}).
catch
((
err
:
BusinessError
)
=>
{
console
.
error
(
`Failed to stop ServiceExtensionAbility. Code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
})
```
...
...
@@ -226,10 +236,13 @@ export default class ServiceExtImpl extends IdlServiceExtStub {
3.
已启动的ServiceExtensionAbility停止自身。
```
ts
let
context
=
...;
// ServiceExtensionContext
import
common
from
'
@ohos.app.ability.common
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
let
context
:
common
.
ServiceExtensionContext
=
...;
// ServiceExtensionContext
context
.
terminateSelf
().
then
(()
=>
{
console
.
info
(
'
Succeeded in terminating self.
'
);
}).
catch
((
err
)
=>
{
}).
catch
((
err
:
BusinessError
)
=>
{
console
.
error
(
`Failed to terminate self. Code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
})
```
...
...
@@ -250,12 +263,15 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap
-
使用connectServiceExtensionAbility()建立与后台服务的连接。示例中的context的获取方式请参见
[
获取UIAbility的上下文信息
](
uiability-usage.md#获取uiability的上下文信息
)
。
```
ts
let
want
=
{
"
deviceId
"
:
""
,
"
bundleName
"
:
"
com.example.myapplication
"
,
"
abilityName
"
:
"
ServiceExtAbility
"
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
let
want
:
Want
=
{
deviceId
:
""
,
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
ServiceExtAbility
"
};
let
options
=
{
let
options
:
common
.
ConnectOptions
=
{
onConnect
(
elementName
,
remote
)
{
/* 此处的入参remote为ServiceExtensionAbility在onConnect生命周期回调中返回的对象,
* 开发者通过这个对象便可以与ServiceExtensionAbility进行通信,具体通信方式见下文
...
...
@@ -274,16 +290,17 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap
}
}
// 建立连接后返回的Id需要保存下来,在解绑服务时需要作为参数传入
let
connectionId
=
this
.
context
.
connectServiceExtensionAbility
(
want
,
options
);
let
connectionId
:
number
=
this
.
context
.
connectServiceExtensionAbility
(
want
,
options
);
```
-
使用disconnectServiceExtensionAbility()断开与后台服务的连接。
```
ts
import
{
BusinessError
}
from
'
@ohos.base
'
;
// connectionId为调用connectServiceExtensionAbility接口时的返回值,需开发者自行维护
this
.
context
.
disconnectServiceExtensionAbility
(
connectionId
).
then
((
data
)
=>
{
this
.
context
.
disconnectServiceExtensionAbility
(
connectionId
).
then
(()
=>
{
console
.
info
(
'
disconnectServiceExtensionAbility success
'
);
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
'
disconnectServiceExtensionAbility failed
'
);
})
```
...
...
@@ -297,20 +314,21 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap
```
ts
// 客户端需要将服务端对外提供的idl_service_ext_proxy.ts导入到本地工程中
import
IdlServiceExtProxy
from
'
../IdlServiceExt/idl_service_ext_proxy
'
;
import
common
from
'
@ohos.app.ability.common
'
;
let
options
=
{
let
options
:
common
.
ConnectOptions
=
{
onConnect
(
elementName
,
remote
)
{
console
.
info
(
'
onConnect callback
'
);
if
(
remote
===
null
)
{
console
.
info
(
`onConnect remote is null`
);
return
;
}
let
serviceExtProxy
=
new
IdlServiceExtProxy
(
remote
);
let
serviceExtProxy
:
IdlServiceExtProxy
=
new
IdlServiceExtProxy
(
remote
);
// 通过接口调用的方式进行通信,屏蔽了RPC通信的细节,简洁明了
serviceExtProxy
.
processData
(
1
,
(
errorCode
,
retVal
)
=>
{
serviceExtProxy
.
processData
(
1
,
(
errorCode
:
number
,
retVal
:
number
)
=>
{
console
.
info
(
`processData, errorCode:
${
errorCode
}
, retVal:
${
retVal
}
`
);
});
serviceExtProxy
.
insertDataToMap
(
'
theKey
'
,
1
,
(
errorCode
)
=>
{
serviceExtProxy
.
insertDataToMap
(
'
theKey
'
,
1
,
(
errorCode
:
number
)
=>
{
console
.
info
(
`insertDataToMap, errorCode:
${
errorCode
}
`
);
})
},
...
...
@@ -327,9 +345,11 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap
```
ts
import
rpc
from
'
@ohos.rpc
'
;
import
common
from
'
@ohos.app.ability.common
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
const
REQUEST_CODE
=
1
;
let
options
=
{
let
options
:
common
.
ConnectOptions
=
{
onConnect
(
elementName
,
remote
)
{
console
.
info
(
'
onConnect callback
'
);
if
(
remote
===
null
)
{
...
...
@@ -351,7 +371,7 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap
remote
.
sendMessageRequest
(
REQUEST_CODE
,
data
,
reply
,
option
).
then
((
ret
)
=>
{
let
msg
=
reply
.
readInt
();
console
.
info
(
`sendMessageRequest ret:
${
ret
}
msg:
${
msg
}
`
);
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
info
(
'
sendMessageRequest failed
'
);
});
},
...
...
@@ -374,6 +394,7 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap
```
ts
import
rpc
from
'
@ohos.rpc
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
import
bundleManager
from
'
@ohos.bundle.bundleManager
'
;
import
{
processDataCallback
}
from
'
./i_idl_service_ext
'
;
import
{
insertDataToMapCallback
}
from
'
./i_idl_service_ext
'
;
...
...
@@ -396,7 +417,7 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap
return
;
}
// 识别通过,执行正常业务逻辑
}).
catch
(
err
=>
{
}).
catch
(
(
err
:
BusinessError
)
=>
{
console
.
info
(
TAG
,
'
getBundleNameByUid failed:
'
+
err
.
message
);
});
}
...
...
zh-cn/application-dev/application-models/start-local-pageability.md
浏览文件 @
d7a60652
...
...
@@ -16,17 +16,17 @@ PageAbility相关的能力通过featureAbility提供,启动本地Ability通过
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
import
Want
from
'
@ohos.app.ability.Want
'
;
(
async
()
=>
{
try
{
console
.
info
(
'
Begin to start ability
'
)
let
param
=
{
want
:
{
bundleName
:
"
com.example.myapplication
"
,
moduleName
:
"
entry
"
,
abilityName
:
"
com.example.myapplication.EntryAbility
"
}
let
want
:
Want
=
{
bundleName
:
"
com.example.myapplication
"
,
moduleName
:
"
entry
"
,
abilityName
:
"
com.example.myapplication.EntryAbility
"
}
await
featureAbility
.
startAbility
(
param
)
await
featureAbility
.
startAbility
(
{
want
}
)
console
.
info
(
`Start ability succeed`
)
}
catch
(
error
)
{
...
...
zh-cn/application-dev/application-models/start-page.md
浏览文件 @
d7a60652
...
...
@@ -8,9 +8,10 @@
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
async
function
restartAbility
()
{
let
wantInfo
=
{
let
wantInfo
:
Want
=
{
bundleName
:
"
com.sample.MyApplication
"
,
abilityName
:
"
EntryAbility
"
,
parameters
:
{
...
...
@@ -29,10 +30,32 @@ async function restartAbility() {
在目标端PageAbility的onNewWant回调中获取包含页面信息的want参数:
```
ts
export
default
{
onNewWant
(
want
)
{
globalThis
.
newWant
=
want
import
Want
from
'
@ohos.app.ability.Want
'
;
export
class
GlobalContext
{
private
constructor
()
{}
private
static
instance
:
GlobalContext
;
private
_objects
=
new
Map
<
string
,
Object
>
();
public
static
getContext
():
GlobalContext
{
if
(
!
GlobalContext
.
instance
)
{
GlobalContext
.
instance
=
new
GlobalContext
();
}
return
GlobalContext
.
instance
;
}
getObject
(
value
:
string
):
Object
|
undefined
{
return
this
.
_objects
.
get
(
value
);
}
setObject
(
key
:
string
,
objectClass
:
Object
):
void
{
this
.
_objects
.
set
(
key
,
objectClass
);
}
}
export
default
class
EntryAbility
{
onNewWant
(
want
:
Want
)
{
GlobalContext
.
getContext
().
setObject
(
"
newWant
"
,
want
);
}
}
```
...
...
@@ -40,18 +63,20 @@ export default {
在目标端页面的自定义组件中获取包含页面信息的want参数并根据uri做路由处理:
```
ts
import
router
from
'
@ohos.router
'
import
router
from
'
@ohos.router
'
;
import
{
GlobalContext
}
from
'
../GlobalContext
'
@
Entry
@
Component
struct
Index
{
@
State
message
:
string
=
'
Router Page
'
newWant
=
undefined
onPageShow
()
{
console
.
info
(
'
Index onPageShow
'
)
let
newWant
=
globalThis
.
newWant
let
newWant
:
Want
=
GlobalContext
.
getContext
().
getObject
(
"
newWant
"
)
if
(
newWant
.
hasOwnProperty
(
"
page
"
))
{
router
.
push
({
url
:
newWant
.
page
});
globalThis
.
newWant
=
undefined
GlobalContext
.
getContext
().
setObject
(
"
newWant
"
,
undefined
)
}
}
...
...
@@ -76,43 +101,47 @@ struct Index {
调用方的页面中实现按钮点击触发startAbility方法启动目标端PageAbility,startAbility方法的入参want中携带指定页面信息,示例代码如下:
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
@
Entry
@
Component
struct
Index
{
@
State
message
:
string
=
'
Hello World
'
build
()
{
...
Button
(
"
startAbility
"
)
.
onClick
(()
=>
{
featureAbility
.
startAbility
({
want
:
{
bundleName
:
"
com.exm.myapplication
"
,
abilityName
:
"
com.exm.myapplication.EntryAbility
"
,
parameters
:
{
page
:
"
pages/page1
"
}
}
}).
then
((
data
)
=>
{
console
.
info
(
"
startAbility finish
"
);
}).
catch
((
err
)
=>
{
console
.
info
(
"
startAbility failed errcode:
"
+
err
.
code
)
Row
()
{
Button
(
"
startAbility
"
)
.
onClick
(()
=>
{
featureAbility
.
startAbility
({
want
:
{
bundleName
:
"
com.exm.myapplication
"
,
abilityName
:
"
com.exm.myapplication.EntryAbility
"
,
parameters
:
{
page
:
"
pages/page1
"
}
}
}).
then
((
data
)
=>
{
console
.
info
(
"
startAbility finish
"
);
}).
catch
((
err
:
BusinessError
)
=>
{
console
.
info
(
"
startAbility failed errcode:
"
+
err
.
code
)
})
})
})
...
Button
(
"
page2
"
)
.
onClick
(()
=>
{
featureAbility
.
startAbility
(
{
want
:
{
bundleName
:
"
com.exm.myapplication
"
,
abilityName
:
"
com.exm.myapplication.EntryAbility
"
,
parameters
:
{
page
:
"
pages/page2
"
}
}
}).
then
((
data
)
=>
{
console
.
info
(
"
startAbility finish
"
);
}).
catch
((
err
)
=>
{
console
.
info
(
"
startAbility failed errcode:
"
+
err
.
code
)
...
Button
(
"
page2
"
)
.
onClick
(()
=>
{
featureAbility
.
startAbility
(
{
want
:
{
bundleName
:
"
com.exm.myapplication
"
,
abilityName
:
"
com.exm.myapplication.EntryAbility
"
,
parameters
:
{
page
:
"
pages/page2
"
}
}
}
).
then
((
data
)
=>
{
console
.
info
(
"
startAbility finish
"
);
}).
catch
((
err
:
BusinessError
)
=>
{
console
.
info
(
"
startAbility failed errcode:
"
+
err
.
code
)
}
)
})
})
...
}
...
}
}
...
...
@@ -125,18 +154,20 @@ struct Index {
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
import
router
from
'
@ohos.router
'
;
export
default
{
export
default
class
EntryAbility
{
onCreate
()
{
featureAbility
.
getWant
().
then
((
want
)
=>
{
if
(
want
.
parameters
.
page
)
{
router
.
push
({
url
:
want
.
parameters
.
page
})
if
(
want
.
parameters
)
{
if
(
want
.
parameters
.
page
)
{
router
.
push
({
url
:
want
.
parameters
.
page
})
}
}
})
}
,
}
;
onDestroy
()
{
...
}
,
//
...
}
;
}
```
zh-cn/application-dev/application-models/start-pageability-from-stage.md
浏览文件 @
d7a60652
...
...
@@ -13,26 +13,30 @@
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
window
from
'
@ohos.window
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
console
.
info
(
"
EntryAbility onCreate
"
)
}
onDestroy
()
{
console
.
info
(
"
EntryAbility onDestroy
"
)
}
onWindowStageCreate
(
windowStage
)
{
onWindowStageCreate
(
windowStage
:
window
.
WindowStage
)
{
console
.
info
(
"
EntryAbility onWindowStageCreate
"
)
windowStage
.
loadContent
(
'
pages/Index
'
,
(
err
,
data
)
=>
{
...
//
...
});
let
want
=
{
let
want
:
Want
=
{
bundleName
:
"
com.ohos.fa
"
,
abilityName
:
"
com.ohos.fa.EntryAbility
"
,
};
this
.
context
.
startAbility
(
want
).
then
(()
=>
{
console
.
info
(
'
Start Ability successfully.
'
);
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
"
Ability failed:
"
+
JSON
.
stringify
(
error
));
});
}
...
...
@@ -58,26 +62,30 @@ UIAbility通过startAbilityForResult启动PageABility和UIAbility通过startAbil
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
window
from
'
@ohos.window
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
console
.
info
(
"
EntryAbility onCreate
"
)
}
onDestroy
()
{
console
.
info
(
"
EntryAbility onDestroy
"
)
}
onWindowStageCreate
(
windowStage
)
{
onWindowStageCreate
(
windowStage
:
window
.
WindowStage
)
{
console
.
info
(
"
EntryAbility onWindowStageCreate
"
)
windowStage
.
loadContent
(
'
pages/Index
'
,
(
err
,
data
)
=>
{
...
//
...
});
let
want
=
{
let
want
:
Want
=
{
bundleName
:
"
com.ohos.fa
"
,
abilityName
:
"
EntryAbility
"
,
};
this
.
context
.
startAbilityForResult
(
want
).
then
((
result
)
=>
{
console
.
info
(
'
Ability verify result:
'
+
JSON
.
stringify
(
result
));
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
"
Ability failed:
"
+
JSON
.
stringify
(
error
));
});
}
...
...
@@ -101,23 +109,25 @@ export default class EntryAbility extends UIAbility {
```
ts
import
Extension
from
'
@ohos.app.ability.ServiceExtensionAbility
'
import
Want
from
'
@ohos.app.ability.Want
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
export
default
class
ServiceExtension
extends
Extension
{
onCreate
(
want
)
{
onCreate
(
want
:
Want
)
{
console
.
info
(
"
ServiceExtension onCreate
"
)
}
onDestroy
()
{
console
.
info
(
"
ServiceExtension onDestroy
"
)
}
onRequest
(
want
,
startId
)
{
onRequest
(
want
:
Want
,
startId
:
number
)
{
console
.
info
(
"
ServiceExtension onRequest
"
)
let
wantFA
=
{
let
wantFA
:
Want
=
{
bundleName
:
"
com.ohos.fa
"
,
abilityName
:
"
EntryAbility
"
,
};
this
.
context
.
startAbility
(
wantFA
).
then
(()
=>
{
console
.
info
(
'
Start Ability successfully.
'
);
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
"
Ability failed:
"
+
JSON
.
stringify
(
error
));
});
}
...
...
zh-cn/application-dev/application-models/start-remote-pageability.md
浏览文件 @
d7a60652
...
...
@@ -52,7 +52,7 @@ async function RequestPermission() {
console
.
info
(
'
RequestPermission begin
'
);
let
array
:
Array
<
string
>
=
[
"
ohos.permission.DISTRIBUTED_DATASYNC
"
];
let
bundleFlag
=
0
;
let
tokenID
=
undefined
;
let
tokenID
:
number
|
undefined
=
undefined
;
let
userID
=
100
;
let
appInfo
=
await
bundle
.
getApplicationInfo
(
'
ohos.samples.etsDemo
'
,
bundleFlag
,
userID
);
tokenID
=
appInfo
.
accessTokenId
;
...
...
@@ -89,7 +89,7 @@ async function RequestPermission() {
```
ts
import
deviceManager
from
'
@ohos.distributedHardware.deviceManager
'
;
let
dmClass
;
let
dmClass
:
deviceManager
.
DeviceManager
;
function
getDeviceManager
()
{
deviceManager
.
createDeviceManager
(
'
ohos.example.distributedService
'
,
(
error
,
dm
)
=>
{
...
...
@@ -100,9 +100,9 @@ function getDeviceManager() {
})
}
function
getRemoteDeviceId
()
{
function
getRemoteDeviceId
()
:
string
|
undefined
{
if
(
typeof
dmClass
===
'
object
'
&&
dmClass
!=
null
)
{
let
list
=
dmClass
.
getTrustedDeviceListSync
();
let
list
:
Array
<
deviceManager
.
DeviceInfo
>
=
dmClass
.
getTrustedDeviceListSync
();
if
(
typeof
(
list
)
==
'
undefined
'
||
typeof
(
list
.
length
)
==
'
undefined
'
)
{
console
.
info
(
"
EntryAbility onButtonClick getRemoteDeviceId err: list is null
"
);
return
;
...
...
@@ -111,6 +111,7 @@ function getRemoteDeviceId() {
return
list
[
0
].
deviceId
;
}
else
{
console
.
info
(
"
EntryAbility onButtonClick getRemoteDeviceId err: dmClass is null
"
);
return
;
}
}
```
...
...
@@ -123,15 +124,14 @@ function getRemoteDeviceId() {
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
function
onStartRemoteAbility
()
{
console
.
info
(
'
onStartRemoteAbility begin
'
);
let
params
;
let
wantValue
=
{
let
wantValue
:
Want
=
{
bundleName
:
'
ohos.samples.etsDemo
'
,
abilityName
:
'
ohos.samples.etsDemo.RemoteAbility
'
,
deviceId
:
getRemoteDeviceId
(),
// getRemoteDeviceId的定义在前面的示例代码中
parameters
:
params
};
console
.
info
(
'
onStartRemoteAbility want=
'
+
JSON
.
stringify
(
wantValue
));
featureAbility
.
startAbility
({
...
...
zh-cn/application-dev/application-models/start-serviceability.md
浏览文件 @
d7a60652
...
...
@@ -8,17 +8,16 @@ ServiceAbility的启动与其他Ability并无区别,应用开发者可以在Pa
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
import
Want
from
'
@ohos.app.ability.Want
'
;
async
function
startServiceAbility
()
{
try
{
console
.
info
(
'
Begin to start ability
'
)
let
param
=
{
want
:
{
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
com.example.myapplication.ServiceAbility
"
}
let
want
:
Want
=
{
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
com.example.myapplication.ServiceAbility
"
}
await
featureAbility
.
startAbility
(
param
)
await
featureAbility
.
startAbility
(
{
want
}
)
console
.
info
(
`Start ability succeed`
)
}
catch
(
error
)
{
console
.
error
(
'
Start ability failed with
'
+
error
)
...
...
zh-cn/application-dev/application-models/start-uiability-from-fa.md
浏览文件 @
d7a60652
...
...
@@ -10,16 +10,18 @@
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
let
parameter
=
{
"
want
"
:
{
bundleName
:
"
com.ohos.stage
"
,
abilityName
:
"
EntryAbility
"
import
{
BusinessError
}
from
'
@ohos.base
'
;
featureAbility
.
startAbility
(
{
want
:
{
bundleName
:
"
com.ohos.stage
"
,
abilityName
:
"
EntryAbility
"
}
}
};
featureAbility
.
startAbility
(
parameter
).
then
((
code
)
=>
{
).
then
((
code
)
=>
{
console
.
info
(
'
Ability verify code:
'
+
JSON
.
stringify
(
code
));
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
"
Ability failed:
"
+
JSON
.
stringify
(
error
));
});
```
...
...
@@ -34,16 +36,17 @@ startAbilityForResult和startAbility的区别是当UIAbility销毁的时候会
```
ts
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
let
parameter
=
{
"
want
"
:
{
bundleName
:
"
com.ohos.stage
"
,
abilityName
:
"
com.ohos.stage.EntryAbility
"
}
};
featureAbility
.
startAbilityForResult
(
parameter
).
then
((
result
)
=>
{
import
{
BusinessError
}
from
'
@ohos.base
'
;
featureAbility
.
startAbilityForResult
(
{
want
:
{
bundleName
:
"
com.ohos.stage
"
,
abilityName
:
"
com.ohos.stage.EntryAbility
"
}
}).
then
((
result
)
=>
{
console
.
info
(
'
Ability verify result:
'
+
JSON
.
stringify
(
result
));
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
"
Ability failed:
"
+
JSON
.
stringify
(
error
));
});
```
...
...
@@ -56,16 +59,18 @@ featureAbility.startAbilityForResult(parameter).then((result) => {
```
ts
import
particleAbility
from
'
@ohos.ability.particleAbility
'
;
let
parameter
=
{
"
want
"
:
{
bundleName
:
"
com.ohos.stage
"
,
abilityName
:
"
com.ohos.stage.EntryAbility
"
import
{
BusinessError
}
from
'
@ohos.base
'
;
particleAbility
.
startAbility
(
{
want
:
{
bundleName
:
"
com.ohos.stage
"
,
abilityName
:
"
com.ohos.stage.EntryAbility
"
}
}
};
particleAbility
.
startAbility
(
parameter
).
then
(()
=>
{
).
then
(()
=>
{
console
.
info
(
'
Start Ability successfully.
'
);
}).
catch
((
error
)
=>
{
}).
catch
((
error
:
BusinessError
)
=>
{
console
.
error
(
"
Ability failed:
"
+
JSON
.
stringify
(
error
));
});
```
zh-cn/application-dev/application-models/subscribe-system-environment-variable-changes.md
浏览文件 @
d7a60652
...
...
@@ -21,22 +21,24 @@
```
ts
import
common
from
'
@ohos.app.ability.common
'
;
import
{
Configuration
}
from
'
@ohos.app.ability.Configuration
'
;
import
EnvironmentCallback
from
'
@ohos.app.ability.EnvironmentCallback
'
;
@
Entry
@
Component
struct
Index
{
private
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
private
callbackId
:
number
;
// 注册订阅系统环境变化的ID
private
callbackId
:
number
=
0
;
// 注册订阅系统环境变化的ID
subscribeConfigurationUpdate
()
{
let
systemLanguage
:
string
=
this
.
context
.
config
.
language
;
// 获取系统当前语言
let
systemLanguage
:
string
|
undefined
=
this
.
context
.
config
.
language
;
// 获取系统当前语言
// 1.获取ApplicationContext
let
applicationContext
=
this
.
context
.
getApplicationContext
();
// 2.通过applicationContext订阅环境变量变化
let
environmentCallback
=
{
onConfigurationUpdated
(
newConfig
)
{
let
environmentCallback
:
EnvironmentCallback
=
{
onConfigurationUpdated
(
newConfig
:
Configuration
)
{
console
.
info
(
`onConfigurationUpdated systemLanguage is
${
systemLanguage
}
, newConfig:
${
JSON
.
stringify
(
newConfig
)}
`
);
if
(
this
.
systemLanguage
!==
newConfig
.
language
)
{
...
...
@@ -68,7 +70,7 @@
@
Component
struct
Index
{
private
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
private
callbackId
:
number
;
// 注册订阅系统环境变化的ID
private
callbackId
:
number
=
0
;
// 注册订阅系统环境变化的ID
unsubscribeConfigurationUpdate
()
{
let
applicationContext
=
this
.
context
.
getApplicationContext
();
...
...
@@ -95,8 +97,9 @@
```
ts
import
AbilityStage
from
'
@ohos.app.ability.AbilityStage
'
;
import
{
Configuration
}
from
'
@ohos.app.ability.Configuration
'
;
let
systemLanguage
:
string
;
// 系统当前语言
let
systemLanguage
:
string
|
undefined
;
// 系统当前语言
export
default
class
MyAbilityStage
extends
AbilityStage
{
onCreate
()
{
...
...
@@ -104,7 +107,7 @@ export default class MyAbilityStage extends AbilityStage {
console
.
info
(
`systemLanguage is
${
systemLanguage
}
`
);
}
onConfigurationUpdate
(
newConfig
)
{
onConfigurationUpdate
(
newConfig
:
Configuration
)
{
console
.
info
(
`onConfigurationUpdated systemLanguage is
${
systemLanguage
}
, newConfig:
${
JSON
.
stringify
(
newConfig
)}
`
);
if
(
systemLanguage
!==
newConfig
.
language
)
{
...
...
@@ -127,16 +130,19 @@ UIAbility组件提供了`UIAbility.onConfigurationUpdate()`回调方法用于订
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
{
Configuration
}
from
'
@ohos.app.ability.Configuration
'
;
let
systemLanguage
:
string
;
// 系统当前语言
let
systemLanguage
:
string
|
undefined
;
// 系统当前语言
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
systemLanguage
=
this
.
context
.
config
.
language
;
// UIAbility实例首次加载时,获取系统当前语言
console
.
info
(
`systemLanguage is
${
systemLanguage
}
`
);
}
onConfigurationUpdate
(
newConfig
)
{
onConfigurationUpdate
(
newConfig
:
Configuration
)
{
console
.
info
(
`onConfigurationUpdated systemLanguage is
${
systemLanguage
}
, newConfig:
${
JSON
.
stringify
(
newConfig
)}
`
);
if
(
systemLanguage
!==
newConfig
.
language
)
{
...
...
@@ -145,7 +151,7 @@ export default class EntryAbility extends UIAbility {
}
}
...
//
...
}
```
...
...
@@ -161,12 +167,13 @@ ExtensionAbility组件提供了`onConfigurationUpdate()`回调方法用于订阅
```
ts
import
FormExtensionAbility
from
'
@ohos.app.form.FormExtensionAbility
'
;
import
{
Configuration
}
from
'
@ohos.app.ability.Configuration
'
;
export
default
class
EntryFormAbility
extends
FormExtensionAbility
{
onConfigurationUpdate
(
newConfig
)
{
onConfigurationUpdate
(
newConfig
:
Configuration
)
{
console
.
info
(
`newConfig is
${
JSON
.
stringify
(
newConfig
)}
`
);
}
...
//
...
}
```
zh-cn/application-dev/application-models/uiability-data-sync-with-ui.md
浏览文件 @
d7a60652
...
...
@@ -4,7 +4,6 @@
基于OpenHarmony的应用模型,可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。
-
[
使用EventHub进行数据通信
](
#使用eventhub进行数据通信
)
:在基类Context中提供了EventHub对象,可以通过发布订阅方式来实现事件的传递。在事件传递前,订阅者需要先进行订阅,当发布者发布事件时,订阅者将接收到事件并进行相应处理。
-
[
使用globalThis进行数据同步
](
#使用globalthis进行数据同步
)
:在ArkTS引擎实例内部,globalThis是一个全局对象,可以被ArkTS引擎实例内的UIAbility组件、ExtensionAbility组件和ArkUI页面(Page)访问。
-
[
使用AppStorage/LocalStorage进行数据同步
](
#使用appstorage/localstorage进行数据同步
)
:ArkUI提供了AppStorage和LocalStorage两种应用级别的状态管理方案,可用于实现应用级别和UIAbility级别的数据同步。
...
...
@@ -18,21 +17,23 @@
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
const
TAG
:
string
=
'
[Example].[Entry].[EntryAbility]
'
;
export
default
class
EntryAbility
extends
UIAbility
{
func1
(
...
data
)
{
func1
(
data
:
string
)
{
// 触发事件,完成相应的业务操作
console
.
info
(
TAG
,
'
1.
'
+
JSON
.
stringify
(
data
));
}
onCreate
(
want
,
launch
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
LaunchParam
)
{
// 获取eventHub
let
eventhub
=
this
.
context
.
eventHub
;
// 执行订阅操作
eventhub
.
on
(
'
event1
'
,
this
.
func1
);
eventhub
.
on
(
'
event1
'
,
(
...
data
)
=>
{
eventhub
.
on
(
'
event1
'
,
(
data
:
string
)
=>
{
// 触发事件,完成相应的业务操作
console
.
info
(
TAG
,
'
2.
'
+
JSON
.
stringify
(
data
));
});
...
...
@@ -69,7 +70,7 @@
3.
在UIAbility的注册事件回调中可以得到对应的触发事件结果,运行日志结果如下所示。
```
ts
```
json
[]
[
1
]
...
...
@@ -84,229 +85,6 @@
this
.
context
.
eventHub
.
off
(
'
event1
'
);
```
## 使用globalThis进行数据同步
globalThis是
[
ArkTS引擎实例
](
thread-model-stage.md
)
内部的一个全局对象,引擎内部的UIAbility/ExtensionAbility/Page都可以使用,因此可以使用globalThis对象进行数据同步。
**图1**
使用globalThis进行数据同步
![
globalThis1
](
figures/globalThis1.png
)
如上图所示,下面从如下三个场景和一个注意点来介绍globalThis的使用:
-
[
UIAbility和Page之间使用globalThis
](
#uiability和page之间使用globalthis
)
-
[
UIAbility和UIAbility之间使用globalThis
](
#uiability和uiability之间使用globalthis
)
-
[
UIAbility和ExtensionAbility之间使用globalThis
](
#uiability和extensionability之间使用globalthis
)
-
[
globalThis使用的注意事项
](
#globalthis使用的注意事项
)
### UIAbility和Page之间使用globalThis
通过在globalThis对象上绑定属性/方法,可以实现UIAbility组件与UI之间的数据同步。例如在UIAbility组件中绑定want参数,即可在UIAbility对应的UI上使用want参数信息。
1.
调用
[
`startAbility()`
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability
)
方法启动一个UIAbility实例时,被启动的UIAbility创建完成后会进入
[
`onCreate()`
](
../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate
)
生命周期回调,且在
[
`onCreate()`
](
../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate
)
生命周期回调中能够接受到传递过来的want参数,可以将want参数绑定到globalThis上。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
launch
)
{
globalThis
.
entryAbilityWant
=
want
;
...
}
...
}
```
2.
在UI中即可通过globalThis获取到want参数信息。
```
ts
let
entryAbilityWant
;
@
Entry
@
Component
struct
Index
{
aboutToAppear
()
{
entryAbilityWant
=
globalThis
.
entryAbilityWant
;
}
// 页面展示
build
()
{
...
}
}
```
### UIAbility和UIAbility之间使用globalThis
在同一个应用中,UIAbility与UIAbility之间的数据传递可以通过将数据绑定到全局变量globalThis上进行同步。例如,在UIAbilityA中将数据保存在globalThis对象中,然后跳转到UIAbilityB中就可以获取该数据。
1.
UIAbilityA中保存数据一个字符串数据并挂载到globalThis上。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
export
default
class
UIAbilityA
extends
UIAbility
{
onCreate
(
want
,
launch
)
{
globalThis
.
entryAbilityStr
=
'
UIAbilityA
'
;
// UIAbilityA存放字符串“UIAbilityA”到globalThis
...
}
}
```
2.
UIAbilityB中获取对应的数据。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
export
default
class
UIAbilityB
extends
UIAbility
{
onCreate
(
want
,
launch
)
{
// UIAbilityB从globalThis读取name并输出
console
.
info
(
'
name from entryAbilityStr:
'
+
globalThis
.
entryAbilityStr
);
...
}
}
```
### UIAbility和ExtensionAbility之间使用globalThis
在同一个应用中,UIAbility和ExtensionAbility之间的数据传递也可以通过将数据绑定到全局变量globalThis上进行同步。例如,在UIAbilityA中保存数据,在ServiceExtensionAbility中就可以获取该数据。
1.
UIAbilityA中保存数据一个字符串数据并挂载到globalThis上。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
export
default
class
UIAbilityA
extends
UIAbility
{
onCreate
(
want
,
launch
)
{
// UIAbilityA存放字符串“UIAbilityA”到globalThis
globalThis
.
entryAbilityStr
=
'
UIAbilityA
'
;
...
}
}
```
2.
ExtensionAbility中获取数据。
```
ts
import
Extension
from
'
@ohos.app.ability.ServiceExtensionAbility
'
export
default
class
ServiceExtAbility
extends
Extension
{
onCreate
(
want
)
{
// ServiceExtAbility从globalThis读取name并输出
console
.
info
(
'
name from entryAbilityStr:
'
+
globalThis
.
entryAbilityStr
);
...
}
}
```
### globalThis使用的注意事项
**图2**
globalThis注意事项
![
globalThis2
](
figures/globalThis2.png
)
-
Stage模型下进程内的UIAbility组件共享ArkTS引擎实例,使用globalThis时需要避免存放相同名称的对象。例如UIAbilityA和UIAbilityB可以使用globalThis共享数据,在存放相同名称的对象时,先存放的对象会被后存放的对象覆盖。
-
globalThis不支持跨进程使用,不同进程的UIAbility组件和ExtensionAbility组件无法使用globalThis共享数据,进程模型及进程间通信机制见
[
进程模型概述
](
./process-model-stage.md#进程模型概述
)
。
-
FA模型因为每个UIAbility组件之间引擎隔离,不会存在该问题。
-
对于绑定在globalThis上的对象,其生命周期与ArkTS虚拟机实例相同,建议在使用完成之后将其赋值为null,以减少对应用内存的占用。
Stage模型上同名对象覆盖导致问题的场景举例说明。
1.
在UIAbilityA文件中使用globalThis中存放了
[
UIAbilityContext
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md
)
。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
export
default
class
UIAbilityA
extends
UIAbility
{
onCreate
(
want
,
launch
)
{
globalThis
.
context
=
this
.
context
;
// UIAbilityA存放context到globalThis
...
}
}
```
2.
在UIAbilityA的页面中获取该
[
UIAbilityContext
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md
)
并进行使用。使用完成后将UIAbilityA实例切换至后台。
```
ts
@
Entry
@
Component
struct
Index
{
onPageShow
()
{
let
ctx
=
globalThis
.
context
;
// 页面中从globalThis中取出context并使用
}
// 页面展示
build
()
{
...
}
}
```
3.
在UIAbilityB文件中使用globalThis中存放了
[
UIAbilityContext
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md
)
,并且命名为相同的名称。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
export
default
class
UIAbilityB
extends
UIAbility
{
onCreate
(
want
,
launch
)
{
// UIAbilityB覆盖了UIAbilityA在globalThis中存放的context
globalThis
.
context
=
this
.
context
;
...
}
}
```
4.
在UIAbilityB的页面中获取该
[
UIAbilityContext
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md
)
并进行使用。此时获取到的globalThis.context已经表示为UIAbilityB中赋值的
[
UIAbilityContext
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md
)
内容。
```
ts
@
Entry
@
Component
struct
Index
{
onPageShow
()
{
let
ctx
=
globalThis
.
context
;
// Page中从globalThis中取出context并使用
}
// 页面展示
build
()
{
...
}
}
```
5.
在UIAbilityB实例切换至后台,将UIAbilityA实例从后台切换回到前台。此时UIAbilityA的onCreate生命周期不会再次进入。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
export
default
class
UIAbilityA
extends
UIAbility
{
onCreate
(
want
,
launch
)
{
// UIAbilityA从后台进入前台,不会再走这个生命周期
globalThis
.
context
=
this
.
context
;
...
}
}
```
6.
在UIAbilityA的页面再次回到前台时,其获取到的globalThis.context表示的为UIAbilityB的
[
UIAbilityContext
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md
)
,而不是UIAbilityA的
[
UIAbilityContext
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md
)
,在UIAbilityA的页面中使用则会出错。
```
ts
@
Entry
@
Component
struct
Index
{
onPageShow
()
{
let
ctx
=
globalThis
.
context
;
// 这时候globalThis中的context是UIAbilityB的context
}
// 页面展示
build
()
{
...
}
}
```
## 使用AppStorage/LocalStorage进行数据同步
ArkUI提供了AppStorage和LocalStorage两种应用级别的状态管理方案,可用于实现应用级别和UIAbility级别的数据同步。使用这些方案可以方便地管理应用状态,提高应用性能和用户体验。其中,AppStorage是一个全局的状态管理器,适用于多个UIAbility共享同一状态数据的情况;而LocalStorage则是一个局部的状态管理器,适用于单个UIAbility内部使用的状态数据。通过这两种方案,开发者可以更加灵活地控制应用状态,提高应用的可维护性和可扩展性。详细请参见
[
应用级变量的状态管理
](
../quick-start/arkts-application-state-management-overview.md
)
。
zh-cn/application-dev/application-models/uiability-intra-device-interaction.md
浏览文件 @
d7a60652
此差异已折叠。
点击以展开。
zh-cn/application-dev/application-models/uiability-launch-type.md
浏览文件 @
d7a60652
...
...
@@ -95,12 +95,16 @@ specified启动模式为指定实例模式,针对一些特殊场景使用(
```
ts
// 在启动指定实例模式的UIAbility时,给每一个UIAbility实例配置一个独立的Key标识
// 例如在文档使用场景中,可以用文档路径作为Key标识
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
function
getInstance
()
{
...
return
'
key
'
;
}
let
context
=
...;
// context为调用方UIAbility的UIAbilityContext
let
want
=
{
let
context
:
common
.
UIAbilityContext
=
...;
// context为调用方UIAbility的UIAbilityContext
let
want
:
Want
=
{
deviceId
:
''
,
// deviceId为空表示本设备
bundleName
:
'
com.example.myapplication
'
,
abilityName
:
'
SpecifiedAbility
'
,
...
...
@@ -112,7 +116,7 @@ specified启动模式为指定实例模式,针对一些特殊场景使用(
context
.
startAbility
(
want
).
then
(()
=>
{
console
.
info
(
'
Succeeded in starting ability.
'
);
}).
catch
((
err
)
=>
{
}).
catch
((
err
:
BusinessError
)
=>
{
console
.
error
(
`Failed to start ability. Code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
})
```
...
...
@@ -123,14 +127,17 @@ specified启动模式为指定实例模式,针对一些特殊场景使用(
```
ts
import
AbilityStage
from
'
@ohos.app.ability.AbilityStage
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
MyAbilityStage
extends
AbilityStage
{
onAcceptWant
(
want
):
string
{
onAcceptWant
(
want
:
Want
):
string
{
// 在被调用方的AbilityStage中,针对启动模式为specified的UIAbility返回一个UIAbility实例对应的一个Key值
// 当前示例指的是module1 Module的SpecifiedAbility
if
(
want
.
abilityName
===
'
SpecifiedAbility
'
)
{
// 返回的字符串Key标识为自定义拼接的字符串内容
return
`SpecifiedAbilityInstance_
${
want
.
parameters
.
instanceKey
}
`
;
if
(
want
.
parameters
)
{
return
`SpecifiedAbilityInstance_
${
want
.
parameters
.
instanceKey
}
`
;
}
}
return
''
;
...
...
zh-cn/application-dev/application-models/uiability-lifecycle.md
浏览文件 @
d7a60652
...
...
@@ -21,12 +21,14 @@ Create状态为在应用加载过程中,UIAbility实例创建完成时触发
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
// 应用初始化
}
...
//
...
}
```
...
...
@@ -46,7 +48,7 @@ import UIAbility from '@ohos.app.ability.UIAbility';
import
window
from
'
@ohos.window
'
;
export
default
class
EntryAbility
extends
UIAbility
{
...
//
...
onWindowStageCreate
(
windowStage
:
window
.
WindowStage
)
{
// 设置WindowStage的事件订阅(获焦/失焦、可见/不可见)
...
...
@@ -77,7 +79,7 @@ export default class EntryAbility extends UIAbility {
// 设置UI加载
windowStage
.
loadContent
(
'
pages/Index
'
,
(
err
,
data
)
=>
{
...
//
...
});
}
}
...
...
@@ -93,23 +95,28 @@ export default class EntryAbility extends UIAbility {
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
window
from
'
@ohos.window
'
;
import
{
BusinessError
}
from
'
@ohos.base
'
;
export
default
class
EntryAbility
extends
UIAbility
{
windowStage
:
window
.
WindowStage
;
...
windowStage
:
window
.
WindowStage
|
undefined
=
undefined
;
//
...
onWindowStageCreate
(
windowStage
:
window
.
WindowStage
)
{
this
.
windowStage
=
windowStage
;
...
//
...
}
onWindowStageDestroy
()
{
// 释放UI资源
// 例如在onWindowStageDestroy()中注销获焦/失焦等WindowStage事件
try
{
this
.
windowStage
.
off
(
'
windowStageEvent
'
);
if
(
this
.
windowStage
)
{
this
.
windowStage
.
off
(
'
windowStageEvent
'
);
}
}
catch
(
err
)
{
console
.
error
(
`Failed to disable the listener for window stage event changes. Code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
let
code
=
(
err
as
BusinessError
).
code
;
let
message
=
(
err
as
BusinessError
).
message
;
console
.
error
(
`Failed to disable the listener for windowStageEvent. Code is
${
code
}
, message is
${
message
}
`
);
};
}
}
...
...
@@ -133,7 +140,7 @@ Foreground和Background状态分别在UIAbility实例切换至前台和切换至
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
export
default
class
EntryAbility
extends
UIAbility
{
...
//
...
onForeground
()
{
// 申请系统需要的资源,或者重新申请在onBackground()中释放的资源
...
...
@@ -157,7 +164,7 @@ Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
export
default
class
EntryAbility
extends
UIAbility
{
...
//
...
onDestroy
()
{
// 系统资源的释放、数据的保存等
...
...
zh-cn/application-dev/application-models/uiability-usage.md
浏览文件 @
d7a60652
...
...
@@ -17,11 +17,11 @@ export default class EntryAbility extends UIAbility {
onWindowStageCreate
(
windowStage
:
window
.
WindowStage
)
{
// Main window is created, set main page for this ability
windowStage
.
loadContent
(
'
pages/Index
'
,
(
err
,
data
)
=>
{
...
//
...
});
}
...
//
...
}
```
...
...
@@ -37,9 +37,11 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
l
aunchParam
)
{
onCreate
(
want
:
Want
,
launchParam
:
AbilityConstant
.
L
aunchParam
)
{
// 获取UIAbility实例的上下文
let
context
=
this
.
context
;
...
...
...
@@ -51,6 +53,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r
```
ts
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
@
Entry
@
Component
...
...
@@ -58,7 +61,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r
private
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
startAbilityTest
()
{
let
want
=
{
let
want
:
Want
=
{
// Want参数信息
};
this
.
context
.
startAbility
(
want
);
...
...
@@ -76,6 +79,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r
```
ts
import
common
from
'
@ohos.app.ability.common
'
;
import
Want
from
'
@ohos.app.ability.Want
'
;
@
Entry
@
Component
...
...
@@ -83,7 +87,7 @@ UIAbility类拥有自身的上下文信息,该信息为[UIAbilityContext](../r
startAbilityTest
()
{
let
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
let
want
=
{
let
want
:
Want
=
{
// Want参数信息
};
context
.
startAbility
(
want
);
...
...
zh-cn/application-dev/application-models/want-overview.md
浏览文件 @
d7a60652
...
...
@@ -18,7 +18,9 @@
显式Want通常用于在当前应用中启动已知的目标应用组件,通过提供目标应用组件所在应用的Bundle名称信息(bundleName)并在Want对象内指定abilityName来启动目标应用组件。当有明确处理请求的对象时,显式Want是一种简单有效的启动目标应用组件的方式。
```
ts
let
wantInfo
=
{
import
Want
from
'
@ohos.app.ability.Want
'
;
let
wantInfo
:
Want
=
{
deviceId
:
''
,
// deviceId为空表示本设备
bundleName
:
'
com.example.myapplication
'
,
abilityName
:
'
FuncAbility
'
,
...
...
@@ -31,7 +33,9 @@
```
ts
let
wantInfo
=
{
import
Want
from
'
@ohos.app.ability.Want
'
;
let
wantInfo
:
Want
=
{
// uncomment line below if wish to implicitly query only in the specific bundle.
// bundleName: 'com.example.myapplication',
action
:
'
ohos.want.action.search
'
,
...
...
zh-cn/application-dev/application-models/windowextensionability.md
浏览文件 @
d7a60652
...
...
@@ -37,10 +37,12 @@ WindowExtensionAbility提供了onConnect()、onDisconnect()和onWindowReady()生
3.
打开WindowExtAbility.ts文件,导入WindowExtensionAbility的依赖包,自定义类继承WindowExtensionAbility并实现onWindowReady()、onConnect()和onDisconnect()生命周期回调。
```
ts
import
Extension
from
'
@ohos.application.WindowExtensionAbility
'
import
Extension
from
'
@ohos.application.WindowExtensionAbility
'
import
Want
from
'
@ohos.app.ability.Want
'
;
import
window
from
'
@ohos.window
'
;
export
default
class
WindowExtAbility
extends
Extension
{
onWindowReady
(
window
)
{
onWindowReady
(
window
:
window
.
Window
)
{
window
.
loadContent
(
'
WindowExtAbility/pages/index1
'
).
then
(()
=>
{
window
.
getProperties
().
then
((
pro
)
=>
{
console
.
info
(
"
WindowExtension
"
+
JSON
.
stringify
(
pro
));
...
...
@@ -49,11 +51,11 @@ WindowExtensionAbility提供了onConnect()、onDisconnect()和onWindowReady()生
})
}
onConnect
(
want
)
{
onConnect
(
want
:
Want
)
{
console
.
info
(
'
JSWindowExtension onConnect
'
+
want
.
abilityName
);
}
onDisconnect
(
want
)
{
onDisconnect
(
want
:
Want
)
{
console
.
info
(
'
JSWindowExtension onDisconnect
'
+
want
.
abilityName
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录