Android:何时取消注册侦听器 - onStop()或onDestroy()

时间:2011-01-25 03:20:51

标签: android

我有关于传感器管理员何时unregisterListener的基本问题。应该在onStop()还是onDestroy()

中完成

用例:

我想在点击开始按钮时记录accelorometer,并在用户点击停止按钮时停止。数据的频率是每分钟。所以我开始了timer

但问题是,每次orientation根据Android架构进行更改时,onStop()都会被调用。在onStop()中,我取消了计时器并取消注册了侦听器。

如果我在onResume()启动定时器/寄存器监听器,那么再次,频率将不会保持1分钟,并且无需用户按下开始按钮即可记录数据。

有人可以帮我解决这个问题。

感谢。

2 个答案:

答案 0 :(得分:4)

您可能希望使用Service在后​​台运行加速计数据采集,使用基本意图与其进行通信并不太复杂。

或者,如果您只想“保持”轮换,当活动被破坏然后重建时,请尝试覆盖Activity onRetainNonConfigurationInstance()getLastNonConfigurationInstance()方法(了解更多关于它here

答案 1 :(得分:3)

OnDestroy()无法保证被调用。因此,您应该在onPauseonStop

中执行此操作
  

但问题是每次根据Android架构改变方向

有一种方法可以防止在清单中发生这种情况。我相信其他人会发布信息。