- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了一个 JobDispatcher 服务来持续在后台获取用户位置并将用户位置发布到服务器。为此,我创建了一个作业如下:
private void startLocationJobService() {
// Check if location job service already running
if(!isMyServiceRunning(LocationJobService.class)) {
Context context = config.getActivity();
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
Job job = dispatcher.newJobBuilder()
.setLifetime(Lifetime.FOREVER)
.setService(LocationJobService.class)
.setTag(JOB_SERVICE_TAG)
.setReplaceCurrent(true)
.build();
//creating new job and adding it with dispatcher
dispatcher.mustSchedule(job);
}
}
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) config.getActivity().getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
在服务的 onStartJob 中,我正在配置位置 api 以获取用户位置
public boolean onStartJob(final JobParameters job) {
Log.i("TAG", "Service Run onStartJob called");
configureFusedLocation(LocationJobService.this);
return true;
}
服务启动并按预期继续运行。但它并没有停止。我已经使用两种方式(dispatcher.cancel 和 stopService)来停止服务,如下所示:
public void stopService() {
if(isMyServiceRunning(LocationJobService.class)) {
config.getActivity().stopService(new Intent(config.getActivity(), LocationJobService.class));
cancelLocationJobService();
}
}
private void cancelLocationJobService(){
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(config.getActivity()));
// Cancel the job for this tag
dispatcher.cancel(JOB_SERVICE_TAG);
//Cancel all the jobs for this package
dispatcher.cancelAll();
}
最佳答案
您需要取消注册位置监听器并在 LocationJobService 中调用 jobFinished()
来取消作业本身。
因为 dispatcher.cancelAll()
仅用于取消尚未运行的预定作业。您可以使用 Eventbus
等工具来通知服务何时停止。
引用https://medium.com/google-developers/scheduling-jobs-like-a-pro-with-jobscheduler-286ef8510129了解更多信息。
关于android - 无法停止 Firebase JobDispatcher 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51780753/
我在为firebase jobdispatcher添加依赖项时遇到问题,我已经用gradle文件来回尝试,我在Android SDK中安装了Google Play服务,但仍然无法编译该依赖关系。 这是
我正在开发一个应用程序,一个简单但希望令人上瘾的小游戏。用户必须尽快解决预定义的级别。 关卡信息在线存储在 MySQL 数据库中,其中还包含所有玩家完成给定关卡所需的平均时间。此外,关卡数据本地存储在
我在这一行遇到以下错误:.setService(LocationFirebaseJobService::class.java) : 类型推断失败。预期类型不匹配:推断类型为 Class但是Class预
我正在实现 Firebase Jobdispatcher,触发时间指定在 10 到 20 秒之间。这是我安排工作的代码: public static void scheduleCompatibleJo
根据这个例子,我看到我可以使用 Trigger.NOW 或 0,0 的时间让作业现在开始: Bundle myExtrasBundle = new Bundle(); myExtrasBundle.p
下面是我用来安排每次连接到互联网时触发作业的代码 FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlay
Possible Duplicate 我已经创建了一个 JobDispatcher 服务来持续在后台获取用户位置并将用户位置发布到服务器。为此,我创建了一个作业如下: private void sta
我在我的项目中使用了 FirebaseJobDispatcher。这是示例代码。 public class MyCustomDispatcher extends JobService { @O
我正在使用 Firebase-JobDispatcher .我已经安排了一些工作,如果我保持设备开关,它工作正常。但是如果我重新启动我的设备,那么计划的工作不会执行或者它不会被重新安排?我已经使用了
我已经阅读了所有可用的官方文档(令人惊讶的是它并不多),对于定期任务我所能得到的就是这段代码 .setRecurring(true) // start
我之前使用的是 GCM 网络管理器,但后来听说 Firebase JobDispatcher 包括 GCM 以及其他功能,所以我尝试使用它。我已经成功地编写了一个周期性任务并且它工作正常,但问题是我需
在 API > 21 上,当我的手机锁定时,此服务将停止工作(当我唤醒手机时,服务将开始工作)。这就是我所做的: public class JobDispacherService extends Jo
我正在尝试将 Firebase Job Dispatcher 添加到我的项目中,但由于此错误我无法构建: Gradle sync failed: Could not find com.firebase
我正在尝试使用 RxJava2 异步启动 Firebase jobdispatcher。 @Override public boolean onStartJob(JobParameters j
我在我的应用程序中使用 firebase jobdispatcher,但我遇到了一个问题。我想在任务完成后停止工作。我尝试在 onStartJob() 方法中调用 selfStop()。但它的 onS
我正在创建一个闹钟之类的应用程序,用户可以在其中为特定日期和时间添加余数,他们还可以选择重复来重复余数。 其余时间我不做任何特定于网络的工作。但是将来我可能需要使用特定于网络的工作,但目前还不需要。
我想实现 Firebase JobDispatcher 来运行后台操作。但是在扩展 JobService 时,它显示错误,因为 class requires api level 21。为什么 ?
目前,在 Android 中,要根据时间或任何其他因素(如充电状态、网络状态等)定期执行任务,基本的三个选项是:Android AlarmManager (定期运行基于时间)、GCMTaskServi
来自 Firebase JobDispatcher 文档 Firebase JobDispatcher setTrigger(Trigger.executionWindow(0, 60)) // st
我已经使用 Firebase 作业调度程序实现了作业调度。它在 doc 中给出具有特定操作 Action 的 IntentFilter 应该添加到作业服务中,如下所示 添加上面的 Int
我是一名优秀的程序员,十分优秀!