鸿蒙 NEXT 开发之后台任务开发服务框架学习笔记


                                                                                                                                                <p style="color:#555555; margin-left:0; margin-right:0; text-align:start">作者:马剑威(威哥爱编程),踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!<a href="https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2Ftraining%2Fdev-cert-detail%2F101666948302721398%3Fha_source%3Dhmosclass-kaiyuanzhongguo%26ha_sourceId%3D89000441" rel="nofollow" target="_blank"><span style="color:#333333">https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398?ha_source=hmosclass-kaiyuanzhongguo&amp;ha_sourceId=89000441</span></a></p> 

大家好,我是 V 哥,在学习鸿蒙时,想做一个音乐播放器,其中播放音乐的功能,一定要使用到后台任务开发服务,鸿蒙 NEXT 就提供了这样的能力,Background Tasks Kit(后台任务开发服务)是一个强大的框架,它允许开发者高效地管理和调度后台任务,实现应用功能的持续运行。今天的内容,我们来讨论学习后台任务开发服务框架的能力。

Background Tasks Kit 简介

Background Tasks Kit是鸿蒙 NEXT 提供的后台任务开发框架,好像是一句废话,哈哈,来看主要作用包括:

1.降低设备能耗:通过规范后台任务的使用,避免应用在后台过度消耗设备资源,延长设备续航时间。

2.优化用户体验:确保后台任务的正常运行,避免应用在后台被系统杀掉,保证用户体验的连贯性。

3.提供多种后台任务类型:支持短时任务、长时任务、延迟任务、代理提醒等多种后台任务类型,满足不同场景的开发需求。

后台任务类型及特点

我们来看一下,Background Tasks Kit 提供的四种后台任务类型,每种类型都有其独特的特点和适用场景:

1.短时任务(Transient Task)

· 特点:实时性要求高,耗时不长。

· 适用场景:保存状态、发送消息、网络请求等。

2.长时任务(Continuous Task)

· 特点:长时间后台运行。

· 适用场景:音乐播放、导航、设备连接、位置跟踪等。

3.延迟任务(Deferred Task)

· 特点:允许条件触发。

· 适用场景:有网络时不定期主动获取邮件、定期同步数据等。

4.代理提醒(Agent-powered Reminder)

· 特点:系统在后台代理应用执行的提醒任务。

· 适用场景:倒计时、闹钟、日历、会议提醒等。

应用场景

后台任务开发服务,应用场景是非常多的,比如以下4种应用,就会用到:

1.音乐播放应用

· 在音乐播放应用中,即使用户将应用切换到后台,也可以通过申请长时任务(Continuous Task)来保证音乐播放的连续性,提升用户体验。

2.导航应用

· 导航应用在后台运行时,可以通过长时任务(Continuous Task)持续提供导航服务,即使在屏幕关闭或应用不在前台时也能继续导航。

3.文件下载

· 对于需要在后台下载大文件的场景,可以利用长时任务(Continuous Task)来保证下载任务的持续进行,如浏览器后台下载文件。

4.邮件同步

· 邮件应用可以利用延迟任务(Deferred Task)在有网络连接时定期同步邮件,确保用户及时收到新邮件。

接下来,V 哥将分别对短时任务,长时任务,延迟任务和代理提醒四种类型,通过案例来讲解如何使用哈。

实现短时任务(Transient Task)的案例

我们来看一个使用 ArkTS 实现短时任务(Transient Task)的完整案例代码:

案例代码

图片 1.png

图片 2.png

代码解释

1.导入背景任务管理器:

图片 3.png

导入鸿蒙系统的背景任务管理器模块,用于申请和管理短时任务。

2.定义组件和状态:

图片 4.png

定义一个组件 Index,并初始化两个状态:message 用于显示信息,requestId 用于存储请求短时任务的ID。

3.申请短时任务:

图片 5.png

定义 requestSuspendDelay 方法,用于申请短时任务。如果申请成功,将请求ID存储在 requestId 中,并设置一个回调函数,当短时任务即将超时时,取消短时任务。

4.取消短时任务:

图片 6.png

定义 cancelSuspendDelay 方法,用于取消已申请的短时任务。

5.计算任务:

图片 7.png

定义 computeTask 方法,执行一个耗时的计算任务,并返回执行时间。

6.点击回调:

图片 8.png

定义 clickCallback 方法,当用户点击按钮时,申请短时任务,执行计算任务,并在完成后取消短时任务。

7.构建界面:

