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

android - Android JobIntentService 似乎已重新启动

我有一个监听电源连接事件的广播接收器。每当设备连接到电源时,我都会尝试将文件从 APP 传输到运行 Ubuntu 的机器上的服务器。文件通过蓝牙传输。由于文件传输很重要,如果由于任何原因传输出错,或者第一次尝试连接不成功,我最多重试 6 次,每次尝试之间留出 3 分钟。

一开始,我使用的是一个异步任务,只要我们仍然可以重试并且文件传输没有成功完成,它就会保持活动状态。我读到,在广播接收器中有一个 asynctask 并不是一个完全有意义的好习惯,特别是因为我强迫任务运行很长时间。因此,我决定更改为 JobIntentService,这样每次接收器捕获到电源连接事件时,我都会发出将文件传输到我的计算机的作业。在作业中,在文件传输完成或失败后,我会设置一个警报,向广播发送待处理的意图并再次调用作业。

我正在运行它,我注意到(与以前不同)在传输过程中我收到太多“对等连接重置”错误,这让我想知道作业是否在完成之前被停止或类似的东西? . 这些错误过去在我之前的实现中不会发生。然后,我还注意到,由于某种原因,操作系统似乎再次启动了 JobIntentService(没有启动它的事件),这导致我的代码不一致并导致我丢失了一些文件(我不应该允许此作业的多个实例同时运行)

我的问题是,为什么您认为服务已重新启动?JobIntentService 是否可以在 BT 传输期间由操作系统完成并重新启动?这些文件很重,因此需要几分钟才能从应用程序传输到机器。我正在考虑尝试使用前台服务而不是 JobIntent 并通知该服务或返回我之前的实现。

有什么建议么?

这就是我所说的 Intent Job。

这是 JobIntentService 类

日志猫。突出显示的部分显示了我认为操作系统创建 JobService 的新实例并运行它。

在此处输入图像描述

0 投票
0 回答
739 浏览

android - 计划的 JobIntentService 永远不会在 API >= 27 Oreo 上启动

我有一个安排工作的小部件,我得到了结果:来自 JobScheduler.schedule(job) 的 RESULT_SUCCESS,但我的服务永远不会启动。我等了30多分钟。

清单.xml

WidgetOne 类 (kotlin)

ServiceWidgetOne 类 (kotlin)

在我的 MainActivity 中,我什么也不做。当我在日志中将小部件放到主屏幕时,我有:

