我有一个简单的应用程序,该应用程序使用Sensor.TYPE_STEP_DETECTOR进行计数。在将应用设置为后台后,该传感器不会被取消注册,这意味着即使它不在焦点上,它也会继续跟踪步骤。应用恢复后,步数计数器UI会更新为自上次关注以来已计算的步数。

我的目标是让应用在后台关闭数据后保存数据。它已经将其保存在onPause()上,但是我没有找到与关闭应用程序有关的任何方法。

最初,onDestroy()似乎很明显,但是不能保证会调用它,因为它似乎仅在某些调用finish()或系统要清理空间的情况下才被调用。

我也看到了涉及使用后台服务或Job Scheduler的解决方案。自API> = 26起,后台服务将在几分钟后停止,因此后台服务将无法运行。我认为Job Scheduler无法正常工作,因为我不知道用户何时可以关闭该应用程序,并且我希望这些步骤尽可能准确,因此很难确定何时安排作业。

我正在寻找一个简单的地方来基本上完成我的onPause()方法已经完成的工作。

@Override
protected void onPause() {
    super.onPause();

    saveSteps(currentSteps);
    running = false;
}

最佳答案

到底是什么问题?您是否只想在其他地方复制onResume?
如果是这样,您可以在onRestart / onResume函数上执行此操作,因为未注销传感器,您可能会得到相同的结果,但是我不知道这会对您有什么影响。

10-08 06:22
查看更多