使用共享首选项存储未提交的数据

时间:2019-05-28 13:00:56

标签: java android

我需要使用Shared Preferences存储尚未保存的数据。举个简单的例子,在我的应用程序中,我希望如果用户填写了sign-up表单并关闭了该应用程序,则当他重新输入该应用程序时,他的信息仍然会被填充。您会建议任何教程吗?

2 个答案:

答案 0 :(得分:0)

您可以使用onSaveInstanceState将数据保存在Bundle中 例如

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    textView.setText(savedInstanceState.getString(TEXT_VIEW_KEY));
}

// invoked when the activity may be temporarily destroyed, save the instance state here
@Override
public void onSaveInstanceState(Bundle outState) {
    outState.putString(GAME_STATE_KEY, gameState);
    outState.putString(TEXT_VIEW_KEY, textView.getText());

    // call superclass to save any view hierarchy
    super.onSaveInstanceState(outState);
}

答案 1 :(得分:0)

如何为您的活动(例如注册活动)创建ViewModel。 这个ViewModel将是您SharedPreferences的处理程序,并用于跟踪数据,请说出用户名和密码文本字段的值。 现在您可以覆盖方法onCleared()并在其中添加对SharedPreferences的写入实现。

在您的活动中,您将需要:

  • 使用TextWatcher监听您的文本字段,并可能覆盖void afterTextChanged(Editable s)(因为用户可能只是关闭应用程序),并在内部用当前值更新ViewModel。 / p>

  • ViewModel加载数据,以便在OnCreate()中保存任何数据时在SharedPreferences中初始化UI。

  

onCleared()

     
      
  • 当不再使用此ViewModel时,将调用此方法。
  •