0

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

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

有任何想法吗?

谢谢。

4

2 回答 2

2

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

当我从选择活动到 OSM 活动,再到谷歌地图活动,然后点击主页按钮时记录。(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
于 2012-04-15T16:52:14.923 回答
0

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

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

当用户点击主页键时

当用户按下返回键时

当用户点击信号器栏时

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

于 2012-04-15T16:45:19.307 回答