Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
4827dddf
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,发现更多精彩内容 >>
提交
4827dddf
编写于
2月 12, 2022
作者:
Z
zhangxin_T
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
bugfix
Signed-off-by:
N
zhangxin_T
<
zhangxin312@huawei.com
>
上级
29c001bd
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
45 addition
and
10 deletion
+45
-10
zh-cn/application-dev/background-task-management/background-task-dev-guide.md
...v/background-task-management/background-task-dev-guide.md
+37
-2
zh-cn/application-dev/background-task-management/background-task-overview.md
...ev/background-task-management/background-task-overview.md
+8
-8
未找到文件。
zh-cn/application-dev/background-task-management/background-task-dev-guide.md
浏览文件 @
4827dddf
...
@@ -33,6 +33,7 @@ import backgroundTaskManager from '@ohos.backgroundTaskManager';
...
@@ -33,6 +33,7 @@ import backgroundTaskManager from '@ohos.backgroundTaskManager';
1.
申请延迟挂起
1.
申请延迟挂起
```
js
```
js
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
...
@@ -46,6 +47,7 @@ var id = delayInfo.requestId;console.info("requestId is: " + id);
...
@@ -46,6 +47,7 @@ var id = delayInfo.requestId;console.info("requestId is: " + id);
2.
获取进入挂起前的剩余时间
2.
获取进入挂起前的剩余时间
```
js
```
js
backgroundTaskManager
.
getRemainingDelayTime
(
id
).
then
(
res
=>
{
backgroundTaskManager
.
getRemainingDelayTime
(
id
).
then
(
res
=>
{
console
.
log
(
'
promise => Operation succeeded. Data:
'
+
JSON
.
stringify
(
res
));
console
.
log
(
'
promise => Operation succeeded. Data:
'
+
JSON
.
stringify
(
res
));
...
@@ -56,6 +58,7 @@ backgroundTaskManager.getRemainingDelayTime(id).then( res => {
...
@@ -56,6 +58,7 @@ backgroundTaskManager.getRemainingDelayTime(id).then( res => {
3. 取消延迟挂起
3. 取消延迟挂起
```
js
```
js
backgroundTaskManager.cancelSuspendDelay(id);
backgroundTaskManager.cancelSuspendDelay(id);
```
```
...
@@ -102,7 +105,8 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
...
@@ -102,7 +105,8 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
| function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback<void>): void;<br/>function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void>; | 服务启动后,向系统申请长时任务,使服务一直保持后台运行 |
| function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback<void>): void;<br/>function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void>; | 服务启动后,向系统申请长时任务,使服务一直保持后台运行 |
| function stopBackgroundRunning(context: Context, callback: AsyncCallback<void>): void;<br/>function stopBackgroundRunning(context: Context): Promise<void>; | 停止后台长时任务的运行 |
| function stopBackgroundRunning(context: Context, callback: AsyncCallback<void>): void;<br/>function stopBackgroundRunning(context: Context): Promise<void>; | 停止后台长时任务的运行 |
**表4** 长时任务BackgroundMode参数
**表4** 后台模式类型
| 参数名 | id值 | 描述 |
| 参数名 | id值 | 描述 |
| -------- | -------- | -------- |
| -------- | -------- | -------- |
| DATA_TRANSFER | 1 | 数据传输 |
| DATA_TRANSFER | 1 | 数据传输 |
...
@@ -118,6 +122,36 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
...
@@ -118,6 +122,36 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
## 开发步骤
## 开发步骤
1. 在config.json文件中配置后台模式参数和权限
```
json
"abilities": [
{
"visible": true,
"backgroundModes": [
"dataTransfer",
"audioPlayback"
],
"srcPath": "Service",
"name": ".Service",
"icon": "$media:icon",
"srcLanguage": "js",
"description": "$string:description_service",
"type": "service"
},
],
"defPermissions": [
{
"name": "ohos.permission.KEEP_BACKGROUND_RUNNING"
}
],
"reqPermissions": [
{
"name": "ohos.permission.KEEP_BACKGROUND_RUNNING"
}
]
```
1. 申请长时任务
1. 申请长时任务
```
js
```
js
...
@@ -137,6 +171,7 @@ let wantAgentInfo = {
...
@@ -137,6 +171,7 @@ let wantAgentInfo = {
wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESET_FLAG]
wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESET_FLAG]
};
};
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
...
@@ -184,7 +219,7 @@ function startBackgroundRunning() {
...
@@ -184,7 +219,7 @@ function startBackgroundRunning() {
wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESET_FLAG]
wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESET_FLAG]
};
};
// 通过getWantAgent方法获取WantAgent对象
// 通过
wantAgent模块的
getWantAgent方法获取WantAgent对象
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
...
...
zh-cn/application-dev/background-task-management/background-task-overview.md
浏览文件 @
4827dddf
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
-
**配额机制**
:为了防止应用滥用保活,或者申请后不取消,每个应用每天都会有一定配额(会根据用户的使用习惯动态调整),配额消耗完就不再允许申请短时任务,所以应用完成短时任务后立刻取消延时申请,避免消耗配额。(注,这个配额指的是申请的时长,系统默认应用在后台运行的时间不计算在内)。
-
**配额机制**
:为了防止应用滥用保活,或者申请后不取消,每个应用每天都会有一定配额(会根据用户的使用习惯动态调整),配额消耗完就不再允许申请短时任务,所以应用完成短时任务后立刻取消延时申请,避免消耗配额。(注,这个配额指的是申请的时长,系统默认应用在后台运行的时间不计算在内)。
## 长时任务
## 长时任务
长时任务
类型给用户能直观感受到的且需要一直在后台运行的业务提供后台运行声明周期的保障。比如,业务需要在后台播放声音,或者需要在后台持续导航定位等。此类用户可以
感知到的后台业务行为,可以通过使用长时任务对应的后台模式保障业务在后台的运行,支撑应用完成在后台的业务。
长时任务
给用户能够直观感受到的且需要一直在后台运行的业务提供后台运行生命周期的保障。比如:业务需要在后台播放声音、需要在后台持续导航定位等。此类用户可以直观
感知到的后台业务行为,可以通过使用长时任务对应的后台模式保障业务在后台的运行,支撑应用完成在后台的业务。
### 后台模式分类
### 后台模式分类
OpenHarmony提供了九种后台模式,供需要在后台做长时任务的业务使用,具体的后台模式类型如下:
OpenHarmony提供了九种后台模式,供需要在后台做长时任务的业务使用,具体的后台模式类型如下:
...
@@ -44,15 +44,15 @@ OpenHarmony提供了九种后台模式,供需要在后台做长时任务的业
...
@@ -44,15 +44,15 @@ OpenHarmony提供了九种后台模式,供需要在后台做长时任务的业
| BackgroundMode | 说明 | 通知栏显示提示 | 备注 |
| BackgroundMode | 说明 | 通知栏显示提示 | 备注 |
| -------- | -------- | -------- | -------- |
| -------- | -------- | -------- | -------- |
| dataTransfer | 通过网络/对端设备进行数据下载、备份、分享、传输等
业务
| 正在运行数据传输任务 | |
| dataTransfer | 通过网络/对端设备进行数据下载、备份、分享、传输等 | 正在运行数据传输任务 | |
| audioPlayback | 音频输出
业务
| 正在运行音频播放任务 | |
| audioPlayback | 音频输出 | 正在运行音频播放任务 | |
| audioRecording | 音频输入
业务
| 正在运行录音任务 | |
| audioRecording | 音频输入 | 正在运行录音任务 | |
| location | 定位、导航 | 正在运行定位任务 | |
| location | 定位、导航 | 正在运行定位任务 | |
| bluetoothInteraction | 蓝牙传输
业务
| 正在运行蓝牙相关任务 | |
| bluetoothInteraction | 蓝牙传输 | 正在运行蓝牙相关任务 | |
| multiDeviceConnection | 分布式互联任务 | 正在运行分布式任务 | |
| multiDeviceConnection | 分布式互联任务 | 正在运行分布式任务 | |
| wifiInteraction | WLAN传输
业务
| 正在运行WLAN相关任务 | SystemApi,仅对System权限应用开放 |
| wifiInteraction | WLAN传输 | 正在运行WLAN相关任务 | SystemApi,仅对System权限应用开放 |
| voip | 音视频电话、VOIP
业务
| 正在运行通话相关任务 | SystemApi,仅对System权限应用开放 |
| voip | 音视频电话、VOIP | 正在运行通话相关任务 | SystemApi,仅对System权限应用开放 |
| taskKeeping | 计算
业
务 | 正在运行计算任务 | PC特有,仅在PC申请生效 |
| taskKeeping | 计算
任
务 | 正在运行计算任务 | PC特有,仅在PC申请生效 |
### 长时任务使用约束
### 长时任务使用约束
-
如果用户选择可感知业务(如播音、导航、上传下载等),触发对应后台模式,在任务启动时,系统会强制弹出通知提醒用户。
-
如果用户选择可感知业务(如播音、导航、上传下载等),触发对应后台模式,在任务启动时,系统会强制弹出通知提醒用户。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录