问题标签 [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 投票
0 回答
136 浏览

android - 无法在 JobService 中未调用 Looper.prepare() 的线程内创建处理程序

我正在向我的应用程序添加一个 JobService,我需要每 2 小时访问一次 API。

我在下面添加了 JobService 代码并将其安排在我的 SplashActivity 中,在那里我有我的 API 函数来从服务器获取数据,但它抛出了这个错误。

请帮忙。我无法理解如何使用 JobService 使用此 API。

我的工作服务:

飞溅活动:

0 投票
0 回答
235 浏览

android - 在 JobIntentService 中将 setInterruptIfStopped 设置为 true 有什么意义?

JobIntentService 有一个setInterruptIfStopped方法,当设置为 时,如果作业停止true,则导致当前运行:AsyncTaskcancel

void setInterruptIfStopped(布尔型中断IfStopped)

如果作业停止,控制在 onHandleWork(Intent) 中执行的代码是否会被中断。默认情况下这是错误的。如果调用并设置为 true,则任何时候调用 onStopCurrentWork(),该类都会首先调用 AsyncTask.cancel(true) 来中断正在运行的任务。

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

但是,这实际上并不会中断onHandleWork. 相反,这只是booleanAsyncTaskto中设置 a true,我需要检查它onHandleWork以手动中断我的工作。

public final boolean isCancelled()

如果此任务在正常完成之前被取消,则返回 true。如果您在任务上调用 cancel(boolean),则应定期从 doInBackground(Object[]) 检查此方法返回的值,以尽快结束任务。

https://developer.android.com/reference/android/os/AsyncTask

但是为此我们已经有了JobIntentService'isStopped方法:

布尔 isStopped ()

如果 onStopCurrentWork() 已被调用,则返回 true。您可以在执行工作时使用它来查看是否应该停止它。

据我了解,我们甚至无法访问AsyncTask'isCancelled方法。那么 in 有什么用setInterruptIfStoppedJobIntentService

0 投票
0 回答
130 浏览

android - fusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()) 使 android 应用程序崩溃

这是 Log Cat 中显示的堆栈跟踪。我正在请求位置更新JobService

如果我评论此行,该应用程序可以正常工作。如果有人遇到同样的问题,请帮助我。我正在使用JobScheduler,几乎每部手机都发生这种崩溃。


0 投票
1 回答
445 浏览

android - JobScheduler - 创建工作后更新工作信息

我想在一定时间后将数据同步到服务器,这个时间可配置为 30 分钟到 8 小时。

我正在使用JobScheduler来实现上述目标。

有什么方法可以更新JobInfo关联的JobScheduler吗?

这样我就可以将setPeriodic(intervalMillis)方法中设置的值更新为更新的时间间隔。

0 投票
1 回答
752 浏览

android - JobScheduler-NETWORK_TYPE_NONE 给出 IllegalArgumentException

我正在使用下面的代码来安排工作服务。

但低于例外

2018-12-03 17:51:22.360 5032-5557/? W/System.err:java.lang.IllegalArgumentException:您正在尝试构建一个没有约束的作业,这是不允许的。

但是当我改变它时setRequiredNetworkType(NETWORK_TYPE_NONE)setRequiredNetworkType(NETWORK_TYPE_ANY)它工作正常。但我希望我的工作服务即使在没有网络连接的情况下也能运行。为什么我得到 NETWORK_TYPE_NONE 异常?

0 投票
0 回答
340 浏览

undefined - NativeScript JobScheduler JobService.class 未定义

我尝试在JobScheduler

在设置组件值的第一行,我收到此错误:

这两个文件都在同一个文件夹中,并且昨天都正常工作。

  • 为了确定,我清理了平台文件夹,因为我将一些图片拖到drawble文件夹中app_Resources,我不得不再次构建项目,也许有些东西已经改变了。但它没有帮助。

什么会导致这个问题?我错过了什么吗?

JobScheduler.js:

MyJobService.js:

0 投票
2 回答
444 浏览

android - JobSchedulerService 中的 RoomDB

