我的应用程序在我的手机上非常好用(欲望高清)。当我按下电源按钮并返回应用程序时,数据尚未重置。
用户向我发送了一个请求,当他们点击电源按钮(dell streak)并返回应用程序时,重置的数据将被重置。
如果按下后退按钮,我已经将数据保存在对象中
如何确定何时按下电源以保存数据以及当用户返回应用程序时需要调用的内容
感谢您的时间
答案 0 :(得分:3)
很可能你的活动在后台被杀死了。我认为戴尔Streak更容易出现这种情况,因为它与高清设备相比是一款较旧的设备,可能内存较少,我不确定任何戴尔定制占用了多少(如果有的话)。
您可能不希望专门按电源按钮,而是在适当的逻辑中挂钩活动lifecycle methods,尤其是在创建和销毁活动时调用的方法,而不是暂停并恢复。
正在重置哪种数据?这些数据是否可以远程获得?有很多方法可以解决这个问题。
一种是在销毁活动时保留UI状态,请参阅onSaveInstanceState(Bundle)
有关持久化数据的更多信息,请参阅here,其中包括数据库和共享首选项,这是将应用程序状态(或某些情况下的UI状态)保存到上述onSaveInstanceState()
方法的两种选择。这实际上取决于你在做什么:)
此外,是否在此活动的生命周期方法(如onCreate())中触发了任何远程数据收集操作?如果是这样,你的应用程序可能会有一个更好的架构,比如说生命周期方法只是触发一个基于时间的条件刷新请求,该请求包含在Service
中(后者也不太可能在后台被杀死)只是更新一些可以填充UI的模型数据(在mem或数据库支持中),但是它的优势在于它也是持久的,这样当你的活动被杀死时它对用户来说是透明的!
希望这有帮助。
编辑:我只是想,如果你在按下后退按钮时保存状态并且在调用onResume或onStart时使用保存状态来重置UI状态,你是否可能只是在活动被放置时完全清除状态进入后台(但没有被杀)除了按下后退之外的任何其他动作,因为你保存的状态对象将为空/空/包含默认值?如果是这样,那么上述方法仍然是相关的
答案 1 :(得分:0)
您可能希望覆盖活动的onPause()和onResume()方法。