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

时间:2012-11-07 11:13:24

标签: android auto-update

我有一个自行车电脑应用程序,可在用户骑行时记录数据。我有一个用户报告我没有考虑过的问题。他出去玩了很长时间(100英里以上),但在外出和记录数据时,应用程序通过Google更新了自动更新。不幸的是,这个应用程序在录制过程中终止,用户丢失数据,直到他们发现发生了什么并重新启动应用程序。

理想情况下,我希望能够在应用程序进行数据记录时以编程方式停止自动更新。我所有的研究都表明这是不可能的,但我可能会错过一些东西所以任何人都知道这样做的方法吗?

如果没有解决方案,我能做的最好的事情就是建议用户在Play应用中启用仅通过wifi更新选项,在这种情况下可以提供帮助。不幸的是,关于我的应用程序的一个关键点是,它将使用ANT +传感器记录室内会话,因此我有很多人使用它来激活wifi。

修改

我设法做了实验,看看我昨晚发生了什么。我有一个应用程序进入后台数据记录,然后将新版本推送到Google Play。不幸的是,当我不得不离开10个小时后,它没有完全自动拾取但是我打开了游戏商店应用程序,它发现更新它没有开始自动更新但我强迫它。下载和安装新版本的行为扼杀了正在进行的工作。在我使用通知转到新版本之前,它已经死了。

1 个答案:

答案 0 :(得分:1)

正如你自己所说,你无法做到你所要求的。您可以通过每次更新时更改权限来破解它。然后将以常规方式提示用户。

我不确定正在运行的自动更新应用的“生命周期”。但我读到的地方不是重新安装,而是重新打开崩溃的应用程序。如果是这种情况,您可以设置一个标志,指示用户当前正在记录,然后在重新启动时只恢复记录。但是我们需要更多地了解正在运行的活动/应用程序的内部工作方式并获得自动更新(实际上并不认为它可能发生)。

修改

根据你的发现我会说你必须处理应用程序关闭onDestroy等或/并确保你持续保存所有内容。然后,您可能需要有2个应用程序,其中1个侦听正在重新安装的另一个应用程序,当发生这种情况时,它会再次启动它(there is an interesting discussion here)。如果您的目标是api> = 12,那么广播操作ACTION_MY_PACKAGE_REPLACED也可能会有兴趣。