什么时候(在活动生命周期中)我应该保存?

时间:2013-08-14 08:10:03

标签: android android-activity

我的活动中基本上有一个表单,我需要保存它。我将其保存为xml文件。现在,我每次调用onPause()时都会保存它,但我认为这不是适当的情况。我的问题是什么时候(在活动生命周期中)我应该将表单保存为xml文件?另一件事是我需要设置某种形式验证。

6 个答案:

答案 0 :(得分:1)

一切都取决于你想要什么。

我认为您必须将表单保存到onSaveInstanseState中的xml文件。

答案 1 :(得分:1)

onPause()可能是您保存数据的最佳时间,因为您不能保证在此之后不会销毁它。生命周期中的另一个选项是onStop(),这通常很好,但我认为没有理由为什么onPause()是'不恰当的......'

您可能应该在每次编辑时保存您的数据,这对您的用户来说可能是最合适和最安全的......

此外,这里有一个我使用的表单验证库,非常直观易用,非常适合设置规则:Android Saripaar。 (也可以轻松安装,只需将jar放入libs文件夹中)

答案 2 :(得分:1)

这实际上取决于你想要实现的行为。保存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());

答案 3 :(得分:0)

onPause中是适当的时间。每当活动不再可见时,它将被暂停,因此保存。

要保存设置,您可以使用SharedPreferences或自定义格式(使用XML)。 我更喜欢SharedPreferences,因为它们非常易于使用。

答案 4 :(得分:0)

将表单保存在onPause()中似乎是合适的。

以下摘自Android开发者docs支持它:

  

暂停您的活动当系统为您的活动调用onPause()时,从技术上讲,这意味着您的活动仍然是部分活动   可见,但大多数情况下表明用户正在离开   活动,它很快就会进入Stopped状态。你通常应该   使用onPause()回调:

     

1-Stop动画或其他可能消耗CPU的动作。

     

2 - 提交未保存的更改,但前提是用户希望进行此类更改   他们离开时永久保存(例如草稿电子邮件)。

     

3-发布   系统资源,例如广播接收器,处理传感器   (如GPS),或任何可能影响电池寿命的资源   活动暂停,用户不需要它们。

就表单验证而言,如果要确保用户输入了所需的值,则可以执行此操作。

答案 5 :(得分:0)

请参阅http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

在将活动置于这样的后台状态之前调用onSaveInstanceState(Bundle)方法,允许您将活动中的任何动态实例状态保存到给定的Bundle中,以便稍后在onCreate(Bundle)中接收需要重新创建