重新启动应用程序时获取 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 的顺序填充/显示 Fragment
s。
如何将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?的主要内容,如果未能解决你的问题,请参考以下文章