按下“后退”按钮后,LocationListener停止正常工作

时间:2018-07-28 11:31:30

标签: android locationlistener

在我的应用程序中,主Activity实例化另一个实现LocationListener的类(将其命名为GeolocationManager)。 对主Activity的引用将传递到GeolocationManager的构造函数中。

GeolocationManager内,根据接收到的位置执行算法,并且相应地更新了主要活动的UI。

例如:

mainActivityReference.findViewById..->更改元素的样式。

当我按下Android的“后退”按钮时出现问题。 GeolocationManager继续工作(很好),但是当我重新打开活动(同时已被破坏)GeolocationManager时,它不再能够在主{ {1}}。

代码已执行,但在UI上看不到任何更改。当检测到新位置时,Activity还将尝试将主活动(包含GeolocationManager)滚动到特定位置。即使在这种情况下,代码也会被执行,但活动不会滚动。

我认为这与以下事实有关:还原ScrollView之后,即使Activity也已经重新创建,即使它已经在后台运行并且有损坏。

为什么会这样?

2 个答案:

答案 0 :(得分:0)

您可以尝试在应用程序中使用Observable / Observer模式,在应用程序的上层创建GeoLocationManager,并在需要时让其他活动订阅更新(并且他们离开时退订)。

答案 1 :(得分:0)

您可以在broadcastReceiver上使用EventbusGeolocationManager进行回调/更新UI