问题标签 [jobintentservice]

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 回答
1376 浏览

android - 无法使用 JobIntentService 安排警报

我一直在研究如何安排针对 Oreo + 设备的警报。我目前的方法是使用AlarmManager铃声服务和广播接收器。我让警报响起并显示通知,但 Oreo + 设备不会触发通知和警报。

我了解到,JobIntentService由于Doze和其他背景限制,使用是一种很好的做法。目前,当使用 a 时JobIntentService,我收到一个错误:

java.lang.RuntimeException:执行 doInBackground() 时出错

我做错了吗?我真的需要实施AsyncTask吗?

0 投票
3 回答
13742 浏览

java - JobIntentService 和 IntentService 有什么区别?

我不明白这两个 API 有什么区别。我的意思是什么时候使用第一个。为什么会有 JobIntentService ?提前致谢

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 回答
271 浏览

android - 来自 JobIntentService 的 ANR,它做的很少

我有一个 JobIntentService,它根本没有做很多工作,但今天导致了 ANR。

通过以下方式从伴随对象调用代码有什么问题吗?

根据文档,没有任何内容onHandleWork()导致 ANR,因为该方法是从单独的线程调用的。

工作通过伴随对象排队的方式是否存在会导致 ANR 的问题?注入代码是标准的 Dagger2 依赖注入,我从来没有遇到过问题。

ANR 看起来像这样

12-03 13:29:42.272 872-872/? I//system/bin/tombstoned: intercept for pid 29905 and type kDebuggerdNativeBacktrace terminated: due to input

0 投票
2 回答
1357 浏览

java - JobIntentService onHandleWork 未被调用

我有一个 JobIntentService 的骨架类

}

我已将服务包含在清单中

并调用正确的入队方法

但是 onHandleWork 永远不会被调用。我已经查看了有关正确设置服务并确保 onBind 未被覆盖的所有页面,但这仍然不起作用,想知道另一组眼睛是否会发现我错过的东西。谢谢

0 投票
1 回答
1793 浏览

android - 在 JobIntentService 中未调用 onHandleWork()

我需要在我的应用程序运行时和启动时处理通过 AlarmManager 发布的意图。我编写了 JobIntentService 的子类来处理意图,但它没有按预期工作:未调用 onHandleWork。

当处理程序是 IntentService 时,我的实现工作,除了在启动时,由于后台服务的限制。因此,我尝试改用 JobIntentService。

onStartCommand 被调用。文档说这种方法:

进程在作为 pre-O 服务运行时启动命令,将它们排入队列以便稍后在 onHandleWork(Intent) 中调度。

我不知道“稍后”在这里应该是什么意思,但实际上并没有调用 onHandleWork,即使已经以预期的意图调用了 onStartCommand。

我已经阅读了类似问题的答案,并确保我不会覆盖其他方法。我还为我认为正确的服务创建了一个清单条目 - 否则不会调用 onStartCommand。

这就是我创建与 AlarmManager 一起使用的 PendingIntent 的方式:

关于我所缺少的任何想法?

0 投票
1 回答
680 浏览

java - Android 8.0 - Job Intent Service 在启动时不运行应用程序

最初我有 Android 7.0 并且使用和服务没有任何问题BroadcastReceiver。但是随着 Android 8.0 的变化。我需要切换到一个JobIntentService,以便我的应用程序可以在启动时运行。

我已经尝试迁移我的代码以匹配JobIntentService但在启动时没有发生任何事情。我不确定原因是因为我的服务等级还是我的BroadcastReceiver等级。

AndroidManifest.xml

背景服务.java

启动启动.java

所以我试图从本质上开始Home.class启动。

0 投票
1 回答
1519 浏览

android - Jobintentservice 在 android oreo 上每隔 X 小时触发一次通知

我想为我的广告发出通知,所以我使用了 Alarmmanager 和 JobIntentService 但我没有收到通知。

这里是接收器。

以下是扩展 JobIntentService 的服务类。

在 notifyTasker isTimerTask() 中,我检查 currentTime 是否等于我的祈祷时间。如果是真的,那么我会触发通知。

以下是我从活动中激活的警报管理器。

我尝试使用上述代码为 android oreo 触发通知,但它不起作用。是否有可能使用作业计划在特定时间触发通知。因为通知将在特定的 azan 时间触发。

0 投票
0 回答
969 浏览

android - 应用程序不能使用 JobIntentService 安排超过 100 个不同的作业

这是我的JobIntentService

但是,我从抱怨的 crashlytics 中遇到了很多崩溃100 distinct jobs

有什么理由解决吗?

在将新的排队之前,我曾尝试取消它,如下所示:

但是,我遇到了另一个问题:

你们有什么建议吗?

P/s:我无法在我的设备上重现它,但我在 CrashReport 工具中得到了数千次。在加入新工作之前取消工作确实解决了 100 个不同的工作问题,但它引发了如上所述的另一个错误。

0 投票
1 回答
211 浏览

android - 避免 linter 报告 UnsafeProtectedBroadcastReceiver 后,BroadcastReceiver 在 android 9 中不起作用

我使用 scheduleAlarm 来触发BroadcastReceiver哪个 StartJobIntentService它工作正常,但是当我检查我得到的代码时,UnsafeProtectedBroadcastReceiver我添加了 if 条件检查onReceive方法来填充操作但JobIntentService没有工作。但如果我更换了条件,它就可以正常工作。请注意,我正在使用 android 9.any 帮助提前感谢 BroadCastReceiver

主要文件

工作意向服务

警报