LocationManager.removeUpdates(listener) 不删除位置侦听器

2024-01-05

我的应用场景是我想跟踪员工的位置。我有一个广播接收器,它监听设备启动广播并注册警报管理器。当警报管理器勾选时,它会注册两个位置侦听器,一个用于侦听 GPS,另一个用于侦听网络。我希望当我在 onLocationChange() 方法中获得第一次位置更新时,保存位置并取消注册该位置侦听器,以便当警报管理器再次勾选时,它不会重复。为了取消注册,我将位置侦听器作为静态对象,以便在 onLocationChange() 中访问它们。但我发现它并没有删除位置侦听器。这是我的代码示例:

 public class BootTimeServiceActivator extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Calendar calendar = Calendar.getInstance();
        AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent mIntent = new Intent(context, MyBroadCastReceiver.class);
        PendingIntent mPendingIntent = PendingIntent.getBroadcast(context, 0, mIntent, PendingIntent.FLAG_CANCEL_CURRENT);
        am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 20 * 60 * 1000, mPendingIntent);


    }

    }

//..........

    public class MyBroadCastReceiver extends BroadcastReceiver{

    public static LocationManager locationManager;
    public static MyLocationListener networkLocationListener;
    public static MyLocationListener gpsLocationListener;



    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(context, "Alarm has been called...", Toast.LENGTH_SHORT).show();
        initLocationListeners(context);
        registerLocationListeners();

    }

    public void initLocationListeners(Context context) {
        locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
        networkLocationListener = new MyLocationListener(context);
        gpsLocationListener = new MyLocationListener(context);

    }

    public void registerLocationListeners() {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, gpsLocationListener);
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 0, gpsLocationListener);

    }

}

