以编程方式暂时禁用自动更新

9
我有一个自行车计算机应用程序,可以在用户骑行时记录数据。我收到了一个用户报告的问题,这是我没有考虑过的。他进行了一次长途旅行(100英里以上),但在记录数据时,该应用程序通过Google Play的自动更新进行了更新。不幸的是,这导致应用程序在记录过程中中途停止,用户失去了数据,直到他们发现发生了什么并重新启动了应用程序。
理想情况下,我希望能够在应用程序记录数据时停止自动更新。所有我的研究表明,这是不可能的,但我可能错过了什么,所以有人知道有什么办法吗?
如果没有解决方案,那么我能做的最好的事情就是建议用户在Play应用程序中启用仅限wifi的更新选项,这在这种情况下将会有所帮助。不幸的是,我的应用程序的一个关键点是它将使用ANT +传感器记录室内会话,因此有很多人同时使用它和wifi激活。
编辑
昨晚我设法进行了自己的实验以查看会发生什么。我有一个应用程序在后台记录数据,然后向Google Play推送了一个新版本。不幸的是,在我离开十个小时之后,它没有完全自动地被接受,但我打开了播放商店应用程序,它找到了更新,它没有自动开始更新,但我强制使用了它。下载和安装新版本的行为杀死了正在进行的内容。在我使用通知前往新版之前,它已经死亡。

应用程序是否可以自动将记录的数据按预定时间段写入存储? - dumbfingers
1
不清楚你的意思是什么... - Ifor
1个回答

2
正如你所说,你不能做你要求的事情。您可以通过每次更新更改权限来绕过它。然后,用户将按常规方式收到提示。
我不确定正在运行的自动更新应用程序的“生命周期”。但是我在某个地方读到,它不是重新安装而是重新打开应用程序导致崩溃。如果是这种情况,您可以设置一个标志,指示用户当前正在登录,然后在重新启动时恢复记录。但是我们需要更多了解正在运行并获得自动更新的活动/应用程序的内部工作方式(实际上认为它不可能发生)。
根据您的发现,我会说您必须在onDestroy等中处理应用程序关闭。或者/和确保您一切都持久保存。然后,您可能需要有两个应用程序,其中1个监听另一个被重新安装,当发生这种情况时,它再次启动它(这里有一个有趣的讨论)。如果您的目标api> = 12,则广播操作ACTION_MY_PACKAGE_REPLACED也可能很有趣。

我将尝试调查更新并点击通知以重新启动并查看哪个会造成损坏。最初,我在记录和尝试继续时检测到了重新启动。在随机重启场景中,这被证明是有问题的,我的最初尝试有时看起来像已经重新开始记录,但实际上以一种难以理解的方式失败了,因此我回到了只是尝试整理并让用户重新开始。我有一个选项可以合并骑行,因此之后可以解决开始新骑行的问题。我可能会再次尝试继续。 - Ifor
那将是用户最喜欢的解决方案 :) 当你找出发生了什么事情时,请回信。 - Warpzit
是的,我会报告我的发现。我想我必须进行真正的测试,可能是使用我的其他应用程序之一,这些应用程序已经有一段时间没有更新了。可能需要几天时间。 - Ifor
好的,我已经成功地完成了实验。我已经添加了一个新的部分来解释发生了什么。 - Ifor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接