所以我对如何保存片段的当前用户界面感到有点困惑,比如说,我导航到另一个应用程序然后回到我的应用程序。我有一个片段,您可以在单击按钮时动态添加视图,以及可能激活或不激活的计时器,具体取决于用户。动态添加的视图可能会也可能不会被删除,具体取决于用户。基本上,我想保存当前屏幕上的所有视图,以及倒数计时器和我在我的应用程序之外导航时的当前时间,我假设是在调用onStop()时。我该怎么做呢?我对保存过程以及如何恢复数据感到困惑。
答案 0 :(得分:0)
取决于您需要保存的内容。我们在谈论索引,整数,整个对象或图像等。
您的问题有点模糊,但有很多方法可以存储数据。 首先要记住的是,然而,当您返回时,UI看起来仍然是它的外观。如果您在返回时丢失了UI,那么您可能做错了。
现在,如果您在应用程序被销毁后返回,或者您没有设置历史记录标记以避免它保留UI或垃圾收集,只是收回了您的内存空间并杀死了您的应用程序,那么您将通过onPause和onStop以及onDestroy
您可以选择将数据保存在sharedPref中(如果它不安全) 您可以选择将数据保存在SecureSharedPref中(自定义文件,加密,但不从文件系统隐藏) 您可以选择在SQLite数据库中保存数据,您将需要SQLOpenHelper实现。 或者,如果您在应用程序处于活动状态时返回该应用程序,则可以使用save in bundle恢复onCreate,如
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putString(MY_KEY, mMyvalue);
// call superclass to save any view hierarchy
super.onSaveInstanceState(outState);
}
这将在onCreate的包中恢复,因此您需要在下一次onCreate调用时查看返回包中是否存在键。但是,这在被破坏的会话之间不会持续存在,只有您的应用程序尚未从内存中清除时才会持续存在。要使用它,您必须使用可序列化的parcable对象。你所要做的就是实现它,你很高兴。