【问题标题】:Get an ArrayList when application is restarted?重新启动应用程序时获取 ArrayList?
【发布时间】:2016-12-20 14:31:00
【问题描述】:

我想在我的 android 应用程序中有一个全局 ArrayList 变量,我只是想知道如何在应用程序完成时保存这个片段列表,并在应用程序重新启动时获取相同的 ArrayList?

【问题讨论】:

    标签: android serialization arraylist


    【解决方案1】:

    为每个Fragment 分配一个ID,并将ID 列表保存到SharedPreferences。当您重新启动应用程序时,按照您保存到 SharedPreferences 的 id 的顺序填充/显示 Fragments。

    如何将ArrayList 写入/读取SharedPreferenceshttps://stackoverflow.com/a/22985657/5250273

    【讨论】:

      【解决方案2】:

      您应该在您的应用程序被 android 杀死之前存储数组列表。当您的应用程序启动时,您的应用程序应该加载数据。

      让我再解释一下。 在此实施之前,我认为您应该检查fragment's lifecycle

      onSaveInstaceState() 方法在 onPause() 之前调用(在片段被杀死之前)。所以你应该用这种方法保存你的数据。

      @Override
      protected void onSaveInstanceState(Bundle outState) {
          super.onSaveInstanceState(outState);
          // Storing my arraylist on bundle
          outState.putStringArrayList("savedList", list);
      }
      

      要加载您的数据,实际上有一个 OnRestoreInstanceState() 方法在 onCreate() 之后(在创建新活动之前)为活动调用。但是,片段没有 OnRestoreInstanceState() 生命周期方法。因此,您可以使用 onCreate()、onCreateView() 或 onActivityCreated() 方法来加载您的日期。

       @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);   
                setContentView(R.layout.activity_main);
                if(savedInstanceState != null){
                  // Loading my arraylist
                  list=savedInstanceState.getStringArrayList("savedList");
                } 
      

      storing data on android 有很多选择。

      • 在共享首选项中保存简单数据类型的键值对 文件
      • 在 Android 的文件系统中保存任意文件
      • 使用由 SQLite 管理的数据库

      您应该下定决心选择保存日期的方式。

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多