无法停止 Firebase JobDispatcher 服务

2023-11-29

可能重复

我创建了一个 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();
    }

您需要通过取消注册位置侦听器并调用来取消作业本身jobFinished()在 LocationJobService 内。

As dispatcher.cancelAll()仅适用于取消尚未运行的预定作业。 您可以使用类似的工具Eventbus通知服务何时停止。

Refer https://medium.com/google-developers/scheduling-jobs-like-a-pro-with-jobscheduler-286ef8510129了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法停止 Firebase JobDispatcher 服务 的相关文章

  • Android webview 滚动不起作用

    我正在尝试在网络视图中向下滚动到页面底部 我正在使用谷歌在其教程中提供的网络视图示例 我正在使用这行代码来尝试滚动 但它不起作用 mWebView pageDown true 关于如何使其以编程方式滚动有什么建议吗 谢谢 public cl
  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • FTS3 在 ORMLite 中搜索?

    我对 FTS3 一无所知 除了http developer android com guide topics search search dialog html http developer android com guide topics
  • 安卓定位不准确

    我正在尝试获取当前用户的位置 我试图重构我的代码以获得更好的结果 但我只是不断得到关于准确度的荒谬位置 它在 900 600 米之间 如何才能得到更好的结果 使其精度达到50m以内 这是我的代码 package com agam mapsl
  • 播放 SoundCloud 曲目

    我可以在 Android 应用程序中播放 SoundCloud 中的曲目吗 我正在尝试这段代码 但它不起作用 String res https api soundcloud com tracks 84973999 stream client
  • 从 React Native Js 代码调用 Android Native UI 组件方法

    我创建了一个 CustomView SignatureView java 它扩展了 LinearLayout 以捕获 Android Native 中的签名 并创建了SignatureCapturePackage java和Signatur
  • 如何为发布而不是调试创建密钥库?扑

    我按照使用此网站部署 flutter 的步骤进行操作https flutter io android release https flutter io android release 当我运行 flutter build apk 时出现此错
  • 出现错误错误:res/menu/mainMenu.xml:文件名无效:必须仅包含[a-z0-9_。]

    我是安卓新手 刚刚开始使用 我在 res 文件夹中创建了一个文件 menu mainMenu xml 但我得到了错误 Error res menu mainMenu xml invalid file name must contain on
  • 如何在 Android 模块中使用 FirebaseAuth

    我正在开发一个聊天库 我想在其中显示登录用户的对话 制作该库的原因是我想将其集成到多个项目中 我现在面临的问题是FirebaseAuth表示用户尚未登录 FirebaseAuth getInstance mFirebaseApp getCu
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • Android FragmentTransaction 自定义动画(未知动画师名称:Translate)

    我正在尝试让自定义动画与我的片段一起使用 我已按照在线教程进行操作 但出现以下错误 java lang RuntimeException 未知的动画师名称 翻译 动画的 XML 如下
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 在 React Native 中调试应用程序崩溃

    我是 React Native 新手 我正在尝试安装 React Native Facebook SDK 以便我可以使用我的应用程序进行 Facebook 登录 我按照此处列出的步骤操作 https tylermcginnis com in
  • Android:监听状态栏通知

    有没有办法在状态栏被下拉时监听通知 1 用于检测状态栏变化 您可以注册一个监听器来获取系统UI可见性变化的通知 因此 要在您的活动中注册侦听器 Detecting if the user swipe from the top down to
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • 错误:无法创建新会话,因为找不到需要 HttpClient、InputStream 和 long 的“createSession”

    我正在尝试自动化 Android 混合应用程序 但出现以下错误 1 线程 main org openqa selenium WebDriverException中出现异常 无法创建新会话 因为未找到需要 HttpClient InputSt
  • 在 KitKat 4.4.2 中获取 SDard 路径和大小

    我在 Google Play 上有一个设备信息应用程序 在该应用程序中我有存储信息 我知道 Android 4 4 在访问外部 SD 卡方面发生了一些变化 内部似乎没有给我带来问题 我的问题是 如何可靠地获取 KitKat 上 SD 卡的大
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm
  • 使用 JobScheduler API 进行位置更新

    下面是我使用 FireBaseJobDispatcher 启动作业的演示代码 public class MainActivity extends AppCompatActivity Override protected void onCre
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro

