如何从广播接收器中取消注册侦听器并停止服务

2024-03-28

在我的应用程序中,我有一个广播接收器,当接收到短信中的关键字时,它会启动一项跟踪手机 GPS 位置的服务。我这样做使用 -

context.startService(new Intent(context,TrackGPS.class));

我还需要能够在收到短信中的另一个关键字时停止服务,我已尝试这样做,但 GPS 传感器仍然跟踪位置,并且 GPS 图标在屏幕顶部闪烁。我尝试使用 -

context.stopService(new Intent(context, TrackGPS.class));

我认为这可能是因为 GPS 侦听器需要取消注册。谁能帮助我在收到短信后停止该服务+停止 GPS 跟踪?提前致谢。

Solution

@Override
public int onStartCommand(Intent GPSService, int flags, int startId) {
    boolean startListening = GPSService.getExtras().getBoolean("IsStartTracking");
    if (startListening == true){
        lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    }
    else {
        lm.removeUpdates(this); 
        stopSelf();
    }
    return 1;
}

我不认为你的问题是停止服务。通过终止您的服务,您并没有终止仍在寻找更新的 LocationListener 对象。

我会做以下事情。

无需停止和启动服务,只需在每次需要做某事时启动服务(开始侦听或停止侦听)即可。

在您用来告诉您想要做什么的 Intent 中添加一个额外的内容,例如:

Intent GPSService = new Intent(context, TrackGPS.class);
GPSService.putExtra("IsStartTracking", true);
context.startService(GPSService);   

在服务的 onStart 方法重写中,您现在可以根据“IsStartTracking”的值在 LocationManager 的单个实例上注册和取消注册位置侦听器

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

如何从广播接收器中取消注册侦听器并停止服务 的相关文章

  • 在 Android 中不断更新新的 JSON

    我有不断变化的 JSON 我需要在 android 中不断更新更改 我该怎么做 我的Android代码是 r getImage JSONObject data new JSONObject r String a data getString
  • Android - 同一行中的两个按钮填充整个宽度

    我在定义相对布局时遇到了一些问题 我有一个带有滚动的列表视图 并且两个按钮始终在列表视图的底部可见 我只是希望我的两个按钮有 50 的宽度 填充该线 这是我的代码
  • 在 Android 4.2.2 和 4.3 上关闭 BluetoothSocket 时出现致命信号 11 SIGSEGV

    我的应用程序在 Android 2 3 3 到 4 1 2 下运行良好 但自从 Android 4 2 2 和 Android 4 3 以来 我有一个 fatal signal 11 SIGSEGV at 0x00 当我关闭蓝牙插座时 我查
  • 动态添加导航抽屉中的项目

    我创建了抽屉 但是我想动态设置抽屉的项目列表 意味着从数据库获取数据并设置为抽屉列表 是否可以 是的 比如何 我也知道静态抽屉 尝试这个 final Menu menu navigationView getMenu for int i 1
  • android webview溢出无法禁用

    我在 android webview 中有一个本地页面 页面的html and body两者都有width 100 height 100 overflow hidden 以及 result popup wrap有以下CSS result p
  • 在应用程序退出时保存 Android 应用程序数据

    看来关于保存的信息量很大Activity状态 但我一直无法找到太多的信息应用 state 我正在寻找一些设计想法来解决我遇到的问题 我正在开发一个具有相当大的数据模型 1 2 MB 的游戏 该模型存在于任何 Activity 之外 事实上有
  • 为什么我无法在 Android 上从串口打开/写入?

    我编写了一个 Android 应用程序 它在 Android 4 4 Kitkat 设备上的自定义内核上运行 该设备使用 Android 串行端口 API https code google com p android serialport
  • 检测已退款的托管应用内购买 android IAP 2.0.3

    我无法弄清楚如何使用 Android 检测何时为托管 不可消费 应用内产品发放退款com android billingclient billing 2 0 3 这个问题似乎相当深 尽管我可能让它变得比应有的更复杂 首先 我进行了一次测试购
  • 在Android中获取Fragment中的应用程序上下文?

    我已通过在一个活动中使用应用程序上下文将一些数据存储到全局类中 稍后我必须在片段中检索这些值 我已经做了类似的事情来存储在全局类中 AndroidGlobalClass AGC AndroidGlobalClass getApplicati
  • Android sqlite插入记录如果不存在

    我想将一个新项目 Cheese 添加到 sqlite 表中 但前提是它不存在 我的表中只有两列 id KEY ROWID PR 和product name KEY NAME PR 我一直在尝试使用这些代码 但它给了我一个错误 public
  • `.gitignore` 用于具有 Android 目标的 Ionic 项目

    我正在使用 Capacitor 创建一个 Ionic 项目 编辑 与 Cordova 相比更新的推荐框架 并添加 Android 作为目标 我已经能够构建应用程序并添加 Android 目标 这会在android using ionic b
  • 如何使用java.util.concurrent包实现后台线程?

    这是我首先使用的代码 但在最新的 Android 版本中AsyncTask类已被弃用并且 因此它没有响应 然后我使用了Thread类 但该类也不起作用 我想要与我得到的结果相同的结果AsyncTask班级 我知道我必须使用 java uti
  • Android编程-多个列表视图的onitemclicklistener不起作用

    在我的活动中 我创建了七个列表视图 并使用 viewpager 在同一活动中在它们之间滑动 然后我有一个 sqlite 数据库填充每个列表视图 我的问题是 onitemclicklistener 不起作用 没有错误 代码执行正常 但列表项点
  • 从 Android 应用程序调用 Google 地图应用程序以获取行车方向

    我需要使用外部谷歌地图应用程序显示行车方向我找到了这个链接http developer android com guide appendix g app intents html http developer android com gui
  • Android 有类似 mechanize 这样的工具吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在创建一个 Android 应用程序 它必须在后台进行一些网上冲浪 以便为用户提供服务 我必须连接
  • 全屏 Exoplayer

    我尝试用以下内容显示节目视频 mp4 外播放器 in 回收视图 and 浏览器 我展示了具有自定义布局的视频控制器 到目前为止 一切都很好 现在尝试像其他视频播放器一样全屏播放视频 但在中找不到好方法外播放器 doc 谁能帮我 ExoPla
  • Fragment中有类似setResult()的方法吗?

    我正在使用一个片段 我收到错误onResult 方法 我需要一个替代方法setResult RESULT OK data 我可以在我的片段中使用它 请帮忙 日历片段 package app pal study samplestudy imp
  • 使用 MediaRecorder 录制屏幕特定视图

    我想录制特定的屏幕视频View链接只想记录里面执行的动作LinearLayout 现在 MediaRecorder正在录制整个屏幕 如何录制屏幕的特定部分 MediaRecorder 通过媒体投影API 记录整个屏幕 至少从 Android
  • 如何在android上的manageQuery中添加限制子句

    Android 的 API 通过 SQLite 提供了一种干净的机制来查询联系人列表 但是 我不确定如何限制结果 Cursor cur Activity mCtx managedQuery People CONTENT URI column
  • 如何在react-native应用程序中禁用屏幕截图?

    我已经使用react native制作了一个移动应用程序 目前只有android 它不是博览会应用程序 我想禁止用户在应用程序打开时截取屏幕截图 我知道不可能完全禁用此功能 但我想让至少更难截取屏幕截图 我找到了一些例子 但我不知道如何实现

随机推荐