我有一个MainActivity和第二个具有EditText的Activity。我希望EditText的内容始终保存。但是我不希望EditTextChangedListener在1个char更改后写入文件。
什么是好的解决方案?我想过onPause或onBackPressed。
主页按钮怎么样?我认为该应用程序仍然是开放的,所以有需要保存吗?那电话等其他中断怎么办? onPause能抓住这一切吗?
谢谢。
答案 0 :(得分:0)
是的,只要您的应用被中断或进入后台检查Activity life cycle
,就会调用onPause答案 1 :(得分:0)
一个好的解决方案是在onPause()
方法中包含这样的逻辑。它将始终在所有情况下被调用。这是开发人员文档所说的:
你应该使用onPause()方法将任何持久数据(例如用户编辑)写入存储。
您应该记住的一件事是,这种方法可能比预期更频繁地调用,例如,当您的屏幕指示灯熄灭时(某些人有15秒的屏幕指示灯超时)。所以,你不应该在那里投入太多昂贵的操作。
至于按下主页按钮,建议您保存数据(onPause()
)。原因是你的活动在后台,但可能会被破坏。如果需要回收内存,系统可能会破坏活动。 (例如,您之后启动任何其他应用程序并将它们全部放在后台)来自文档:
Stopped
:活动被另一项活动完全遮挡了 活动现在处于“背景”)。停止的活动也仍然存在 alive(Activity
对象保留在内存中,它维护所有对象 州和会员信息,但没有附加到窗口 经理)。但是,它不再对用户可见,而且可以 在其他地方需要内存时被系统杀死。
答案 2 :(得分:0)
没有。这里的正确答案是听取“返回”键事件。这表示用户已完成对该字段的输入,并触发将字段内容保存到该文件。它在许多其他情况下也很有用。
请参阅此答案:Android Use Done button on Keyboard to click button
彼得。