图片 9.png

定义 build 方法,构建应用的界面,包括显示信息的文本和开始计算的按钮。

这个案例展示了如何在鸿蒙 NEXT 开发中使用 Background Tasks Kit 来实现短时任务,确保在后台执行耗时不长的任务,如状态保存、发送消息、网络请求等。

长时任务(Continuous Task)的案例

我们来看一个使用 ArkTS 实现长时任务(Continuous Task)的案例:

案例代码

图片 10.png

图片 11.png

 

代码解释

1.导入模块:

图片 12.png

 

导入鸿蒙系统的背景任务管理器模块和wantAgent模块,用于申请和管理长时任务。

2.定义组件和状态:

图片 13.png

定义一个组件 Index,并初始化一个状态 message 用于显示信息,以及 context 用于获取当前上下文。

3.申请长时任务:

图片 14.png

定义 startContinuousTask 方法,用于申请长时任务。通过 wantAgent 模块获取 WantAgent 对象,并使用 backgroundTaskManager 的 startBackgroundRunning 方法申请长时任务。

4.取消长时任务:

图片 15.png

定义 stopContinuousTask 方法,用于取消已申请的长时任务。

5.构建界面:

图片 16.png

定义 build 方法,构建应用的界面,包括显示信息的文本和两个按钮,分别用于申请和取消长时任务。

这个案例展示了如何在鸿蒙 NEXT 开发中使用 Background Tasks Kit 来实现长时任务,确保在后台执行长时间运行的任务,如音乐播放、导航等。

延迟任务(Deferred Task)的案例

我们来看一个使用 ArkTS 实现延迟任务(Deferred Task)的案例:

案例代码

图片 17.png

 

代码解释

1.导入模块:

图片 18.png

导入鸿蒙系统的workScheduler模块,用于操作延迟任务,以及BusinessError模块,用于处理可能发生的错误。

2.创建workInfo对象:

图片 19.png

配置延迟任务的参数,包括任务ID、网络类型、应用bundle名称、任务执行时回调的Ability名称、电池电量阈值、充电类型以及是否持久化保存工作。

3.申请延迟任务:

图片 20.png

定义requestDeferredTask函数,用于申请延迟任务。使用workScheduler.startWork方法启动任务,并处理可能发生的错误。

4.取消延迟任务:

图片 21.png

定义cancelDeferredTask函数,用于取消已经申请的延迟任务。使用workScheduler.stopWork方法停止任务,并处理可能发生的错误。

5.导出函数:

图片 22.png

将requestDeferredTask和cancelDeferredTask函数导出,以便在其他模块中调用。

这个案例展示了如何在鸿蒙 NEXT 开发中使用 Background Tasks Kit 来实现延迟任务,适用于对实时性要求不高、可延迟执行的任务,如数据同步、文件下载等场景。

代理提醒(Agent-powered Reminder)的案例

我们来看一个使用 ArkTS 实现代理提醒(Agent-powered Reminder)的案例:

案例代码

图片 23.png

代码解释

1.导入模块:

图片 24.png

导入鸿蒙系统的reminderAgentManager模块用于代理提醒管理,notificationManager模块用于通知管理,以及BusinessError模块用于错误处理。

2.定义倒计时提醒实例:

图片 25.png

定义一个倒计时提醒实例targetReminderAgent,配置提醒的类型、触发时间、操作按钮、目标能力、标题、内容等属性。

3.发布倒计时提醒:

图片 26.png

使用reminderAgentManager的publishReminder方法发布倒计时提醒。成功时,会返回提醒的ID,失败时,会捕获并处理错误。

这个案例展示了如何在鸿蒙 NEXT 开发中使用代理提醒功能来实现一个倒计时提醒,适用于需要后台代理提醒的场景,如会议提醒、待办事项提醒等。

最后

以上四种用于开发后台任务的类型,你都 get 到了吗,如果你在开发中有不同的应用场景,欢迎一起讨论,把握鸿蒙趋势,不做等等人,关注威哥爱编程,一起学鸿蒙。

                                                                                </div>



Source link

未经允许不得转载:紫竹林-程序员中文网 » 鸿蒙 NEXT 开发之后台任务开发服务框架学习笔记

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
关于我们 免责申明 意见反馈 隐私政策
程序员中文网:公益在线网站,帮助学习者快速成长!
关注微信 技术交流
推荐文章
每天精选资源文章推送
推荐文章
随时随地碎片化学习
推荐文章
发现有趣的