Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
9e0a26a4
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看板
提交
9e0a26a4
编写于
10月 17, 2022
作者:
Z
zhangxin_T
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
doc modify
Signed-off-by:
N
zhangxin_T
<
zhangxin312@huawei.com
>
上级
8bf9f28e
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
79 addition
and
68 deletion
+79
-68
zh-cn/application-dev/device-usage-statistics/device-usage-statistics-dev-guide.md
...ice-usage-statistics/device-usage-statistics-dev-guide.md
+1
-1
zh-cn/application-dev/task-management/Readme-CN.md
zh-cn/application-dev/task-management/Readme-CN.md
+1
-1
zh-cn/application-dev/task-management/background-agent-scheduled-reminder-guide.md
...k-management/background-agent-scheduled-reminder-guide.md
+2
-1
zh-cn/application-dev/task-management/background-task-overview.md
...plication-dev/task-management/background-task-overview.md
+32
-24
zh-cn/application-dev/task-management/continuous-task-dev-guide.md
...lication-dev/task-management/continuous-task-dev-guide.md
+39
-37
zh-cn/application-dev/task-management/efficiency-resources-apply-dev-guide.md
...v/task-management/efficiency-resources-apply-dev-guide.md
+2
-2
zh-cn/application-dev/task-management/public_sys-resources/bgtask_choice.png
...ev/task-management/public_sys-resources/bgtask_choice.png
+0
-0
zh-cn/application-dev/task-management/work-scheduler-dev-guide.md
...plication-dev/task-management/work-scheduler-dev-guide.md
+2
-2
未找到文件。
zh-cn/application-dev/device-usage-statistics/device-usage-statistics-dev-guide.md
浏览文件 @
9e0a26a4
...
...
@@ -5,7 +5,7 @@
设备使用信息统计,包括app usage/notification usage/system usage等使用统计。例如应用使用信息统计,用于保存和查询应用使用详情(app usage)、事件日志数据(event log)、应用分组(bundle group)情况。
部件缓存的应用记录(使用历史统计和使用事件记录)会在事件上报后30分钟内刷新到数据库持久化保存。
根据设备的使用信息统计接口,开发者可以开发出健康管理类应用来实现个人设备健康使用功能,
用户也可以获取
个人设备的使用记录。
根据设备的使用信息统计接口,开发者可以开发出健康管理类应用来实现个人设备健康使用功能,
并向用户展示其
个人设备的使用记录。
## 接口说明
注册相关接口包导入:
...
...
zh-cn/application-dev/task-management/Readme-CN.md
浏览文件 @
9e0a26a4
...
...
@@ -5,7 +5,7 @@
-
[
短时任务开发指导
](
transient-task-dev-guide.md
)
-
[
长时任务开发指导
](
continuous-task-dev-guide.md
)
-
[
延迟任务开发指导
](
work-scheduler-dev-guide.md
)
-
[
能效资源申请
开发指导
](
efficiency-resources-apply-dev-guide.md
)
-
[
申请能效资源
开发指导
](
efficiency-resources-apply-dev-guide.md
)
-
后台代理提醒
-
[
后台代理提醒开发概述
](
background-agent-scheduled-reminder-overview.md
)
...
...
zh-cn/application-dev/task-management/background-agent-scheduled-reminder-guide.md
浏览文件 @
9e0a26a4
...
...
@@ -24,7 +24,7 @@ reminderAgent:封装了发布、取消提醒类通知的方法。
## 开发步骤
>
![icon-note.gif](public_sys-resources/icon-note.gif)
**说明:**
> **说明:**
>
> 1. 应用需要配置权限:ohos.permission.PUBLISH_AGENT_REMINDER。
>
...
...
@@ -32,6 +32,7 @@ reminderAgent:封装了发布、取消提醒类通知的方法。
> 只有用户授权后,提醒代理的功能才能使用。
1、定义目标提醒代理。
2、发布相应的提醒代理。
```
ts
...
...
zh-cn/application-dev/task-management/background-task-overview.md
浏览文件 @
9e0a26a4
# 后台任务概述
后台应用频繁活动,会造成用户设备耗电快、卡顿等现象。因此,为了支撑性能、功耗诉求,系统仅允许应用在后台执行规范内的活动,规范外的活动默认会被挂起,当资源不足时会被回收。
针对应用或业务模块处于后台(无可见界面)时,有需要继续执行或者后续执行的业务,可基于业务类型,申请
[
短时任务
](
#短时任务
)
延迟挂起或者
[
长时任务
](
#长时任务
)
避免进入挂起状态;使用
[
延迟调度任务
](
#延迟任务
)
,执行对实时性要求不高的任务;同时针对特权应用,如果需要更加灵活的配置,可以申请
[
能效资源
](
#
能效资源申请
)
。
针对应用或业务模块处于后台(无可见界面)时,有需要继续执行或者后续执行的业务,可基于业务类型,申请
[
短时任务
](
#短时任务
)
延迟挂起或者
[
长时任务
](
#长时任务
)
避免进入挂起状态;使用
[
延迟调度任务
](
#延迟任务
)
,执行对实时性要求不高的任务;同时针对特权应用,如果需要更加灵活的配置,可以申请
[
能效资源
](
#
申请能效资源
)
。
## 后台任务类型
OpenHarmony将后台任务分为四种类型,并提供了一个资源申请的扩展功能:
**
1.
无后台业务**
:应用或业务模块退到后台后,无任务需要处理。
**无后台业务**
:应用或业务模块退到后台后,无任务需要处理。
**
2.
短时任务**
:应用或业务模块退到后台后,如果有紧急不可推迟且短时间能完成的任务,如应用退后台要进行数据压缩,不可中断,则使用短时任务申请延迟进入挂起(Suspend)状态。
**短时任务**
:应用或业务模块退到后台后,如果有紧急不可推迟且短时间能完成的任务,如应用退后台要进行数据压缩,不可中断,则使用短时任务申请延迟进入挂起(Suspend)状态。
**
3.
长时任务**
:如果是用户发起的可感知业务需要长时间后台运行,如后台播放音乐、导航、设备连接、VoIP等,则使用长时任务避免进入挂起(Suspend)状态。
**长时任务**
:如果是用户发起的可感知业务需要长时间后台运行,如后台播放音乐、导航、设备连接、VoIP等,则使用长时任务避免进入挂起(Suspend)状态。
**
4.
延迟任务**
:延迟任务调度给应用提供一个机制,允许应用根据系统安排,在系统空闲时执行实时性不高的任务。当满足设定条件的时候,任务会被放入待调度队列,当系统空闲时调度该任务。
**延迟任务**
:延迟任务调度给应用提供一个机制,允许应用根据系统安排,在系统空闲时执行实时性不高的任务。当满足设定条件的时候,任务会被放入待调度队列,当系统空闲时调度该任务。
**
5.
能效资源**
:能效资源包括CPU资源、WORK_SCHEDULER资源、软件资源(COMMON_EVENT, TIMER)、硬件资源(GPS, BLUETOOTH)。如果应用或者进程申请了能效资源,那么根据能效资源的类型会拥有相应的特权,例如申请了CPU资源的可以不被挂起,申请了WORK_SCHEDULER后延时任务可以拥有更长的执行时间。
**能效资源**
:能效资源包括CPU资源、WORK_SCHEDULER资源、软件资源(COMMON_EVENT, TIMER)、硬件资源(GPS, BLUETOOTH)。如果应用或者进程申请了能效资源,那么根据能效资源的类型会拥有相应的特权,例如申请了CPU资源的可以不被挂起,申请了WORK_SCHEDULER后延时任务可以拥有更长的执行时间。
## 最佳后台任务选择
![
后台任务选择
](
public_sys-resources/bgtask_choice.png
)
## 短时任务
退到后台的应用有不可中断且短时间能完成的任务时,可以使用短时任务机制。该机制允许应用在后台短时间内完成任务,保障应用业务运行不受后台生命周期管理的影响。
>
![icon-note.gif](public_sys-resources/icon-note.gif)
**说明:**
> **说明:**
> 短时任务仅针对应用的临时任务提供资源使用生命周期保障,限制单次最大使用时长为3分钟,全天使用配额默认为10分钟(具体时长系统根据应用场景和系统状态智能调整)。
...
...
@@ -73,32 +76,37 @@ OpenHarmony提供了九种后台模式,供需要在后台做长时任务的业
延迟调度任务的使用需要遵从如下约束和规则:
-
**超时**
:系统会设置超时机制,延迟任务回调只允许运行一段时间,超时之后,系统会主动停止。默认的超时限制为2分钟,对于系统应用,可以通过
[
能效资源申请接口
](
background-task-overview.md#能效资源申请
)
获取更长的执行时间(充电状态20分钟,非充电状态10分钟)。
-
**超时**
:系统会设置超时机制,延迟任务回调只允许运行一段时间,超时之后,系统会主动停止。默认的超时限制为2分钟,对于系统应用,可以通过
[
申请能效资源
](
efficiency-resources-apply-dev-guide.md
)
获取更长的执行时间(充电状态20分钟,非充电状态10分钟)。
-
**执行频率**
:系统会根据应用的活跃度对延迟任务做分级管控,限制延迟任务调度的执行频率。对于通过能效资源接口申请了WORK_SCHEDULER资源的应用,在资源的有效期内,它的延迟任务执行频率不受限制。
| 应用分组 | 延迟任务执行频率约束 |
| --------------------|------------------------- |
| 活跃 | 最小间隔2小时 |
| 每日使用 | 最小间隔4小时 |
| 经常使用 | 最小间隔24小时 |
| 不经常使用 | 最小间隔48小时 |
| 受限分组 | 禁止 |
| 未使用分组 | 禁止 |
|
[
能效资源豁免分组
](
../reference/apis/js-apis-backgroundTaskManager.md#resourcetype9
)
| 执行频率不受限制 |
| 应用分组 | 延迟任务执行频率约束 |
| --------------------|------------------------- |
| 活跃 | 最小间隔2小时 |
| 每日使用 | 最小间隔4小时 |
| 经常使用 | 最小间隔24小时 |
| 不经常使用 | 最小间隔48小时 |
| 受限分组 | 禁止 |
| 未使用分组 | 禁止 |
| [能效资源豁免分组](../reference/apis/js-apis-backgroundTaskManager.md#resourcetype9) | 执行频率不受限制 |
-
**WorkInfo设置参数约束**
(1) workId、bundleName、abilityName为必填项,bundleName必须填本应用,否则校验失败。
-
workId、bundleName、abilityName为必填项,bundleName必须填本应用,否则校验失败。
-
至少要设置一个满足的条件。
(2)至少要设置一个满足的条件
。
-
重复任务时间间隔至少20分钟,当设置重复任务时间间隔时,必须设置始终重复和重复次数中的一个
。
(3)重复任务时间间隔至少20分钟,当设置重复任务时间间隔时,必须设置始终重复和重复次数中的一个
。
-
携带参数信息支持number、string、bool三种类型
。
(4)携带参数信息支持number、string、bool三种类型。
## 申请能效资源
能效资源可以分为四种:CPU资源,WORK_SCHEDULER资源,软件资源(COMMON_EVENT,TIMER),硬件资源(GPS,BLUETOOTH,AUDIO)。
## 能效资源申请
能效资源可以分为四种,CPU资源,WORK_SCHEDULER资源,软件资源(COMMON_EVENT,TIMER),硬件资源(GPS,BLOOTOOTH,AUDIO)。
应用或进程申请能效资源后能够获得相应特权,例如:申请CPU资源后可以不被挂起,直到任务完成;申请WORK_SCHEDULER资源后不受延迟任务执行频率约束,且任务执行时间增加;申请软件、硬件资源后,相关资源在挂起状态下不被代理。
应用或进程申请能效资源后能够获得相应特权:
*
申请CPU资源后可以不被挂起,直到任务完成。
*
申请WORK_SCHEDULER资源后不受延迟任务执行频率约束,且任务执行时间增加
*
申请COMMON_EVENT资源后,应用在后台处于挂起状态时,仍然能够接收到系统公共事件,申请TIMER资源后,应用能够使用定时器执行精确定时任务、
*
申请硬件资源后,应用在后台被挂起后,依然能够被相关服务唤醒,执行相应的任务。
**表1**
能效资源种类
...
...
zh-cn/application-dev/task-management/continuous-task-dev-guide.md
浏览文件 @
9e0a26a4
...
...
@@ -46,29 +46,29 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用connectAbility()方法启动并连接Service Ability。在获取到服务的代理对象后,与服务进行通信,控制长时任务的申请和取消。
1
.
新建Api Version 8的工程后,在工程目录中右键选择“new” -> “Ability” -> “Service Ability” 快速创建Service Ability组件。并在config.json文件中配置长时任务权限、后台模式类型,其中Ability类型为“service”。
1
、
新建Api Version 8的工程后,在工程目录中右键选择“new” -> “Ability” -> “Service Ability” 快速创建Service Ability组件。并在config.json文件中配置长时任务权限、后台模式类型,其中Ability类型为“service”。
```
"module": {
"package": "com.example.myapplication",
"abilities": [
```
"module": {
"package": "com.example.myapplication",
"abilities": [
{
"backgroundModes": [
"backgroundModes": [
"dataTransfer",
"location"
], // 后台模式类型
"type": "service" // ability类型为service
], // 后台模式类型
"type": "service" // ability类型为service
}
],
"reqPermissions": [
],
"reqPermissions": [
{
"name": "ohos.permission.KEEP_BACKGROUND_RUNNING" // 长时任务权限
"name": "ohos.permission.KEEP_BACKGROUND_RUNNING" // 长时任务权限
}
]
}
```
]
}
```
2
.
在Service Ability调用长时任务的申请和取消接口。
2
、
在Service Ability调用长时任务的申请和取消接口。
```
js
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
...
...
@@ -177,25 +177,25 @@ export default {
Stage模型的相关信息参考
[
Stage模型综述
](
../ability/stage-brief.md
)
。
1
.
新建Api Version 9的工程后,在工程目录中右键选择“New” -> “Ability” 快速创建Ability组件。并在module.json5文件中配置长时任务权限、后台模式类型。
1
、
新建Api Version 9的工程后,在工程目录中右键选择“New” -> “Ability” 快速创建Ability组件。并在module.json5文件中配置长时任务权限、后台模式类型。
```
"module": {
"abilities": [
```
"module": {
"abilities": [
{
"backgroundModes": [
"backgroundModes": [
"dataTransfer",
"location"
], // 后台模式类型
], // 后台模式类型
}
],
"requestPermissions": [
],
"requestPermissions": [
{
"name": "ohos.permission.KEEP_BACKGROUND_RUNNING" // 长时任务权限
"name": "ohos.permission.KEEP_BACKGROUND_RUNNING" // 长时任务权限
}
]
}
```
]
}
```
2、在应用内执行长时任务时,由于元能力启动管控规则限制,不支持同应用通过startAbilityByCall的形式在后台创建并运行Ability。可以直接在page中,执行相应的代码。Stage模型的Ability使用参考
[
Ability开发指导
](
../ability/stage-ability.md
)
。
...
...
@@ -229,20 +229,20 @@ struct Index {
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent
.
getWantAgent
(
wantAgentInfo
).
then
((
wantAgentObj
)
=>
{
backgroundTaskManager
.
startBackgroundRunning
(
this
.
context
,
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation startBackgroundRunning failed Cause:
"
+
err
);
});
backgroundTaskManager
.
startBackgroundRunning
(
this
.
context
,
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation startBackgroundRunning failed Cause:
"
+
err
);
});
});
}
stopContinuousTask
()
{
backgroundTaskManager
.
stopBackgroundRunning
(
this
.
context
).
then
(()
=>
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation stopBackgroundRunning failed Cause:
"
+
err
);
console
.
error
(
"
Operation stopBackgroundRunning failed Cause:
"
+
err
);
});
}
...
...
@@ -285,6 +285,8 @@ import Ability from '@ohos.application.Ability'
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
import
wantAgent
from
'
@ohos.wantAgent
'
;
const
MSG_SEND_METHOD
:
string
=
'
CallSendMsg
'
let
mContext
=
null
;
function
startContinuousTask
()
{
...
...
@@ -347,7 +349,7 @@ class MySequenceable {
function
sendMsgCallback
(
data
)
{
console
.
info
(
'
BgTaskAbility funcCallBack is called
'
+
data
)
let
receivedData
=
new
My
s
equenceable
(
0
,
""
)
let
receivedData
=
new
My
S
equenceable
(
0
,
""
)
data
.
readSequenceable
(
receivedData
)
console
.
info
(
`receiveData[
${
receivedData
.
num
}
,
${
receivedData
.
str
}
]`
)
// 可以根据Caller端发送的序列化数据的str值,执行不同的方法。
...
...
@@ -356,7 +358,7 @@ function sendMsgCallback(data) {
}
else
if
(
receivedData
.
str
===
'
stop_bgtask
'
)
{
stopContinuousTask
();
}
return
new
My
s
equenceable
(
10
,
"
Callee test
"
);
return
new
My
S
equenceable
(
10
,
"
Callee test
"
);
}
export
default
class
BgTaskAbility
extends
Ability
{
...
...
zh-cn/application-dev/task-management/efficiency-resources-apply-dev-guide.md
浏览文件 @
9e0a26a4
##
能效资源申请
##
申请能效资源
### 场景说明
...
...
@@ -8,7 +8,7 @@
### 接口说明
**表1**
能效资源申请
主要接口
**表1**
申请能效资源
主要接口
| 接口名 | 描述 |
| ---------------------------------------- | ---------------------------------------- |
...
...
zh-cn/application-dev/task-management/public_sys-resources/bgtask_choice.png
0 → 100644
浏览文件 @
9e0a26a4
38.3 KB
zh-cn/application-dev/task-management/work-scheduler-dev-guide.md
浏览文件 @
9e0a26a4
...
...
@@ -2,7 +2,7 @@
## 场景介绍
应用要执行对实时性要求不高的任务或持久性任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见
[
延迟任务调度
概述
](
./work-scheduler-overview.md
)
。
应用要执行对实时性要求不高的任务或持久性任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见
[
延迟任务调度
约束
](
./background-task-overview.md#延迟任务调度约束
)
。
## 接口说明
...
...
@@ -34,7 +34,7 @@ isLastWorkTimeOut(workId: number): Promise\<boolean>;| 获取上次任务是否
**表2**
WorkInfo包含参数
> **说明:** WorkInfo设置参数约束见[延迟任务调度
概述](./work-scheduler-overview.md
)
> **说明:** WorkInfo设置参数约束见[延迟任务调度
约束](./background-task-overview.md#延迟任务调度约束
)
参数名| 类型 |描述
---------------------------------------------------------|-----------------------------------------|---------------------------------------------------------
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录