提交 4827dddf 编写于 作者: Z zhangxin_T

bugfix

Signed-off-by: Nzhangxin_T <zhangxin312@huawei.com>
上级 29c001bd
...@@ -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&lt;void&gt;): void;<br/>function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise&lt;void&gt;; | 服务启动后,向系统申请长时任务,使服务一直保持后台运行 | | function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback&lt;void&gt;): void;<br/>function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise&lt;void&gt;; | 服务启动后,向系统申请长时任务,使服务一直保持后台运行 |
| function stopBackgroundRunning(context: Context, callback: AsyncCallback&lt;void&gt;): void;<br/>function stopBackgroundRunning(context: Context): Promise&lt;void&gt;; | 停止后台长时任务的运行 | | function stopBackgroundRunning(context: Context, callback: AsyncCallback&lt;void&gt;): void;<br/>function stopBackgroundRunning(context: Context): Promise&lt;void&gt;; | 停止后台长时任务的运行 |
**表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(() => {
......
...@@ -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.
先完成此消息的编辑!
想要评论请 注册