2012-04-15 70 views
0

我正在使用来自多个活动的GPS的Android应用程序。 我每次从一个活动转移到另一个活动时,都在寻找一种从所有活动访问GPS的好方法,无需启动/停止GPS(接收活动)。 在此link建议在OnStart/OnStop上使用服务并绑定/解除绑定,因为它们重叠。Android:从多个活动处理GPS

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

任何想法?

谢谢。

回答

0

当我们按Home按钮的任何其他活动来自活动生命周期方法的一部分时,我们也有一个方法叫做onUserLeaveHint方法。

onUserLeaveHint()是受保护的方法作为活动的其他生命周期方法,如果你正在处理onUserLeaveHint这将当用户点击Home键

当用户点击后退键照顾下面的情况

当用户点击报警条

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

+0

10倍,但我会为后面的同一事件关键所以它不能真正解决问题。 – 2012-04-15 16:52:15

+0

所以你想要区分返回键和主页键 – 2012-04-15 16:53:10

+0

这个问题不仅在主页按钮,例如,当一个来电到达时。 – 2012-04-15 17:22:26

2

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

当我从选择活动转到OSM活动时,记录到Google地图活动,然后点击主页按钮。 (OSM和谷歌都使用与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 
+0

你确定OnStop是在应用程序隐形后调用的吗?因为我正在打印所有活动的状态,并且我看到只有按下主页按钮时才会调用OnResume。 只有当我运行另一个应用程序时(按下主页按钮后)才会调用OnStop。 – 2012-04-15 17:20:53

+0

是的,我确定,编辑我的帖子以包括我在活动中记录所有..()方法。它在模拟器和我的手机 – NickT 2012-04-15 17:50:54

+0

这很奇怪。我正在使用手机和模拟器(2.3),并且按下主页按钮后不会调用OnStop。也许我会尝试一个不同的操作系统版本。 – 2012-04-16 07:28:36

相关问题