问题标签 [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.
android - 由 java.lang.RuntimeException 引起:无法在未调用 Looper.prepare() 的线程内创建处理程序
离线调用此问题时在 JobIntentService 中初始化 Handler
请参考以下代码:
我在初始化处理程序的行出现错误。当应用程序离线时也会发生这种情况。在线场景工作正常。看起来真的很奇怪
android - 在 JobIntentService 中运行 FileObserver
我的应用程序FileObserver
在服务内部运行(该服务在创建临时文件后 10 分钟运行,它会观察该文件 60 秒,以便在不使用时将其删除)。
由于 Android 8 的限制,我无法从后台启动服务。AFAIK 的替代品是:
- 运行前台服务(但我不想显示通知图标)
- 使用
JobService
(但仅从 API 21 开始可用) - 利用
JobIntentService
JobIntentService
在后台线程上运行onHandleWork
,返回后,工作将被视为完成。所以,问题是:
我怎样才能等到FileObserver
完成?可以使用类似的东西while(!fileObserverFinished) Thread.sleep(100);
吗?有没有更好的办法?
android - Android JobIntentService ADB 错误:需要权限 android.permission.BIND_JOB_SERVICE
我正在尝试设置 JobIntentService 并使用 adb 对其进行测试。
当我使用这个命令时:
它产生错误:
我的 AndroidManifest.xml 有以下条目:
android - Android:如何修复通知的递增 setNumber()?
我使用JobIntentService
从 a 启动的BroadcastReceiver
方法向用户发送通知,告知到期日期已近。当另一个到期日的下一个通知临近时,我只想更新现有的通知并将 setNumber() 指示器增加 +1。第一个通知将“totalMesssages”变量正确增加 +1,并且 setNumber() 在通知下拉对话框中显示“1”。下一个通知正确触发,但 setNumber() 不会增加 +1 到“2”。它保持在“1”。
我在这里想念什么?
android - SecurityException:调用者不再运行
在尝试运行JobIntentService时,我在Android O 及更高版本中面临以下问题,我很难重现该问题:
notifications - Android:如何修复 JobIntentService 中的 BroadcastReceiver?
我有一个带有触发 BroadcastReceiver 的 AlarmManager 的 Activity。BroadcastReceiver 触发 JobIntentService 以向用户发送通知。
当用户点击“全部清除”或滑动以关闭通知时,我希望 setDeleteIntent() 将我在 SharedPreferences 文件中设置的计数器变量“totalMessages”重置为零。它不会重置为零。我在这里想念什么?
android - 地理围栏不再适用于 JobIntentService
我有一个用于地理围栏的 IntentService,我只是开始。但它必须在后台运行,因此在 Android 8 中它有时会被列入白名单。所以我很难我需要使用 JobIntentService: https ://developer.android.com/reference/android/support/v4/app/JobIntentService 还看了这个:Android 8.0: java.lang.IllegalStateException: Not allowed to start service意图
这是我的 onHandleIntent() ,我将在其中收到我的地理围栏电话:
这是我的 Intent 服务代码,添加地理围栏逻辑:
现在我改为了 JobIntentService。
我像这样运行服务:
我还将它添加到我的 Android 清单中:
我在新的 onHandleWork 中处理 onHandleIntent 的内容
现在我从地理围栏获得 onHandleWork 事件,但只有转换类型 = -1。所以我没有收到 ENTER 或 EXIT 事件。为什么或如何修复此地理围栏服务?
android - 保持 JobIntentService 在内部运行异步任务
我想在我的应用程序中开发文本转语音 (TTS) 功能。它必须在内部实现Service
,因为用户可能会离开“详细信息”Activity
并返回“主要”Activity
甚至离开我的应用程序,它仍然应该大声说出文本。由于奥利奥为服务引入了一些后台限制,我必须支持 4.0+ 我必须使用JobIntentService
问题是 TTS 有异步实现并且在完成工作JobIntentService
后被杀死onHandleWork
,即使我使用startForeground
(在我的代码中showSpeakingNotification
)
有趣的是,当我onHandleWork
在 'speakOut' 方法之后的断点或只是取消注释Thread.sleep
服务正在工作并阅读我的文本时(并且存在前台通知)。
问题是如何防止在我的服务实际运行时“自动杀死”我的服务,但在内部使用异步功能?
android - 处理 JobIntentService 和线程休眠
背景:
最近我不得不将一个服务迁移到 JobIntentService (JIS) 以支持 Android 8.0 后台服务限制。此服务在 FirebaseInstanceIDService 调用它后将令牌注册到我的服务器。
问题:
我有一个必须从 JobIntentService (JIS) 进行的网络调用。所有的网络调用操作都是通过 Eventbus (EB) 处理的。
流程如下
您可能已经猜到的问题是,当请求 API 事件被触发时,Intent 服务会自行完成并且不处理响应事件。
临时解决方案:
我以一种肮脏的方式解决这个问题的方法是在触发事件后立即调用 Thread.sleep(400)。(API 大约需要 150 毫秒来响应)
这可确保在 API 响应事件到达时 JIS 仍在处理响应。
我想确认这是否是正确的方法(因为这对我来说感觉像是一种蛮力)或者是否有更清洁的方法。
android - 使用 JobIntentService 在 Oreo 上不刷新主页小部件
我的应用程序包含使用定期更新的家庭小部件IntentService
。
现在,当面向 API 级别 26 时,由于 Oreo 的限制,我不得不稍微改变一下。你可以在这里找到更多信息。
我发现这篇文章描述了如何使 IntentService 在 Oreo 上工作。
我按照描述做了所有事情:
- 将我的转换
IntentService
为JobIntentService
- 将所有逻辑
onHandleIntent()
从onHandleWork()
- 在 AndroidManifest 文件中添加
android:permission="android.permission.BIND_JOB_SERVICE"
到服务中 - 另外,
<uses-permission android:name=”android.permission.WAKE_LOCK” />
已经在这个项目中使用 - 我更进一步,开始使用以下逻辑来启动服务:
enqueueWork(context, LocationForecastService.class, JOB_ID, work);
它仍然没有正确刷新或初始化小部件。服务实际启动,下载数据,但问题可能出在通过广播发送数据的某个地方。它在 API 级别设置为 24 时有效。
小部件在 AndroidManifest 文件中注册为 BroadcastReceivers,如下所示:
有人遇到过类似的问题吗?