仅此而已:(我的服务永远不会启动

我在清单中试过:

但它没有效果感谢您的帮助!

0 投票
2 回答
414 浏览

android - 我的实体手机华硕没有收到 BOOT_COMPLETED

我测试了一个在模拟器BroadcastReceiver中运行的,它运行成功。JobIntentService

但是当我测试我的物理手机 ASUS ZE551ML 的代码时它失败了。

清单文件:

广播接收器类:

JobIntentService 类:

重复:代码在模拟器设备、奥利奥前和奥利奥设备上运行良好。

该日志不包含与boot_completed reveiced我的应用程序相关的任何内容。

谢谢。

0 投票
1 回答
488 浏览

android - Oreo 中的 SMS_RECEIVED 广播接收器和 JobIntentService

我已经阅读了有关 Android API Level 26 中新背景限制的 Android 文档,考虑到这些,我设计了我的应用程序如下:

  • 该应用程序具有BroadcastReceiver收听"SMS_RECEIVED"广播的功能。这是一个隐式广播,现在在 Oreo 中受到限制,但它是例外列表中的一个。
  • 当它BroadcastReceiver运行时,它会将一个新任务排入队列,由 a 执行JobIntentService。接收广播时,应用程序应暂时列入白名单,因此JobIntentService有机会做它的事情。

即使我从“最近的应用程序”列表中关闭该应用程序,所有这些似乎都工作得很好。但是,我收到一些用户的报告,显然每隔几天,他们必须再次打开该应用程序,因为它突然停止在后台工作。

为什么操作系统突然停止向"SMS_RECEIVED"我的应用程序发送广播?如果不是这样,那一定是JobIntentService不允许运行。为什么不?该应用程序应在收到短信后立即列入白名单。我有什么误解?

0 投票
0 回答
569 浏览

android - JobIntentService 作为前台服务

我正在使用基于此 Google 示例的地理围栏。但是,我发现除非我在谷歌地图或其他基于位置的应用程序中,否则地理围栏转换不会在后台准确发生。正因为如此,我试图把它JobIntentService变成一个前台服务,它将接收它自己的定期位置更新。

有人可以解释它的生命周期JobIntentService以及创建方法时调用方法的顺序吗?

请记住,我正在使用以下类:

0 投票
3 回答
9417 浏览

android - Android Oreo JobIntentService 在 Android 7 及以下版本中继续在后台运行,在 Android 8 及以上版本中经常崩溃

我最近将我的所有服务替换为前台服务和 JobIntentService,因为在 oreo 及更高版本中存在一些后台执行限制(https://developer.android.com/about/versions/oreo/background)。根据文档,JobIntentService 的作用类似于 Android 7 及更低版本的 Intent Service,并且类似于 Android 8 及更高版本的 JobScheduler。我注意到 Google 提供的新 JobIntentService 存在问题。

安卓8及以上:

在 android 8 及更高版本中不断发生崩溃。这里提出了一张票,提到了同样的问题https://issuetracker.google.com/issues/63622293,我添加了一些极客建议的临时修复。

Android 7 及更低版本: 工作完成后,其行为类似于 Intent Service 的 JobIntentService 不会停止。

我已经在服务中实现了 JobIntentService,只要用户执行某些操作就会触发。

代码

为了避免 JobIntentService 崩溃,我从https://issuetracker.google.com/issues/63622293中引用了一些参考资料

0 投票
1 回答
3087 浏览

android - JobIntentService 在以 api 26 为目标后在 Android O (8) 及更高版本中崩溃

我已将目标更改为 API 27 (Android O) 并将 IntentService 迁移到 JobIntentService 之后它在 Android O(8) 及更高版本的某些设备中开始崩溃。

这是崩溃日志。

0 投票
1 回答
1582 浏览

android - JobIntentService 定期运行?

我的项目中有一个 JobIntentService。但是当我为此服务创建 startService 时,“ onHandleWork ”方法只运行 1 次。我怎样才能让它定期运行?

0 投票
1 回答
475 浏览

android - GCM:又一个 BIND_JOB_SERVICE 权限错误——IntentService 到 JobIntentService

问题:由于我现在需要以 Oreo 为目标来提交应用程序,因此我必须将我的 RegistrationIntentService 更改为从 JobIntentService 而不是 IntentService 继承。我仍在使用 GCM,但这应该没什么区别。请注意,这是 Xamarin C# 代码。

错误是我的静态 EnqueueWork 方法中总是出现异常:

定时服务ComponentInfo{com.emergencyuniversity.EUAlert/md58d0653b4094c2dbc798f6d984e1c1386.RegistrationIntentService}不需要android.permission.BIND_JOB_SERVICE权限

我已将 OnHandleIntent 更改为 OnHandleWork,现在我在以前调用 StartService 的地方调用了静态 EnqueueWork 便捷方法。

我的 EnqueueWork,得到了异常:

在清单中,我添加了:

我也尝试过导出错误,并将该权限放在一堆不同的地方。

我所做的另一项更改是由于编译器错误而删除了以下内容:

除了 Android 文档之外,我可能已经阅读了所有可以想象到的关于此的帖子,包括:

https://android.jlelse.eu/keep-those-background-services-working-when-targeting-android-oreo-sdk-26-cbf6cc2bdb7f

https://medium.com/til-kotlin/jobintentservice-for-background-processing-on-android-o-39535460e060

JobService 不需要 android.permission.BIND_JOB_SERVICE 权限

为什么我仍然会收到此错误?任何帮助将不胜感激。谢谢。

0 投票
1 回答
150 浏览

java - 无法访问 JobIntentService 中的类字段值

我正在尝试JobIntentService在 Android 上使用,但无法访问onHandleWork方法内的类字段。我的discoverable字段在方法中似乎总是为空onHandleWork

这是我的 JobIntentService 类:

我的主要活动课: