方向改变使SensorManager参考无效



我正在制作一个应用程序,它同时连接位置和传感器侦听器,这样它就可以将它们的更改记录到一个文件中。

奇怪的是,在某些情况下,使用该应用程序的一部手机是"强制关闭",我将其缩小到方向更改:如果手机在录制过程中更改了方向,那么我在活动中存储为"mSensorManager"的SensorManager属性将设置为null。

这就引出了我的问题:我是否应该不存储SensorManager参考,因为它是一个糟糕的设计选择?或者它可以吗?在使用它之前,我应该检查一下引用是否为null吗?

编辑:需要添加两件事:

  1. 我发现,不仅加速度计和磁力计的属性也被取消了(这有点道理),而且位置管理器与定向确定无关);

  2. 如果我将这些属性存储在活动之外的其他内容中,则不会使方向上的引用无效改变

对我来说是什么:纠正侦听器、管理器和传感器实例化,使其在活动的生命周期内完成。然后唯一的问题是唤醒锁,它被破坏了,但我需要通过方向的改变来保持。我也将其更改为在活动生命周期中获取,尽管处于不同的阶段。

  1. 在清单中的活动标记内添加此行后尝试

    android:configChanges="orientation|keyboardHidden"
    

    我想它是无效的,因为在方向改变时onCreate是要求

  2. 尝试使用共享首选项保存值

这对我来说是什么:从活动的生命周期内更正侦听器、管理器和传感器实例化。然后唯一的问题是唤醒锁,它被破坏了,但我需要通过方向的改变来保持。我也将其更改为在活动生命周期中获取,尽管处于不同的阶段。

最新更新