为了账号安全,请及时绑定邮箱和手机立即绑定

使用Android应用程序类持久化数据

使用Android应用程序类持久化数据

温温酱 2019-07-02 16:54:02
使用Android应用程序类持久化数据我正在开发一个相当复杂的Android应用程序,它需要大量有关应用程序的数据(我可以说,总共大约500 KB-这对于移动设备来说很大吗?)据我所知,应用程序中的任何方向变化(更准确地说,是在活动中)都会导致活动的彻底破坏和再创造。根据我的发现,Application类没有相同的生命周期(也就是说,对于所有意图和目的,它总是被实例化)。在应用程序类中存储状态信息,然后从活动中引用状态信息有意义吗?或者,由于移动设备上的内存限制,这通常不是“可接受的”方法吗?我非常感谢关于这个话题的任何建议。谢谢!
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

我不认为500 kb会有那么大的影响。

您所描述的正是我如何处理在活动中丢失数据的问题。我在Application类中创建了一个全局单例,并且能够从我使用的活动中访问它。

如果要经常使用数据,可以在GlobalSingleton中传递数据。

public class YourApplication extends Application {     
     public SomeDataClass data = new SomeDataClass();}

然后在任何活动中调用它:

YourApplication appState = ((YourApplication)this.getApplication());appState.data.UseAGetterOrSetterHere(); 
// Do whatever you need to with the data here.

我讨论这件事在我的博客文章里,在“Global Singleton”一节下。


查看完整回答
反对 回复 2019-07-02
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

指望的人Application实例是错误的。一开始,看起来好像Application存在的时间,只要整个应用程序进程存在,但这是一个错误的假设。

操作系统可能在必要时杀死进程。所有的过程都被划分为5级的“可杀死性”。在文档中指定.

因此,例如,如果您的应用程序由于用户应答来电而进入后台,那么取决于RAM的状态,操作系统可能(也可能不会)杀死您的进程(销毁Application实例)。

我认为更好的方法是将数据保存到内部存储文件然后在您的活动恢复时阅读它。

最新情况:

我得到了很多负面反馈,所以是时候补充一个澄清了。:嗯,一开始我确实使用了一个错误的假设,即状态对于应用程序来说是非常重要的。但是,如果您的应用程序有时会丢失状态(可能是一些只需重新阅读/重新下载的图像),那么将其保留为Application.


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 369 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信