我有一个 MainActivity 和一个具有 EditText 的第二个 Activity。我希望 EditText 的内容总是被保存。但是我不想要在 1 个字符更改后写入文件的 EditTextChangedListener。
什么是好的解决方案?我想到了 onPause 或 onBackPressed。
主页按钮呢?我认为该应用程序仍处于打开状态,因此是否需要保存?那么其他的中断比如电话呢?onPause 能捕捉到所有这些吗?
谢谢你。
我有一个 MainActivity 和一个具有 EditText 的第二个 Activity。我希望 EditText 的内容总是被保存。但是我不想要在 1 个字符更改后写入文件的 EditTextChangedListener。
什么是好的解决方案?我想到了 onPause 或 onBackPressed。
主页按钮呢?我认为该应用程序仍处于打开状态,因此是否需要保存?那么其他的中断比如电话呢?onPause 能捕捉到所有这些吗?
谢谢你。
不,这里的正确答案是监听“返回”键事件。这表示用户已完成对字段的输入,并触发将字段内容保存到文件中。它在许多其他情况下也很有用。
看到这个答案: Android Use Done button on Keyboard to click button
彼得。
一个好的解决方案是在方法中包含这样的逻辑onPause()
。在所有情况下都会调用它。这是开发人员文档所说的:
您应该使用 onPause() 方法将任何持久性数据(例如用户编辑)写入存储。
您应该记住的一件事是,此方法的调用频率可能比预期的要高,例如,当您的屏幕灯熄灭时(有些人有 15 秒的屏幕灯超时)。所以,你不应该在里面进行太多昂贵的操作。
至于 Home 键的按下,建议您保存数据(at onPause()
)。原因是您的活动在后台,但它可能会被破坏。如果需要回收内存,系统可能会破坏活动。(例如,您之后也启动任何其他应用程序并将它们全部放在后台)从文档中:
Stopped
:该活动完全被另一个活动遮挡(该活动现在在“背景”中)。停止的活动也仍然存在(Activity
对象保留在内存中,它维护所有状态和成员信息,但不附加到窗口管理器)。但是,它不再对用户可见,并且当其他地方需要内存时,它可以被系统杀死。
是的,每当您的应用程序中断或进入后台检查活动生命周期时,都会调用 onPause