我正在创建一个需要检测手机检测到的最大加速度的应用程序。目前它可以工作,但是当屏幕关闭时它不会继续执行任务。为了实现我现在所拥有的,我在 onCreate
中写道:
mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
mAccelerometer = mSensorManager!!.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION)
我已经在类中全局初始化了这些变量。然后我实现了 onSensorChanged()
、onResume()
、onPause()
并将 onAccuracyChanged
留空。
据我了解,实现这样的功能与更简单地创建异步任务不同。我将如何着手改变它以使其也能在后台工作?谢谢!
最佳答案
即使使用 WakeLock
- official documentation is clear,当应用进入后台时,您将无法使用 Sensors API。关于那个。
不过,即使在前台服务中禁用了手机屏幕,您也可以轻松继续使用 Sensors API。为此,请使用本文档作为开始 - Foreground Service .这并不能保证服务的永恒生命,但它肯定会比普通服务活得更久,而且您可以访问 Sensors API。在这种情况下,我不确定 WakeLock
- 您将不得不尝试(但我认为您不需要它)。
Here是答案的跨度。其中一些包含示例代码甚至示例项目的链接
关于java - 如何在手机 hibernate 时继续使用 onSensorChanged()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69598901/