Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c3666305
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,发现更多精彩内容 >>
提交
c3666305
编写于
2月 24, 2023
作者:
zyjhandsome
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化《使用ApplicationContext订阅回调》的实际使用场景
Signed-off-by:
zyjhandsome
<
zyjhandsome@126.com
>
上级
593a8ea1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
45 addition
and
31 deletion
+45
-31
zh-cn/application-dev/application-models/subscribe-system-environment-variable-changes.md
...n-models/subscribe-system-environment-variable-changes.md
+45
-31
未找到文件。
zh-cn/application-dev/application-models/subscribe-system-environment-variable-changes.md
浏览文件 @
c3666305
...
...
@@ -15,54 +15,68 @@
[
ApplicationContext
](
../reference/apis/js-apis-inner-application-applicationContext.md
)
提供了注册回调函数以订阅系统环境变量的变化,并且可以通过调用相应的方法来撤销该回调。这有助于在资源不再需要时释放相关资源,从而提高系统的可靠性和性能。
1.
使用
`ApplicationContext.on(type: 'environment', callback: EnvironmentCallback)`
方法
订阅系统环境变量的变化,以便应用程序可以动态响应这些变化。例如,可以使用该方法来
监测系统语言的变化。
1.
使用
`ApplicationContext.on(type: 'environment', callback: EnvironmentCallback)`
方法
,应用程序可以通过在非应用组件模块中订阅系统环境变量的变化来动态响应这些变化。例如,使用该方法在页面中
监测系统语言的变化。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
common
from
'
@ohos.app.ability.common
'
;
let
callbackId
:
number
;
// 注册订阅系统环境变化的ID
let
systemLanguage
:
string
;
// 系统当前语言
@
Entry
@
Component
struct
Index
{
private
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
private
callbackId
:
number
;
// 注册订阅系统环境变化的ID
export
default
class
EntryAbility
extends
UIAbility
{
onCreate
(
want
,
launchParam
)
{
// 1.获取ApplicationContext
let
applicationContext
=
this
.
context
.
getApplicationContext
();
systemLanguage
=
this
.
context
.
config
.
language
;
// 获取系统当前语言
subscribeConfigurationUpdate
()
{
let
systemLanguage
:
string
=
this
.
context
.
config
.
language
;
// 获取系统当前语言
// 2.通过applicationContext订阅环境变量变化
let
environmentCallback
=
{
onConfigurationUpdated
(
newConfig
)
{
console
.
info
(
`onConfigurationUpdated newConfig:
${
JSON
.
stringify
(
newConfig
)}
`
);
if
(
systemLanguage
!==
newConfig
.
language
)
{
console
.
info
(
`systemLanguage from
${
systemLanguage
}
changed to
${
newConfig
.
language
}
`
);
}
},
onMemoryLevel
(
level
)
{
console
.
info
(
`onMemoryLevel level:
${
level
}
`
);
}
}
// 1.获取ApplicationContext
let
applicationContext
=
this
.
context
.
getApplicationContext
();
// 2.通过applicationContext订阅环境变量变化
let
environmentCallback
=
{
onConfigurationUpdated
(
newConfig
)
{
console
.
info
(
`onConfigurationUpdated systemLanguage is
${
systemLanguage
}
, newConfig:
${
JSON
.
stringify
(
newConfig
)}
`
);
callbackId
=
applicationContext
.
on
(
'
environment
'
,
environmentCallback
);
if
(
this
.
systemLanguage
!==
newConfig
.
language
)
{
console
.
info
(
`systemLanguage from
${
systemLanguage
}
changed to
${
newConfig
.
language
}
`
);
systemLanguage
=
newConfig
.
language
;
// 将变化之后的系统语言保存,作为下一次变化前的系统语言
}
},
onMemoryLevel
(
level
)
{
console
.
info
(
`onMemoryLevel level:
${
level
}
`
);
}
}
this
.
callbackId
=
applicationContext
.
on
(
'
environment
'
,
environmentCallback
);
}
// 页面展示
build
()
{
// ...
}
}
```
2.
在资源使用完成之后,可以通过调用
`ApplicationContext.off(type: 'environment', callbackId: number)`
方法释放相关资源。
```
ts
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
common
from
'
@ohos.app.ability.common
'
;
let
callbackId
:
number
;
// 注册订阅系统环境变化的ID
@
Entry
@
Component
struct
Index
{
private
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
private
callbackId
:
number
;
// 注册订阅系统环境变化的ID
export
default
class
EntryAbility
extends
UIAbility
{
// ...
unsubscribeConfigurationUpdate
()
{
let
applicationContext
=
this
.
context
.
getApplicationContext
();
applicationContext
.
off
(
'
environment
'
,
this
.
callbackId
);
}
onDestroy
()
{
let
applicationContext
=
this
.
context
.
getApplicationContext
();
applicationContext
.
off
(
'
environment
'
,
callbackId
);
}
// 页面展示
build
()
{
// ...
}
}
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录