1

我有一个列表视图,在其中我设法从 gps 中保存了我当前的坐标(就像一个按钮,上面写着添加当前位置或其他东西)

ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

我正在尝试保存此列表,以便在我启动应用程序后可用。我已经尝试了所有不同的东西,比如

@Override protected void onSaveInstanceState(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    savedInstanceState.putSerializable("savedLocations", list);
    super.onSaveInstanceState(savedInstanceState);
}

接着

if (savedInstanceState != null) {
  list = (ArrayList<HashMap<String,String>>) savedInstanceState.getSerializable("savedLocations");
}

从 onCreate() 开始,但 savedInstanceState 始终为空,并且在我点击后退按钮并关闭应用程序后,它永远不会加载列表。关于我如何实现这一目标的任何想法?

我知道只有在应用程序退出后才会调用 onSaveInstanceState,例如单击主页按钮并导航到另一个应用程序。

4

1 回答 1

0

onSavedInstance 状态仅用于存储活动暂停和恢复之间的状态。例如,设备旋转。如果活动完成(例如,当您退出应用程序时),数据将丢失。

要永久存储数据,您可以使用共享首选项或数据库。

共享首选项实际上仅针对单个值设计,通常是用户选择的设置或首选项。

您将需要使用数据库来保存数据。第一次使用数据库可能有点令人生畏。

我建议使用一个名为ActiveAndroid的库。它抽象了很多东西并且有很棒的 api。使用起来非常简单。

您需要将数据保存在数据库中。

于 2013-08-07T00:24:17.370 回答