我的活动中基本上有一个表格,我需要保存它。我将其保存为 xml 文件。现在,每次onPause()
调用时我都会保存它,但我认为这不是合适的情况。我的问题是什么时候(在活动生命周期中)我应该将表单保存为 xml 文件?另一件事是我也需要设置某种形式的验证。
6 回答
一切都取决于你想要什么。
我认为您必须将表单保存到 .xml 文件中onSaveInstanseState
。
onPause() 可能是您保存数据的最佳时机,因为您不能保证之后它不会被销毁。您在生命周期中的另一个选择是 onStop() 这通常很好,但我看不出为什么 onPause() 是“不合适的......”
您可能应该在每次编辑数据时保存数据,这对您的用户来说可能是最合适和最安全的......
另外,这是我使用的一个表单验证库,使用起来非常直观,并且非常适合设置规则:Android Saripaar。(也很容易安装,只需将jar放在您的 libs 文件夹中)
这实际上取决于您要实现的行为。保存 onPause() 绝对没问题,或者您可能想要更频繁地保存,例如每当表单输入更改(通过设置更改侦听器)或验证成功时。
对于验证,您可以执行以下操作:
public class YourTextWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void afterTextChanged(Editable editable) {
//... validation goes here
}
}
然后,像这样设置它:
yourEditText.addTextChangedListener(new YourTextWatcher());
在onPause
是适当的时间。每次 Activity 不再可见时,它都会暂停并因此保存。
要保存设置,您可以使用SharedPreferences
或自定义格式(您正在使用XML
)。我更喜欢SharedPreferences
,因为它们真的很容易使用。
在 onPause() 中保存表单似乎是合适的。
下面来自 android 开发者文档的摘录支持它:
暂停您的 Activity 当系统为您的 Activity 调用 onPause() 时,从技术上讲,这意味着您的 Activity 仍然部分可见,但大多数情况下表明用户正在离开该 Activity,并且它很快就会进入“已停止”状态。您通常应该使用 onPause() 回调来:
1-停止可能消耗 CPU 的动画或其他正在进行的动作。
2-提交未保存的更改,但前提是用户希望在他们离开时永久保存此类更改(例如草稿电子邮件)。
3- 释放系统资源,例如广播接收器、传感器句柄(例如 GPS),或在您的活动暂停且用户不需要它们时可能影响电池寿命的任何资源。
就表单验证而言,如果您想确保用户输入了所需的值,您可以这样做。
参考http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
在将活动置于这样的后台状态之前调用 onSaveInstanceState(Bundle) 方法,允许您将活动中的任何动态实例状态保存到给定的 Bundle 中,以便稍后在活动需要时在 onCreate(Bundle) 中接收重新创建