Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
97616189
D
Docs
项目概览
OpenHarmony
/
Docs
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
97616189
编写于
4月 24, 2022
作者:
O
openharmony_ci
提交者:
Gitee
4月 24, 2022
浏览文件
操作
浏览文件
下载
差异文件
!3432 更新后台管理模块开发指南
Merge pull request !3432 from 张鑫/master
上级
5a3d6b38
8dd4b4d6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
42 addition
and
6 deletion
+42
-6
zh-cn/application-dev/background-task-management/background-task-dev-guide.md
...v/background-task-management/background-task-dev-guide.md
+42
-6
未找到文件。
zh-cn/application-dev/background-task-management/background-task-dev-guide.md
浏览文件 @
97616189
...
...
@@ -116,9 +116,9 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
### 开发步骤
1.
在config.json文件中配置长时任务权限、后台模式类型,其中ability类型为service
。
1.
新建Api Version 8的工程后,在工程目录中右键选择“new” -> “Ability” -> “Service Ability” 快速创建Service Ability组件。并在config.json文件中配置长时任务权限、后台模式类型,其中Ability类型为“service”
。
```
json
```
"module": {
"package": "com.example.myapplication",
"abilities": [
...
...
@@ -183,25 +183,32 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
```
### 开发实例
基于FA的Service Ability使用,参考
[
ServiceAbility开发指导
](
../ability/fa-serviceability.md
)
。
当不需要与后台执行的长时任务交互时,可以采用startAbility()方法启动Service Ability。并在Service Ability的onStart回调方法中,调用长时任务的申请接口,声明此服务需要在后台长时运行。当任务执行完,再调用长时任务取消接口,及时释放资源。
当服务启动后,在serviceAbility的onStart回调方法中,调用长时任务的申请接口,声明此服务需要在后台长时运行。在onStop回调方法里,调用长时任务取消接口,声明取消长时任务。
在service.js文件中:
当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用connectAbility()方法启动并连接Service Ability。在获取到服务的代理对象后,与服务进行通信,控制长时任务的申请和取消。
```
js
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
import
wantAgent
from
'
@ohos.wantAgent
'
;
import
rpc
from
"
@ohos.rpc
"
;
function
startBackgroundRunning
()
{
let
wantAgentInfo
=
{
// 点击通知后,将要执行的动作列表
wants
:
[
{
bundleName
:
"
com.example.myapplication
"
,
abilityName
:
"
com.example.myapplication.MainAbility
"
}
],
// 点击通知后,动作类型
operationType
:
wantAgent
.
OperationType
.
START_ABILITY
,
// 使用者自定义的一个私有值
requestCode
:
0
,
// 点击通知后,动作执行属性
wantAgentFlags
:
[
wantAgent
.
WantAgentFlags
.
UPDATE_PRESENT_FLAG
]
};
...
...
@@ -224,18 +231,47 @@ function stopBackgroundRunning() {
});
}
let
mMyStub
;
class
MyStub
extends
rpc
.
RemoteObject
{
constructor
(
des
)
{
if
(
typeof
des
===
'
string
'
)
{
super
(
des
);
}
else
{
return
null
;
}
}
onRemoteRequest
(
code
,
data
,
reply
,
option
)
{
console
.
log
(
'
ServiceAbility onRemoteRequest called
'
);
// code 的具体含义用户自定义
if
(
code
===
1
)
{
// 接收到申请长时任务的请求码
startContinuousTask
();
// 此处执行具体长时任务
}
else
if
(
code
===
2
)
{
// 接收到取消长时任务的请求码
stopContinuousTask
();
}
else
{
console
.
log
(
'
ServiceAbility unknown request code
'
);
}
return
true
;
}
}
export
default
{
onStart
(
want
)
{
console
.
info
(
'
ServiceAbility onStart
'
);
mMyStub
=
new
MyStub
(
"
ServiceAbility-test
"
);
startBackgroundRunning
();
// 此处执行后台具体的长时任务。
stopBackgroundRunning
();
},
onStop
()
{
console
.
info
(
'
ServiceAbility onStop
'
);
stopBackgroundRunning
();
},
onConnect
(
want
)
{
console
.
info
(
'
ServiceAbility onConnect
'
);
return
{}
;
return
mMyStub
;
},
onReconnect
(
want
)
{
console
.
info
(
'
ServiceAbility onReconnect
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录