文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 前台服务讲解

2023-09-21 21:47

关注

目录

Android 前台服务和后台服务区别

前台服务(Foreground Service):

后台服务(Background Service):

总结:

前台服务更新:

JobScheduler、WorkManager 区别和使用方式

android.app.ForegroundServiceStartNotAllowedException: Service.startForeground() 咋解决?

WorkManager


Android 前台服务和后台服务区别

在 Android 中,前台服务(Foreground Service)和后台服务(Background Service)是两种不同类型的服务,它们在功能和系统对待上有一些区别。

前台服务(Foreground Service):

官方文档 https://developer.android.com/guide/components/foreground-services

后台服务(Background Service):

官方文档 https://developer.android.com/guide/background

总结:

需要注意的是,从 Android 8.0(API 级别 26)开始,引入了后台服务限制,即后台服务在后台执行任务时受到了一些限制。在后台执行任务时,应使用适当的后台执行方式,例如使用 JobScheduler、WorkManager 或者前台服务来确保任务的执行和系统资源的合理利用。

前台服务更新:

从 Android 13(API 级别 33)开始,用户可以默认关闭与前台服务关联的通知。为此,用户在通知上执行滑动手势。传统上,除非前台服务停止或从前台删除,否则通知不会被忽略。

JobScheduler、WorkManager 区别和使用方式

JobScheduler和WorkManager是Android中用于调度和执行后台任务的两个不同的工具,它们具有一些区别和适用场景。

JobScheduler:

使用JobScheduler的示例:

// 创建JobInfo对象JobInfo jobInfo = new JobInfo.Builder(JOB_ID, new ComponentName(context, YourJobService.class))        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)        .setRequiresCharging(true)        .build();// 获取JobSchedulerJobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);// 调度任务jobScheduler.schedule(jobInfo);

WorkManager:

使用WorkManager的示例:

// 创建OneTimeWorkRequest对象OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(YourWorker.class)        .setConstraints(new Constraints.Builder()                .setRequiredNetworkType(NetworkType.UNMETERED)                .setRequiresCharging(true)                .build())        .build();// 调度任务WorkManager.getInstance(context).enqueue(workRequest);

总结:

需要根据你的具体需求、目标版本和功能特性来选择合适的后台任务调度工具。

android.app.ForegroundServiceStartNotAllowedException: Service.startForeground() 咋解决?

在 Android 12+ 上,要在后台启动前台服务,需要满足一些额外的条件,例如应用必须具有合适的权限或者是使用合适的 API 来请求前台服务的启动。如果不满足这些条件,就会抛出 ForegroundServiceStartNotAllowedException 异常。

解决这个异常的方法是考虑使用适当的后台任务调度方式,如使用 WorkManager 来替代前台服务。WorkManager 提供了一种可靠的后台任务执行机制,能够适应 Android 5.0(API 级别 21)及以上版本,并且避免了后台服务限制的问题。


WorkManager

官方文档 https://developer.android.com/guide/background

 

来源地址:https://blog.csdn.net/zyy_give/article/details/131602476

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