当前位置: 首页 > 知识库问答 >
问题:

IntentService+startForeground vs JobIntentService

丌官星渊
2023-03-14

由于Android Oreo后台执行限制,文档建议将IntentService重构为JobIntentService

JobIntentService立即作为Oreo下面的IntentService运行,但在Oreo+上调度作业

https://developer.android.com/reference/android/support/v4/app/jobintentservice

在什么情况下,将正常的IntentService作为前台服务运行并带有持久通知是有意义的,何时JobIntentService更好?

我可以在JobintentService中看到一个缺点是它不能立即启动。

共有1个答案

乐正瑞
2023-03-14

前台服务不会受到打瞌睡的影响,但如果你需要在屏幕关闭时继续任务,你仍然必须使用唤醒锁。

JobIntentService(使用JobScheduler)为您管理唤醒锁,但您对何时启动作业的控制较少。

我会将前台IntentService(或Service)用于应立即运行且不应被系统暂停/终止的高优先级任务(例如下载数据库)。

 类似资料:
  • 13.4.IntentService 我们已对系统服务的工作方式有所了解,接下来可以利用系统服务的有关特性,简化UpdaterService的实现。回忆下前面的内容:UpdaterService会一直运行,定期从服务端抓取Timeline的更新。由于Service默认与UI在同一个线程(或者说,都在UI线程中执行)中执行,为避免网络操作造成界面的响应不灵,我们需要新建一个Updater线程,并将U

  • 一、 定义 IntentService是Android里面的一个封装类,继承自四大组件之一的Service。 二、作用 处理异步请求,实现多线程。 三、 工作流程 注意:若启动IntentService多次,那么每个耗时操作则以队列的方式在IntentService的onHandleIntent回调方法中依次执行,执行完自动结束。 四、实现步骤 步骤1:定义IntentService的子类:传入线

  • 我试图发送一个意图,从一个活动中的创建启动一个意图服务。但是,IntentService的onHandleIntent永远不会被接收。我尝试过用意图过滤器改变清单,但似乎没有任何效果。没有抛出异常,但是根本没有调用IntentService。 这是onCreate 这是IntentService类的创建者和OnHandleContent,我知道它不会被调用,因为logcat从不显示“检索到的意图”

  • 我的应用程序通过web服务调用与远程数据库同步数据。我在IntentService中进行这些调用,以便它们可以在后台运行(我称之为SyncService)。 启动my IntentService的代码如下所示: 通常情况下,这个看起来很棒。然而,我的一个朋友,也是我的应用程序的用户,经常告诉我他的数据不同步并显示在我们的网站上。我在的时候,他的设备碰巧出现了症状。我把他的设备插入我的电脑,我发现:

  • 我正在尝试为muzei创建一个艺术源(插件)。 该应用程序应该提供一个新的艺术源,在我的情况下,它是我的应用程序私人空间的文件夹。 按照muzei api中的示例及其提供的详细信息,我为我的应用程序创建了一个文件提供程序。 我已将此代码添加到我的清单: 我在我的res/xml文件夹中创建了xml文件: 如您所见,它指向我的文件夹。 最后一个是我的类,它扩展了: 在我看来,这是返回简单文件(名为wa

  • 我有一个稍微令人困惑的问题,我认为由于一个愚蠢的疏忽,这将是一个容易解决的问题。 我的主要任务是上传图像和录音文件到我的服务器上的一个位置。我通过FTP这样做。 活动通过startService(intentName)调用服务 onHandleIntent()创建一个新线程 在新线程中,需要上传的文件被放入一个列表数组 在列表数组中循环。在这个循环中,将文件名传递给FTP服务器。如果添加成功,我会