问题标签 [jobservice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1183 浏览

android - 检测应用程序被杀死/在后台时的连接变化

当我的应用程序不在前台时,我想检测何时发生网络更改(连接\断开连接),以便我可以同步用户的数据。

我尝试使用 a broadcast receiver(就像在这个答案中一样)但是当应用程序关闭时(之后)不再接收广播Android N。它仅在应用程序处于前台时才有效。

为了检测后台的连接变化,我尝试将Job Scheduler(如this answer中)与.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)参数一起使用,但我的问题是该工作重复完成(每15分钟一次),即使用户仍然连接到互联网。

我的目标是在重新连接互联网时完成一次工作,然后停止工作,直到用户断开连接并再次连接。每次连接到互联网时都应该完成一次该工作,然后等待重新连接(不重复)。

是否有可能通过Job Scheduler(或以任何其他方式)实现这一目标?

0 投票
1 回答
760 浏览

android - JobIntentService 不适用于 Oreo 以下的 API (API <= 26)

我正在为 Android 设置一项新服务,并且是第一次使用 JobIntentService。该服务还包括一个通知,当我在低于 Oreo 的 Android 版本中运行该应用程序时,该通知不会显示。工作本身一直工作到最后。

这是我尝试过的代码,对于 API >= 26 非常有效。

我的 gradle 文件如下所示:

我还在 gradle 文件中添加了这个库:

清单文件中的此权限:

我在控制台中收到此警告。

0 投票
1 回答
799 浏览

android - Scheduled JobService 仅在我打开我的应用程序时运行

使用 JobScheduler 我创建了一个必须每 15 分钟定期运行一次的作业。但它只有在我的应用程序打开时才有效。我

当我运行应用程序时,所有排队的作业一个接一个地运行,即使在设备重新启动后也是如此。

AndroidManifest.xml

MyJobService.class

这就是我设置 JobScheduler 的方式

那么这里有什么问题呢?

0 投票
1 回答
32 浏览

android - JobService 重新安排

我想知道的是,JobParameters发送的是否是在重新启动时jobFinished传递给的那些?onStartJobJobService

假设我在 my 中启动一个线程,JobService并在其中调用jobFinishedtrue 作为needsReschedule参数。如果我在JobParametersextras 中添加了一些新的东西jobFinished,当最终onStartJob再次被调用时,这会是可见的吗?还是将onStartJob始终仅提供JobParameters最初启动服务时提供的内容?

0 投票
1 回答
131 浏览

android - 为什么 JobScheduler 没有按预期工作

我使用 JobScheduler 每 15 分钟运行一次作业。但它没有按预期工作。在这里,我附上了我的代码。

我的作业服务实用程序类

我计划每 15 分钟运行一次作业。但它不是每 15 分钟开始工作。我将附上输出。

开始于 ==> 15:10:49 结束于 ==> 15:10:59 开始于 ==> 15:25:59 结束于 ==> 15:26:09 开始于 ==> 15:56:10结束于 ==> 15:56:20 开始于 ==> 16:41:44 结束于 ==> 16:41:54

我不知道为什么它不能每 15 分钟工作一次。而且我想在特定时间开始工作。例如每天 8 点钟。如何使用 JobSceduler 实现这一目标。

0 投票
1 回答
133 浏览

android - 为什么 JobService 没有重复?

我正在尝试开发JobScheduler,并且我希望应用程序在应用程序被系统杀死时每 1 分钟执行一次。

AndroidManifest.xml

主要活动

百度招聘服务

当我使用setPeriodic(AlarmManager.INTERVAL_FIFTEEN_MINUTES). onStartJob尚未调用。

当我使用setOverrideDeadline(60000). onStartJob唯一一次在第一次演出。

但是BaiduJobService时间到了似乎没有调用。

我错过了什么吗?提前致谢。

0 投票
1 回答
85 浏览

android - 我打电话时会重新创建 Android 中的服务

1) 我正在开始ServiceJobService通过startService,startForegroundService对于 android Oreo 和ContextCompat.startForegroundService

2)在onCreate 我做的服务的方法中startForeground (1, notification),在onDestroy我做的stopForeground (false)

onCreateservice 方法中,BroadcastReceiver启动,接收TelephonyManager.EXTRA_STATE诸如 OFFHOOK、RINGING、IDLE 之类的事件

这是注册接收器的代码

启动服务后,我立即致电

我开始打电话

我进入服务日志

Unstoppable - 1, Unstoppable - 2 - 这是我开始查看服务是否实时运行的计时器。

我不明白为什么服务onCreate再次调用而不调用onDestroy,谁能帮我解决这个问题并在拨打电话时使服务稳定工作?

服务代码

0 投票
2 回答
3193 浏览

java - 每次互联网可用时运行工作者

我正在开发一个 Android 应用程序,每次用户打开 Wi-Fi 或移动数据时,我都使用 Firebase JobDispatcher 库来运行后台作业,但不幸的是,该库已被弃用,现在新的 WorkerManager 是要走的路。

我的问题是每次只有互联网可用时如何使用 WorkerManager 运行作业?

我已经检查了 WorkerManager 库迁移指南和文档,但我无法使用 OneTimeWorkRequest 或 PeriodicWorkRequest 来实现。

这是我与 Firebase JobDispatcher 库一起使用的代码来实现这一点。

0 投票
0 回答
571 浏览

android - 使用 JobService 的 Jobscheduler 在几个小时后停止工作

我正在尝试测试使用 JobScheduler 在 Android API 23 上安排后台任务的可靠性,因为我注意到有时它会出现异常并停止工作。

这就是我在 SystemManager.java 类中安排作业的方式:



我使用 Retrofit 在 NetworkManager.java 类中进行网络调用:


问题

在我初始化应用程序并进行第一次网络调用后,我退出了应用程序,断开了 USB 连接并关闭了屏幕。我把它留了一夜,然后来检查我的服务器数据库上的记录以获取结果。

  1. 设备以几乎相同的速率持续发送服务器网络数据,每分钟至少两次,持续了 10 个小时!(这不是预期的,因为设备应该进入打盹,对吧?)
  2. 之后就没有再发送请求了!从凌晨 3 点到上午 9 点 30 分,我没有收到任何东西发送到服务器。我打开我的设备屏幕,将其连接到电源,打开应用程序......等了一个小时,仍然没有发送更多内容。为什么?服务刚刚被杀死了吗?我该如何解决这样的问题?

注意

当然,我不打算在真正的应用程序上做如此繁重的重复工作。但是,我只是在做一个测试应用程序来了解 JobScheduler 和 JobService 的行为。又为什么突然就白死了,再也没有开始了?!

0 投票
0 回答
123 浏览

android - 互联网连接更改工作服务需要安排每次活动?

我正在阅读android 文档,以便在 android pie 及以下版本的网络更改上注册一个监听器。

我发现,对于 lolipop 以上的版本,我可以运行一个监视网络变化的作业服务。

所以我的问题是它是否监控网络变化,而不管应用程序是否正在运行。我如何在我的应用程序活动生命周期中照顾这项工作服务。

目前我所做的是我在 onResume 中安排这项工作并在我的活动中停止在 OnDestroy 中。但我希望它在每次网络更改时运行