当某人关闭或杀死某个应用时代码会发生什么变化?

时间:2015-04-22 01:44:48

标签: android database sqlite state android-savedstate

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

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

  • 用户点击任务切换器按钮(右下角),然后在几秒钟内关闭叠加层,全部来自应用内
  • 用户点击主页,而无需从任务切换器中刷出应用,然后重新打开应用
  • 用户点击主页,从任务切换器中清除应用,然后重新打开应用
  • 用户退出应用,重新启动手机,然后打开应用
  • 用户退出应用,并使用Prefences(或任何其他存储管理器)清除所有应用的缓存或终止所有后台任务,然后重新打开应用。
  • 用户更新应用

2 个答案:

答案 0 :(得分:1)

  1. 当用户进入任务切换器并关闭应用程序时,应用程序进程将被终止,并且后台运行的任何服务也将被停止
  2. 当用户点击主页时,无需从任务切换器中滑出并重新打开应用程序,然后应用程序即将恢复。如果搜索活动生命周期,您可以获得更多详细信息
  3. 当用户点击主页并从任务切换器中清除应用程序时,它相当于杀死应用程序,并且该进程将被终止,并且后台运行的任何服务也将被停止
  4. 当用户退出应用程序并重新启动时,请重新启动手机,然后该进程将被终止并且服务也将被终止。但重新启动/重启设备后,一旦设备重启或应用程序被杀,用户就会编写逻辑来重新启动它
  5. 当用户退出应用程序并清除缓存时,我会假设数据已清除。所以这就像一个新鲜的应用程序。
  6. 根据我的理解,我给出了简短的答案。希望这给了一些见解。

答案 1 :(得分:1)

  

我试图存储高分。目前我正在使用   保存的偏好并将5-6个数字放在编辑器中,提交和   持续。可能有一种更有效的方法,这就是我的原因   详细阐述了上述不同的可能性。

我认为你的意思是SharedPreferences。是的,你正在以正确的方式做到这一点。您的高分将在应用程序执行之间保存。对SQLite做同样的事情会有点过分。

用户可以清除数据的唯一方法是点击 Clear the Data ,或者点击 Uninstall 申请

但是,无论是对应用程序本身,还是点击 Clear the cache 都不会对SharedPreferences执行任何操作,用户必须按下该按钮"清除数据&# 34;如果他想要清除那些具体数据。

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

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