重新启动应用程序时获取 ArrayList?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

如何将ArrayList 写入/读取SharedPreferences:https://***.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 管理的数据库

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

希望对你有所帮助。

【讨论】:

以上是关于重新启动应用程序时获取 ArrayList?的主要内容,如果未能解决你的问题,请参考以下文章

不要在父供应商actor重启时重新启动处理actor

电脑连接无线网运行半小时左右自动断网,只要重新启动能恢复网络连接、求大神分析原因及解决方案!拜谢

supervisor 安装配置

supervisor 安装配置

在 WiX 中重新启动后继续安装

ComboBox仅在重新启动时更新,Java