我最近通过 JobService 将 JobScheduler 添加到我的应用程序中。我使用 JobService 在后台定期与我的数据库同步并更新本地 Room DB 实例。

但是,我看到出现错误的任意崩溃:

进程:com.application.name,PID:27229 java.lang.RuntimeException:无法实例化服务com.application.name.Services.SyncService:java.lang.NullPointerException:尝试调用虚拟方法'android.content.Context android.空对象引用上的 content.Context.getApplicationContext()'

完整的堆栈跟踪如下:

由 java.lang.NullPointerException 引起:尝试在 com.application.name.Database.AppDatabase.getDatabase(AppDatabase.java 的空对象引用上调用虚拟方法 'android.content.Context android.content.Context.getApplicationContext()' :38) 在 com.application.name.Services.SyncService.(SyncService.java:48) 在 java.lang.Class.newInstance(Class.java) 在 android.app.ActivityThread.handleCreateService(ActivityThread.java:3551) 在android.app.ActivityThread.-wrap4(Unknown Source) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1778) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper .loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6798) 在 java.lang.reflect.Method。在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 处调用 (Method.java) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)

崩溃报告突出显示的违规行是 JobService 构造函数中 Room DB 实例的实例化。

在 Room DAO 中,我有以下代码:

所以我想我理解为什么会发生这种情况——当应用程序没有运行时,应用程序上下文为空,所以 Room 的数据库构建器在设置时遇到问题。

我想知道的是,当应用程序未运行时,是否有某种方法可以访问我的 Room DB。将 Context 从 JobService 传递给初始化并编写辅助构造函数似乎是一个丑陋的黑客,可能会产生不可预测的情况,所以我想知道我还有哪些其他选择。

我可以做的一件事是将从 JobService 检索到的数据写入 SharedPreferences,然后在启动应用程序时将其同步到数据库。还有其他方法吗?

0 投票
1 回答
431 浏览

android - 使用 JobService 和 STEP_COUNTER 传感器计算步数

我在我的应用程序中实现了步数计数功能。我使用了一个监听 Sensor.TYPE_STEP_COUNTER 事件的 JobService,它正在工作。我有 2 个问题,也许有人可以提供帮助:1)如果应用程序不是每天都打开,由于打盹模式,它会被杀死,这会阻止 JobService 监听传感器事件——所以我不能继续计算步数. 我目前不想“唠叨”用户,所以我不想让他们打开应用程序。2)如果每天打开应用程序,步数完全计数,但电池警报响起。我尝试增加 JobService 的周期性时间,并且我还尝试对传感器使用批量读取——这并没有改变太多的电池,而且它计算的步数比以前少。

任何人都可以帮助解决这些问题吗?

0 投票
0 回答
65 浏览

android - 检查服务是否从活动类运行

我想知道以下方法是否有效,我在堆栈溢出本身中有这个方法,但它似乎不起作用。

我有一个作业服务,它将每 15 分钟执行一次,我正在使用作业调度程序在提到的任何时间触发服务。我有一个方法作为 executeService() 如下:

现在每次用户来到 MainActivity 时都会调用这个 executeService(),在 MainActivity 的 onResume 中我已经进行了如下检查

如果我的服务已经被触发,那么在我回到 MainActivity 之后,该方法isMyServiceRunning()总是返回 false。

我已经完成了与此相关的所有问题的答案,但我最终再次写了这个问题,我使用的是 Android OS Nougat。任何帮助都会很棒。

0 投票
1 回答
3188 浏览

android - JobService 不会在 android 9 中重新安排

我正在尝试让我的应用程序在 Android 9 上运行。以下代码在 Android 8 上运行良好,但由于某种原因,JobService 没有在 android 9 上重新安排。它第一次安排但没有重新安排根据到设定的周期。

这里是我的 JobInfo.Builder

有任何想法吗?编辑:为了清楚起见,此代码在 Android 8 及更低版本上运行良好,也适用于运行 Android 9 的 Android Studio 模拟器。据我测试,它不适用于运行 Android 9 的任何物理设备。