从最近的应用程序列表中选择应用程序 - 行为不一致

App being selected from recent app list - behavior not consistent

我有一个应用程序使用运动传感器无限期地监视用户。有时监控会是 5 分钟,有时是 4 小时。无论如何,该应用程序将被推送到后台,但需要保持运行。当将应用程序置于前台(通过从最近的应用程序列表中选择它)时,95% 的时间它都按预期工作。另外 5% 的时间,应用程序重新启动,丢失所有记录的数据。我无法弄清楚 (1) 是什么触发了不同的行为或 (2) 如何防止应用程序重新启动。

应用程序是否重启取决于它是否同时被系统终止。如果您的设备需要更多内存用于其他应用程序,通常会发生这种情况,但通常随时可能发生,因此您不应依赖您的应用程序在后台继续 运行。您可以通过使用内存很少的设备或启动需要大量内存的应用程序(例如一个游戏。

解法: 首先,您应该确保收集的数据永久保存,而不是在收集后立即保存在内存中。例如,您可以将数据存储在本地数据库或 Android 共享首选项中。通过这样做,如果应用程序被终止,您也可以稍后检索数据。 如果您还想确保设备即使内存不足也能继续监控,您可以使用前台服务。 (https://developer.android.com/guide/components/services.html#Foreground)