随机推荐

  • 使用 Javascript 访问通过 Twig 传递的变量

    我有一个控制器 它将数组传递给树枝模板 我想在该页面上编写的脚本中使用该模板 我该怎么做呢 我在我的 twig 模板中尝试过 但只有当它是一个字符串时才有效 你可能必须json encode数组 试试这个
  • 根据会话状态更改变量内容时出错

    我正在尝试编写一个脚本 根据会话状态和页面 URL 中的 ID 例如 www example com profile php id 1 更改可验证内容 以便它显示一组如果他们未登录并查看其他人的个人资料 则为另一内容 如果已登录并在自己的个
  • OCR 中的草书字符分割

    我做了一个OCR application for handwritten normal characters 对于我所使用的字符分割histogram profile method 这成功地适用于普通的英文字符 我使用水平投影进行线分割 使
  • 创建具有来自单独表行的列特征的数据框

    我有一个描述性的辅助表 其行指定变量的特征 其中varCat描述变量类别 rept稍后实施该类别的重复次数 以及form他们的数据格式 require dplyr require tidyr require purrr descr lt t
  • 如何通过 JavaScript 在 Calendly 中预填“电话号码”? “位置”字段不起作用

    我在 Calendly 中有一个 电话呼叫 一对一 事件类型 我想为其提供自定义的嵌入脚本 根据文档我发现location参数 字段可用于通过 URL 预填充电话号码 但它不适用于这种嵌入代码 它不会预填充内联小部件 其他所有内容都会进入并
  • 顶部和底部带有双箭头的 Div

    我不是 CSS 专家 我会很努力地为我的 div 实现以下形状 然后我想在中间插入文本 我怎样才能获得这个形状 下面是我的一些尝试 div class triangle down white style height 400px try d
  • 使用 javascript 从 sharepoint 人员选择器检索电子邮件地址

    我正在使用 SharePoint 2007 我在布局文件夹中有一个自定义 aspx 页面 其中包含人员选择器 PeopleEditor 控制 用户可以输入n控制中的用户数量 我想使用 JavaScript 从人员选择器控件中检索用户的电子邮
  • Hibernate TransientPropertyValueException 保存数据时

    我正在尝试使用 hibernate 将数据插入数据库 这是我执行该操作的方式 session beginTransaction pojo StuDetails stu new StuDetails stu setFName f name s
  • 本地 HTML 文件无法正确加载到 Dash 应用程序中

    我尝试将本地 html 文件嵌入到基本的 Dash 应用程序中 我使用了这个代码link并将路径替换为我的本地相对路径 破折号应用程序与 html 本地页面位于同一文件夹中 html Iframe src random example ht
  • 在 Python 中对请求应用重试

    我有一个 URL 列表 我想使用 Python 对其执行 HTTP Get 请求grequests module 某些 URL 不会返回 正常 状态 在这种情况下 我想重试该 URL 我可以使用一个队列来做到这一点 该队列存储所有尚未尝试过
  • awk:一个文本文件中的词频,如何输出到myFile.txt?

    给定一个 txt 文件用空格分隔的单词 例如 But where is Esope the holly Bastard But where is And awk 函数 cat pathway to your file txt tr n so
  • 使用 PHP 替换文本文件中的字符串

    我需要打开一个文本文件并替换一个字符串 我需要这个 Old String span style display block New String span style display none 这是我到目前为止所拥有的 但除了额外的空格之外
  • 带有过滤器显示的 jQuery Mobile 列表视图,单击时显示项目

    我有一个使用 jqueryMobile 使用数据过滤器显示功能创建的列表视图 此功能会隐藏列表元素并在您键入时显示与输入的字符匹配的元素 我的数据源是本地的 意味着列表是静态填充的 我想做的是显示所有项目 而无需输入任何字符 但当列表本身获
  • 如何向我的 OSX 应用程序添加 Root 权限?

    我以 root 用户身份创建了一个应用程序 它运行良好 在 root 用户中 当我与标准用户尝试相同的应用程序时 它没有成功 然后我知道我需要 root 权限才能运行该应用程序 我谷歌了几天但没有得到它 我读过一些问题和苹果文档 哪个是 h
  • 压缩存储库中的所有父级?

    我删除了最后一个问题 因为我想我会问一个更简单的问题 有没有办法压缩节点的所有父节点 基本上 假装存储库从这里开始 So turn o o o o o x o o o o into x 如果我能修改x就更好了 但乞丐不能挑剔 以下是我将如何
  • div 内的浮动元素,浮动在 div 之外。为什么?

    假设你有一个div 给它一个确定的width并在其中放入元素 在我的例子中是img和另一个div 这个想法是容器的内容div会导致容器div伸展并成为内容的背景 但是当我这样做时 包含div缩小以适应非浮动物体 浮动物体要么完全向外 要么一
  • OSGi 解决什么问题?

    我在维基百科和其他网站上读到过OSGi 但我并没有真正看到大局 它说它是一个基于组件的平台 并且您可以在运行时重新加载模块 另外 到处给出的 实际示例 是 Eclipse Plugin Framework 我的问题是 OSGi 清晰简单的定
  • 将shared_ptr分配给weak_ptr

    我想将构造的shared ptr分配给weak ptr std weak ptr
  • 如何在“sub”表达式中使用lambda表达式参数?

    我希望能够构建类似以下委托的表达式 Func
  • 无法停止 Firebase JobDispatcher 服务

    可能重复 我创建了一个 JobDispatcher 服务来不断在后台获取用户位置并将用户位置发布到服务器 为此 我创建了一个作业 如下所示 private void startLocationJobService Check if loca