8

我有一个自行车计算机应用程序,可以在用户骑行时记录数据。我有一个用户报告了一个我没有考虑过的问题。他出去长途骑行(100 多英里),但在外出并记录数据时,该应用程序通过 Google 更新后会自动更新。不幸的是,这导致应用程序在录制过程中中断,用户丢失数据,直到他们发现发生了什么并重新启动应用程序。

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

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

编辑

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

4

1 回答 1

1

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

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

编辑

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

于 2012-11-07T12:23:02.670 回答