在我的应用程序中,主Activity
实例化另一个实现LocationListener
的类(将其命名为GeolocationManager
)。
对主Activity的引用将传递到GeolocationManager
的构造函数中。
在GeolocationManager
内,根据接收到的位置执行算法,并且相应地更新了主要活动的UI。
例如:
mainActivityReference.findViewById..
->更改元素的样式。
当我按下Android的“后退”按钮时出现问题。 GeolocationManager
继续工作(很好),但是当我重新打开活动(同时已被破坏)GeolocationManager
时,它不再能够在主{ {1}}。
代码已执行,但在UI上看不到任何更改。当检测到新位置时,Activity
还将尝试将主活动(包含GeolocationManager
)滚动到特定位置。即使在这种情况下,代码也会被执行,但活动不会滚动。
我认为这与以下事实有关:还原ScrollView
之后,即使Activity
也已经重新创建,即使它已经在后台运行并且有损坏。
为什么会这样?
答案 0 :(得分:0)
您可以尝试在应用程序中使用Observable
/ Observer
模式,在应用程序的上层创建GeoLocationManager
,并在需要时让其他活动订阅更新(并且他们离开时退订)。
答案 1 :(得分:0)
您可以在broadcastReceiver
上使用Eventbus
或GeolocationManager
进行回调/更新UI