问题标签 [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.
android - 无法在 JobService 中未调用 Looper.prepare() 的线程内创建处理程序
我正在向我的应用程序添加一个 JobService,我需要每 2 小时访问一次 API。
我在下面添加了 JobService 代码并将其安排在我的 SplashActivity 中,在那里我有我的 API 函数来从服务器获取数据,但它抛出了这个错误。
请帮忙。我无法理解如何使用 JobService 使用此 API。
我的工作服务:
飞溅活动:
android - 在 JobIntentService 中将 setInterruptIfStopped 设置为 true 有什么意义?
JobIntentService 有一个setInterruptIfStopped
方法,当设置为 时,如果作业停止true
,则导致当前运行:AsyncTask
cancel
void setInterruptIfStopped(布尔型中断IfStopped)
如果作业停止,控制在 onHandleWork(Intent) 中执行的代码是否会被中断。默认情况下这是错误的。如果调用并设置为 true,则任何时候调用 onStopCurrentWork(),该类都会首先调用 AsyncTask.cancel(true) 来中断正在运行的任务。
https://developer.android.com/reference/android/support/v4/app/JobIntentService
但是,这实际上并不会中断onHandleWork
. 相反,这只是boolean
在AsyncTask
to中设置 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 有什么用setInterruptIfStopped
呢JobIntentService
?
android - fusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()) 使 android 应用程序崩溃
这是 Log Cat 中显示的堆栈跟踪。我正在请求位置更新JobService
:
如果我评论此行,该应用程序可以正常工作。如果有人遇到同样的问题,请帮助我。我正在使用JobScheduler
,几乎每部手机都发生这种崩溃。
android - JobScheduler - 创建工作后更新工作信息
我想在一定时间后将数据同步到服务器,这个时间可配置为 30 分钟到 8 小时。
我正在使用JobScheduler
来实现上述目标。
有什么方法可以更新JobInfo
关联的JobScheduler
吗?
这样我就可以将setPeriodic(intervalMillis)
方法中设置的值更新为更新的时间间隔。
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 异常?
undefined - NativeScript JobScheduler JobService.class 未定义
我尝试在JobScheduler
在设置组件值的第一行,我收到此错误:
这两个文件都在同一个文件夹中,并且昨天都正常工作。
- 为了确定,我清理了平台文件夹,因为我将一些图片拖到
drawble
文件夹中app_Resources
,我不得不再次构建项目,也许有些东西已经改变了。但它没有帮助。
什么会导致这个问题?我错过了什么吗?
JobScheduler.js:
MyJobService.js:
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,然后在启动应用程序时将其同步到数据库。还有其他方法吗?
android - 使用 JobService 和 STEP_COUNTER 传感器计算步数
我在我的应用程序中实现了步数计数功能。我使用了一个监听 Sensor.TYPE_STEP_COUNTER 事件的 JobService,它正在工作。我有 2 个问题,也许有人可以提供帮助:1)如果应用程序不是每天都打开,由于打盹模式,它会被杀死,这会阻止 JobService 监听传感器事件——所以我不能继续计算步数. 我目前不想“唠叨”用户,所以我不想让他们打开应用程序。2)如果每天打开应用程序,步数完全计数,但电池警报响起。我尝试增加 JobService 的周期性时间,并且我还尝试对传感器使用批量读取——这并没有改变太多的电池,而且它计算的步数比以前少。
任何人都可以帮助解决这些问题吗?
android - 检查服务是否从活动类运行
我想知道以下方法是否有效,我在堆栈溢出本身中有这个方法,但它似乎不起作用。
我有一个作业服务,它将每 15 分钟执行一次,我正在使用作业调度程序在提到的任何时间触发服务。我有一个方法作为 executeService() 如下:
现在每次用户来到 MainActivity 时都会调用这个 executeService(),在 MainActivity 的 onResume 中我已经进行了如下检查
如果我的服务已经被触发,那么在我回到 MainActivity 之后,该方法isMyServiceRunning()
总是返回 false。
我已经完成了与此相关的所有问题的答案,但我最终再次写了这个问题,我使用的是 Android OS Nougat。任何帮助都会很棒。
android - JobService 不会在 android 9 中重新安排
我正在尝试让我的应用程序在 Android 9 上运行。以下代码在 Android 8 上运行良好,但由于某种原因,JobService 没有在 android 9 上重新安排。它第一次安排但没有重新安排根据到设定的周期。
这里是我的 JobInfo.Builder
有任何想法吗?编辑:为了清楚起见,此代码在 Android 8 及更低版本上运行良好,也适用于运行 Android 9 的 Android Studio 模拟器。据我测试,它不适用于运行 Android 9 的任何物理设备。