3

我一直在研究为我的应用程序存储数据,并尝试在不同的方法(onSaveInstanceStateonPause/onResume)和不同的存储方法(onSaveInstanceState、SQLitePrefences中的状态)之间进行选择。

我很好奇当用户做某些事情时这些存储方法中的每一种会发生什么。具体来说,我想知道在以下情况下调用了哪些方法以及擦除了哪些数据:

  • 用户单击任务切换器按钮(右下角),然后在几秒钟内关闭覆盖,所有这些都来自应用程序
  • 用户在没有从任务切换器中刷出应用程序的情况下单击主页,然后重新打开应用程序
  • 用户单击主页,从任务切换器中滑出应用程序,然后重新打开应用程序
  • 用户退出应用,重启手机,然后打开应用
  • 用户退出应用程序,并使用Clean Master(或任何其他存储管理器)清除所有应用程序的缓存或终止所有后台任务,然后重新打开应用程序。
  • 用户更新应用
4

2 回答 2

1
  1. 当用户进入任务切换器并关闭应用程序时,应用程序进程将被杀死,并且在后台运行的所有服务也将停止
  2. 当用户在没有从任务切换器中滑出并重新打开应用程序的情况下单击主页时,应用程序将恢复。如果您搜索活动生命周期,您可以获得更多详细信息
  3. 当用户点击home并从任务切换器中刷出应用程序时,相当于杀死应用程序,进程将被杀死,后台运行的所有服务也将停止
  4. 当用户退出应用程序并重新启动手机时,该进程将被终止,服务也将被终止。但是在重新启动/重新启动设备后,一旦设备重新启动或应用程序被杀死,用户就会编写逻辑来重新启动它
  5. 当用户退出应用程序并清除缓存时,我会假设数据已被清除。所以这就像一个新的应用程序。

根据我的理解,我给出了简短的回答。希望这能提供一些见解。

于 2015-04-22T02:18:59.633 回答
1

我正在尝试存储高分。目前我只是使用 savedpreferences 并将 5-6 个数字放在编辑器中,提交并继续。可能有更有效的方法,这就是为什么我在上面详细阐述了不同的可能性。

我假设您的意思是 SharedPreferences。是的,你做对了。您的高分将在应用程序执行之间保存。用 SQLite 做同样的事情会有点过头了。

用户清除数据的唯一方法是点击Clear the Data或点击Uninstall您的应用程序

但是,更新应用程序本身或单击都不Clear the cache会对 SharedPreferences 执行任何操作,如果用户想要清除特定数据,则必须按下该按钮“清除数据”。

至于更有效的方法,这取决于你的意思。你正在做的是几乎每个开发人员都会做的事情。这是实际工作的最简单的解决方案。例如,如果您选择在活动之间将该数据存储在捆绑包中,那么所有高分数据将在应用程序执行之间丢失。

话虽如此,如果您要在多个设备上玩同一个游戏,或者您要迁移到新设备,或者您要卸载游戏并稍后重新安装,您的解决方案显然是不够的。为此,您可能需要考虑使用Google Play 服务在本地和云端为您存储该数据。

于 2015-05-04T02:51:53.747 回答