我应该何时在Android应用中的文件中读取/保存数据?

时间:2013-10-01 22:48:53

标签: java android android-file

我正在创建一个Android应用程序,其中需要从文件中读取数据,然后将其保存回同一文件。

基本上,这就是我的应用程序的工作方式:

MainActivity:用户输入确定要读取的文件,然后启动FieldActivity。

FieldActivity:显示从文件中读入的Data类型的对象。用户可以更改存储在Data对象中的信息,因此需要在应用程序关闭时将其保存回文件。但是,只要FieldActivity正在运行,此Data对象就是同一个对象。 (用户可以导航回MainActivity并选择要读取的其他文件,这将构造一个新的Data对象。)

我应该在FieldActivity的onStop()或onPause()方法中将数据保存到文件中吗?我不确定是否有更好的方法,看看每次在Portrait和Landscape之间切换时如何调用这些方法。但是,我想不出更好的选择。

编辑:我可以将它保存在onBackPressed()中,但是如果用户通过按主页按钮退出,则不会保存。

我将在用户单击MainActivity中的按钮时调用的方法中读取文件中的数据,然后立即启动FieldActivity。但是,即使在FieldActivity中的方向更改之间,Data也必须是同一个对象。我可以将它存储在静态字段中,但我听说这是不好的做法,因此,我认为有更好的方法。

总结:我需要从文件中读取数据,并在用户进行更改后将其保存回文件。在应用程序生命周期中是执行此操作的最佳时间吗?

(我提前为我做错的任何事情道歉,特别是如果已经提出这个问题的话。我是StackOverflow的新手。)

1 个答案:

答案 0 :(得分:0)

您好,欢迎来到Stack Overflow :)。 嗯...根据我的理解,你从edittext获取信息,并希望在你离开活动之前将它存储回文件...如果这是真的并假设你使用后退按钮返回你可以存储所有内容覆盖onBackPressed方法......

但这一切都取决于您何时存储所有内容:

onPause() - 当应用程序被部分遮挡但仍然可见并仍然在FG中运行时(例如,当您打开对话框时)调用它。 onStop() - 在应用程序不再可见时被调用,并且完全在BG中(因为回到不同的活动(如果你没有杀死它))。 我希望您熟悉活动生命周期,这一切都取决于您希望何时存储新数据。在你离开活动之前我会说...所以就在你调用finish()之前...这通常是当用户完成设置他想要的任何东西时...所以我会保存onBackPressed ... onStop也是有效的解... 我不确定你如何计划你的活动流程...但对我来说... onBackPressed或onStop ... onPause ..在这里不会帮助你......