【发布时间】:2017-05-11 14:58:11
【问题描述】:
我正在尝试开发一个 android 应用程序,该应用程序将在后台连续运行,收集加速度计传感器数据(每 2 分钟一次)。我扩展了 Service 类并实现了 'onSensorChanged' 方法。为了记录数据,我使用了一个在文件中写入相同内容的类。文件编写器类扩展了“AsyncTask”,并且该操作已在方法“doInBackground”中编码。
我已经尝试关注一些链接: Android App with Service Only,App run in Background,Run app in background。 尽管我已经尝试实施建议的内容,但文件日志仍然清楚地显示有大部分时间(甚至 12 小时)没有数据。尽管据我所知,加速度传感器总是会产生一些数据。此外,当我单击应用程序时,会生成数据日志。该文件被写入 15 分钟(这也不是静态的),然后应用程序不再记录数据。 任何建议都会有很大帮助。已经卡了一个月了。提前致谢。
【问题讨论】:
-
“尽管据我所知加速度传感器总是会产生一些数据”——如果设备处于睡眠模式则不会。除非您的应用被添加到电池优化白名单中,否则您无法在 Android 6.0+ 上无限期保持设备唤醒。
-
打盹模式可能是您的问题:source.android.com/devices/tech/power/mgmt
-
感谢@CommonsWare。我已经尝试过使用 START_STICKY。仍然没有运气。我还尝试使用单独的线程(甚至在警报管理器中)来管理线程级并行性。但令人担忧的是,该应用程序似乎在一段时间后自行关闭。可以停止吗?
-
AFAIK 不能保证如果您的服务不是系统服务(因此需要生根),它会继续运行。在我制作服务的 5 年经验中,Android 最终会扼杀它,特别是在最新版本上。