\\.....

    public class MyLocationListener implements LocationListener {

    Context context;

    public MyLocationListener(Context context) {
        this.context = context;
    }

    @Override
    public void onLocationChanged(Location location) {
        if(location != null) {
            SDCardService sdService = new SDCardService(context);
            try {
                sdService.logToDB(location);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Log.d("provider",location.getProvider());
            if(location.getProvider().equals(LocationManager.GPS_PROVIDER)) {
                MyBroadCastReceiver.locationManager.removeUpdates(MyBroadCastReceiver.gpsLocationListener);
            }
            else if(location.getProvider().equals(LocationManager.NETWORK_PROVIDER)) {
                MyBroadCastReceiver.locationManager.removeUpdates(MyBroadCastReceiver.networkLocationListener);
            }



        }


    }

谁能指导我哪里错了?


尝试这个..

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

LocationManager.removeUpdates(listener) 不删除位置侦听器 的相关文章

  • 从 Gradle 将 url 添加到 BuildConfig 文件

    我的BuildConfig是由Gradle生成的 我的字符串之一是 URL 当我尝试创建 apk 时 出现以下错误 在网址中 有什么想法我应该告诉 gradle 才能正常工作吗 这是我告诉 Gradle 的 buildConfigField
  • 改造中如何使用HashMap发布数据?

    您能解释一下如何使用以下方式发布数据吗hashmap in 改造2 这就是我发的帖子 FormUrlEncoded POST getProfile Call
  • 订阅购买后失效日期无效

    我有一个带有应用内订阅的 Android 应用程序 用户购买订阅后 我通过 Google API 通过我们的后端请求 validUntilTimestampMsec 和 initiationTimestampMsec 返回的时间戳 init
  • 清除堆内存以防止内存不足异常

    我知道已经有人问过有关内存不足的问题 但我没有找到解决方案 在位图工厂中 我出现内存不足异常 甚至使用 inSampleSize 1 所以我经常用 try catch 内存不足异常来包围它 因为这是一个不好的做法 try catch Out
  • Android 套接字和 HTTP 响应标头

    有趣的是 我可能无意中找到了解决方案是否可以使用普通套接字连接发送 HTTP 请求并接收没有标头的响应 https stackoverflow com questions 8320574 我希望我忽略了一些东西 无论如何 我正在连接到 We
  • MyGestureDetector 扩展了 SimpleOnGestureListener

    我正在实现一个扩展 SimpleOnGestureListener 的 MyGestureDetector 我从以下机构借了课程 http www codeshogun com blog tag view flipper http www
  • Android 中的处理程序到处理程序与 Messenger 到 Messenger 通信

    问题 使用起来是否 更好 更快且开销更少 Handler http developer android com reference android os Handler html与使用 Handler 通信相比信使 http develop
  • Google Play 服务,登录成功,但创建房间时出错

    我正在尝试 google play 服务示例 特别是 ButtonClicker2000 从 logcat 登录过程也正常 但我有另一个错误 06 01 22 43 15 478 D ButtonClicker2000 1565 Sign
  • 定时器时间不作为变量改变?

    这是我的代码 private int V Time 1 try final Timer V Timer final Handler V Handler V Timer new Timer V Handler new Handler Loop
  • 如何切换状态栏?

    我正在寻找一种显示和隐藏状态栏的方法onClickListener 但仅显示其有效 WindowManager LayoutParams lp getWindow getAttributes if isStatusbarVisible lp
  • Android TextView 中的等宽表格数字

    我有一个自定义字体 默认情况下具有可变宽度数字字形 并且我想在 Android 中使用该字体的等宽表格数字功能TextView使数字垂直对齐 也就是说 改变如下 像这样的事情 要选择字体的表格数字功能 请使用TextView s fontF
  • 如何在我的谷歌上嵌入转弯导航

    我想在我的 Android 应用程序中嵌入逐段导航 请给我一个教程或如何执行此操作的想法 提前致谢 如果您不固定使用谷歌地图 您可以使用基于 OpenStreetMap 地图的维基百科版本 的 SDK 有几个不错的 SDK 提供商 skob
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • Android 10 中没有设备筛选器的 USB_DEVICE_ATTACHED

    我正在开发一个 Android 应用程序 它在清单中为 BroadcastReceiver 注册了四个意图过滤器 这些都是 android hardware usb action USB DEVICE ATTACHED android ha
  • Google 的 Android OpenGL 教程是否教授了错误的线性代数?

    在帮助另一位用户解决有关该问题的问题后响应触摸事件 http developer android com training graphics opengl touch htmlAndroid教程 我下载了源代码 并且对我所看到的感到非常困惑
  • 通知管理器所需的权限

    我正在尝试使用以下命令将振铃器设置为静音且请勿打扰优先级 AudioManager myAudioMgr AudioManager context getSystemService Context AUDIO SERVICE Notific
  • 如何将 Android 应用程序添加到已在 iOS 应用程序中使用的现有 Firebase 项目?

    我一直在我的 iOS 应用程序中使用 Firebase 项目 我现在想开始为 Android 应用程序使用相同的 Firebase 项目及其所有数据库和存储 在您的应用程序下Overview菜单 你应该按添加另一个应用程序并选择Androi
  • 调用外部应用程序

    如何从我的应用程序调用外部应用程序 例如 我需要打电话Shazam 应用程序 来自我的应用程序 我可以在应用程序的包名称中看到logcat 这对任何目的都有用吗 特别是对于 Shazam 以下代码有效 Intent intent new I
  • 如何检查设备上是否安装了电子邮件客户端

    我需要检查设备上是否安装了电子邮件客户端 我使用了以下代码 但它对我不起作用 public boolean isIntentAvailable final PackageManager packageManager getApplicati
  • Android 可扩展列表视图随机播放子项

    你好 我正在使用 Android Expandable listview 并用不同的视图在其中膨胀子视图 我遇到的问题是 当我展开视图然后打开另一个父视图时 布局中的子视图会变得混乱并在代码中膨胀错误的布局 这是我的两个项目的示例代码 这是

随机推荐

  • Delphi中如何将字符串保存到文本文件中?

    创建字符串并将其保存到的最简单方法是什么 txt files Use TStringList uses Classes Dialogs Classes for TStrings Dialogs for ShowMessage var Lin
  • Jquery datepicker更改事件触发和input的默认更改事件

    我有日期选择器
  • 防止 Mathematica 中出现雪崩的运行时错误

    当笔记本超出几个功能时我遇到的典型情况 我评估一个表达式 但得到的不是正确答案Beep接下来是数十个无用的警告 然后是 的进一步输出将被抑制 我发现一件事很有用 在函数内部使用类似 Python 的 assert 来强制内部一致性 还有其他
  • 什么 SQL 在第一列中返回重复项,而第二列中的值不同?

    问题与此非常相似查找重复项 https stackoverflow com questions 6057352 find duplicates in sql但我只想找到那些代码与 ROME 不同且至少有一个名称是 ROME 的重复 ID 我
  • 使用 Babel 实现 GAE webapp 应用程序国际化

    您将如何使用 Google App Engine Web 应用程序国际化BABEL http babel edgewall org 我在这里寻找所有阶段 标记要翻译的字符串 提取它们 翻译 配置您的应用程序以加载浏览器请求的正确语言 1 在
  • Cordova/Phonegap Google 地图插件上标记图标的本地图像

    是否可以使用设备本地存储的图像作为标记图标 我可以使用 URL 并且它可以工作 但是当我尝试使用本地图像时 它不会加载 我应该如何引用图像 这是一个多平台应用程序 因此我无法使用 Android 等设备特定路径file android as
  • 获取span的内容

    如何获取 span 的内容 我正在寻找一种方法让所有这些都变得简单 而不是 jQuery javascript 和一点 jQuery var swear words arr new Array bad evil freak var rege
  • 用户与当前数据匹配

    我有一个包含两种不同类型的用户 导师和学员 的数据库 我希望第二组 学员 能够 搜索 第一组 导师 中与其个人资料匹配的人 导师和学员都可以随时进入并更改其个人资料中的项目 目前 我使用 Apache Mahout 进行用户匹配 recom
  • Guzzle http 的 Laravel 中的错误日志记录被截断

    Guzzle http 正在截断超过 120 个字符的异常 但我需要记录完整的异常消息 我怎样才能做到这一点 我正在使用 laravel 4 2 22 try whatever catch GuzzleHttp Exception Requ
  • 测试浏览器是否支持多个文件上传?

    有没有办法测试给定的浏览器是否支持multiple文件上传元素上的属性 服务器端或客户端实现就足够了 我确实意识到我可以针对支持该功能的已知浏览器列表来测试用户代理 但这似乎是一个相当脆弱的实现 即 如果 IE 10 在最终启动时支持该功能
  • 更改 Angular 2 的 Material 设计主题

    我正在尝试使用角材料2 https github com angular material2与我的 Angular 2 应用程序 我没有找到如何全局更改材质主题 primaryColor ETC 我知道 Angular Material 2
  • XElement Add 函数将 xmlns="" 添加到 XElement

    我有一个为列表对象生成 xml 的函数 public XDocument ToXML foreach var row in this var xml row ToXml template Root Add xml return templa
  • 我的角度中特定页面的标题隐藏

    我正在研究角度项目 我的需要是仅在登录页面上隐藏标题块 我试图隐藏登录页面上的标题 但它对我来说仍然不起作用 你能帮我在登录状态下隐藏它吗 这是我的索引 html div src div div class div div div 这是我的
  • 如何在不删除子元素的情况下删除包装器(父元素)?

    我想删除父级而不删除子级 这可能吗 HTML 结构 div class wrapper img div div class button Remove wrapper div 单击按钮后我想要 img div class button Re
  • 从连续数据流播放音频 (iOS)

    整个早上我都在为这个问题苦苦思索 我已经设置了与返回音频数据的数据源的连接 它是一个录音设备 因此数据没有设定长度 数据只是流入 就像 如果您要打开一个到收音机的流 我已经成功地接收了我的代码中的所有数据包 现在我只需要玩它 我想播放传入的
  • 按降序对 int 数组进行排序会给出“方法不适用于参数”

    我正在尝试使用以下代码在 Java 中按降序对数组进行排序 for int i 0 i lt arr length i Comparator comparator Collections reverseOrder Arrays sort a
  • 用于数据库表的 Rails 3 I18n

    我正在寻找一些有关使用国际化最佳实践的提示和建议 我四处搜寻 但我对所读到的内容并不满意 我读过的大多数文章都集中在使用 yml 文件进行国际化 这在我的情况下不起作用 我目前有几个带有英文文本的数据库表 其中一些表格的文本字段只有几句话长
  • 大数组上的 Python MemoryError

    这是我尝试运行的 python 脚本 n 50000000000 50 billion b 0 n for x in range 0 n b x random randint 1 899999 但我得到的输出是 E python gt py
  • Android - POST 到 RESTful Web 服务

    我正在寻找有关如何将数据发布到 Android 应用程序中的 Web 服务的一些指导 不幸的是 这是一个学校项目 所以我无法使用外部库 Web 服务有一个基本 URL 例如 http example com service create 并
  • LocationManager.removeUpdates(listener) 不删除位置侦听器

    我的应用场景是我想跟踪员工的位置 我有一个广播接收器 它监听设备启动广播并注册警报管理器 当警报管理器勾选时 它会注册两个位置侦听器 一个用于侦听 GPS 另一个用于侦听网络 我希望当我在 onLocationChange 方法中获得第一次