【问题标题】:Android: Handling GPS from multiple activitiesAndroid:处理来自多个活动的 GPS
【发布时间】:2012-04-16 01:50:00
【问题描述】:

我正在开发一个使用来自多个活动的 GPS 的 Android 应用。 我一直在寻找一种从所有活动中访问 GPS 的好方法,而无需在每次从一项活动转移到另一项活动时启动/停止 GPS(接收事件)。 在此link 中,建议使用服务并在 OnStart/OnStop 上绑定/取消绑定,因为它们重叠。

我真的很喜欢这个想法,但是我留下了一个问题。 当我的应用程序不再处于活动状态(即按下主页按钮)时,我想停止 GPS。 在这种情况下,只会调用 OnPause。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: android gps


    【解决方案1】:

    我使用过这种方法,如果你在 onStop() 中解除绑定,它就可以正常工作。当您的应用程序不再可见时,将调用该方法。按主页键将使您的应用程序不可见。

    当我从选择活动转到 OSM 活动,再到 Google 地图活动,然后点击主页按钮时记录。 (OSM 和 Google 都使用 GPS 位置监听器服务)(我暂停了 OSM 活动以更改首选项设置,因此暂停并重新启动)

    04-15 17:41:47.903: D/ACTIVITY(376): Select Mode Activity onPause
    04-15 17:41:47.953: D/ACTIVITY(376): OSM Activity onCreate
    04-15 17:41:48.043: D/ACTIVITY(376): OSM Activity onStart
    04-15 17:41:48.063: D/ACTIVITY(376): OSM Activity onResume
    04-15 17:41:49.394: D/ACTIVITY(376): Select Mode Activity onStop
    04-15 17:42:04.213: D/ACTIVITY(376): OSM Activity onPause
    04-15 17:42:04.763: D/ACTIVITY(376): OSM Activity onStop
    04-15 17:43:00.483: D/ACTIVITY(376): OSM Activity onStart
    04-15 17:43:00.533: D/ACTIVITY(376): OSM Activity onResume
    04-15 17:43:20.683: D/ACTIVITY(376): OSM Activity onPause
    04-15 17:43:20.723: D/ACTIVITY(376): Google Activity onCreate
    04-15 17:43:20.853: D/ACTIVITY(376): Google Activity onStart
    04-15 17:43:20.873: D/ACTIVITY(376): Google Activity onResume
    04-15 17:43:21.307: D/ACTIVITY(376): OSM Activity onStop
    04-15 17:43:40.833: D/ACTIVITY(376): Google Activity onPause
    04-15 17:43:41.403: D/ACTIVITY(376): Google Activity onStop
    

    【讨论】:

    • 您确定在应用不可见后调用 OnStop 吗?因为我正在打印我活动的所有状态,并且我看到当我按下主页按钮时只有 OnResume 被调用。仅当我运行另一个应用程序(按下主页按钮后)时才会调用 OnStop。
    • 是的,我确定,我编辑了我的帖子,以包括我在活动中记录的所有 on..() 方法。在模拟器和我的手机上可以吗
    • 这很奇怪。我在手机和模拟器(2.3)上运行,按下主页按钮后不会调用 OnStop。也许我会尝试不同的操作系统版本。
    【解决方案2】:

    当我们按下主页按钮时,任何其他活动都会从活动生命周期方法中进入前台,我们还有一个称为 onUserLeaveHint 方法的方法。

    onUserLeaveHint() 是一个受保护的方法,与活动的其他生命周期方法一样,如果您正在处理 onUserLeaveHint,这将处理以下情况

    当用户点击主页键时

    当用户点击返回键时

    当用户点击信号栏时

    基本上,它暗示用户试图离开您的活动。这意味着如果您正在处理 onUserLeaveHint(),则无需在代码中处理 onBackPressed()。

    【讨论】:

    • 10x 但我会为返回键得到相同的事件,所以它并不能真正解决问题。
    • 所以你想区分返回键和主页键
    • 问题不仅仅出在主页按钮上,例如来电时。
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2017-02-01
    相关资源
    最近更新 更多