问题标签 [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 回答
442 浏览

android - EnqueueWork 不会在 Oreo 及更高版本上立即启动

在我的 SDK 中,我用来JobIntentService在后台做一些工作。我注意到,当我打电话时,这项工作并没有立即开始enquequeWork(),而是在一段时间后开始。我不能用来foreground service做这项工作,因为应用程序不能按客户的要求作为前台运行。有没有其他方法可以强制在enqueueWork()被调用后立即完成工作?我还使用WorkManager'sPeriodicWorkRequest来检查工作是否可以完成,每 X 分钟一次,如果可以,我会调用'sJobIntentService并将我需要的工作排入队列。

0 投票
2 回答
128 浏览

java - 处理活动和服务生命周期

我正在开发一个应用程序,它将在 JobIntentService 中执行一些后台功能。

用户从屏幕 A 启动操作。启动后台 Intent 服务。在 Intent 服务完成其工作后,它会向 Screen A 发送回调,然后向 Screen Sartes Screen B 发送一个回调,后者利用 Intent Service 的结果。

我的问题是,假设用户启动操作,然后最小化应用程序,然后 Android 操作系统由于在低内存上运行而清除屏幕 A,然后服务发回回调。

我的问题是,既然屏幕 A 不再存在,它会收到回调吗?是否可以确定必须由 Android OS 清除屏幕 A,以便我的服务可以直接启动屏幕 B?

另外,这种情况如何处理?

任何建议将不胜感激。

0 投票
1 回答
638 浏览

android - JobIntentService onHandleWork 无法正常工作

我在 IntentJobServices / JobServices 中转换了我的所有 IntentServices / 服务,因此我的应用程序与所有安全策略兼容。

但是我在绑定和启动我的 JobIntentService 时遇到问题......我需要启动 IntentJob 然后绑定到它,但是当我这样做时:

只有我的“onBind”服务被调用,而“onHandleWork”永远不会被调用。

我尝试使用我的 JobIntentService 和我的 Context 的静态方法“enqueueWork”,但没有一个工作正常......我还在 Stackoverflow 中阅读并测试了关于这个问题的所有主题,但没有一个给我一个好的解决方案......

为了解决我的问题,我做了:

我的 JobIntentService 和 Binded Activity 都有一个 Messenger Sender 和 Receiver 来传达同步状态信息......所以我必须将 IBinder 返回到我启动的 Service 的 Messenger 到我的 Activity 中的 ServiceConnection,所以现在我这样做是为了让事情正常进行...但是,如果我的活动被杀死,则绑定的活动有一个泄漏的 ServiceConnection,它会引发异常并停止我的服务。我正在尝试解决这个问题,也许我解决了这个问题,当我的活动被破坏时解除绑定我的服务..

这是解决这个问题的好方法还是有更好的方法?

就我个人而言,我不喜欢在 onBind 中启动线程,因为我的 onHandleWork 从未在 Android 版本 >= 8.0 上调用过,在 Android 版本 < 8.0 中,JobIntentService 运行良好,因为如果我将 JobService 加入队列,它会调用 onHandleWork,它会调用 onBind如果我绑定它。那么有没有更好的方法来解决这个问题呢?

谢谢,祝你编码愉快!:D 再见!

编辑:是的,对不起我的语法错误,但我在工作,我没有给出...关于那个 xD 无论如何,“onPause”或“onDestroy”生命周期方法上的“unbind”不起作用.. . 因为当我调用 unbind 服务停止工作时,如果可能的话,我需要它仍然运行.. 有什么建议吗?

他们会用 JobIntentService 解决这个问题吗???

0 投票
1 回答
510 浏览

android - JobIntentService 的 onDestroy 被调用后会发生什么?

我有一个与JobIntentService. 从文档中,我发现它在返回JobIntentService后立即被销毁onHandleWork(Intent intent)onHandleWork在后台运行,所以我可以在这里运行阻塞操作。那么,如果我想异步运行实际执行会发生什么?我似乎一切都按预期运行,但很难理解即使在onDestroy调用之后服务仍在后台运行。下面是我的实现onHandleWork

当服务实际上被“销毁”时,这实际上是如何在后台运行的?

0 投票
1 回答
760 浏览

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

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

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

我的 gradle 文件如下所示:

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

清单文件中的此权限:

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

0 投票
0 回答
151 浏览

android - 在 RemoteViews 中调用 updateAppWidget 时出现 TransactionTooLargeException(仅在 android 7.0 和 6.0 上)

我在控制台中有很多 TransactionTooLargeException 崩溃报告(有趣的是 - 几乎完全来自较旧的 android 版本 7.0 和 6.0 - 几乎没有来自较新的 android)。

它总是发生在我的 JobIntentService 的这行代码上:

为什么会发生,如何避免?有人有经验吗?崩溃日志在这里:

0 投票
2 回答
1325 浏览

android - 如何从 JobIntentService 中删除重复的意图

JobIntentService每次推送通知进来时我都会启动一个来告诉服务去获取更多数据。当应用程序在前台时,一切正常。

当应用程序在后台并且有多个推送通知进来时,意图会排队并多次执行相同的意图给服务器带来不必要的压力,因为对服务器的第一次调用将获得它需要的所有信息进行另一个来自推送通知的排队意图是不必要的。

是否有取消或不向队列添加相同的意图或其他方式来防止对服务器的额外调用?

0 投票
2 回答
639 浏览

java - 每当 App 在 android pie 中被杀死时,服务也会被杀死

我正在通过创建一个 android 应用程序来学习 Android 编程。但是每当我杀死应用程序服务时也会被杀死。我正在使用JobIntentService. 使该应用程序在后台运行。

JobIntentService 类

主要活动

Activity创造了这个开始的意图onCreateMethod

显现

即使应用程序被终止,我可以进行哪些更改以使服务成功运行?提前致谢。

0 投票
1 回答
274 浏览

android-handler - 来自 JobIntentService 的吐司

我是初学者。我想要来自 jobintentservice (onHandleWork) 的 Toast,但我的应用程序崩溃了。logcat 错误是:“不能在未调用 looper.prepare() 的线程上敬酒”我想学习在 jobintentservice 中使用处理程序,请帮助我。

0 投票
1 回答
219 浏览

android - JobIntentService 上的 IllegalArgumentException 主要在三星设备上

我遇到了很多无法重现的 IllegalArgumentException 崩溃。其中 99% 来自三星 Galaxy 设备。这是来自 Play 商店控制台的日志:

我有 6 个 JobInentServices,每个都更新一个小部件。每个 JobIntentService 都有一个唯一的 5 位 JOB_ID,以避免与库中的 JOB_ID 发生任何可能的冲突。

在我上次更新之前,我使用了其他 JOB_ID,因为我怀疑某些 ID 导致了这个异常。现在有了新的 ID,这些崩溃就大大增加了。

变化是造成这种情况的原因吗?应用程序是否“记住”了旧的 ID,现在同一个 JobIntentService 有 2 个不同的 ID?为什么这只发生在三星设备上?意图可能是此异常的根源吗?有没有办法解决这个问题?

我来自小部件提供商的代码:

我的 JobIntentService 代码:

先感谢您。