0

我有一个 ActivityInfo 的列表。此 ActivityInfo 中的每一个都代表设备上已安装的应用程序。用户可以选择列表中的一些项目,我想保存这些项目以供下次启动活动。我怎么做?我知道 SharedPreferences,但它们适用于字符串和 int,不是吗?

List<ActivityInfo> apps = new ArrayList<ActivityInfo>();
ActivityInfo infoToSave = (ActivityInfo) apps.get(position);

编辑:问题是如何将 infoToSave 转换为可以保存以供进一步应用启动的字符串。这是解决方案:

ComponentName name = new ComponentName(infoToSave.packageName, infoToSave.name);
String nameS = name.flattenToString();

该字符串可以保存在 SharedPreferences 中。不过,谢谢大家的回复!

4

2 回答 2

0

首先,SharedPreferences 不仅适用于字符串或 int,您还可以使用 Boolean 或其他一些属性,您也可以使用 SQlite 数据库

http://developer.android.com/reference/android/content/SharedPreferences.html

于 2013-10-22T18:54:03.480 回答
0

如您所知,SharedPreferences 很好地用于存储少量键值对类型的数据(通常是字符串)。如果您的列表是可序列化的,那么您可以将您的列表存储为 SharedPreferences。onResume,当然,您必须将 SharedPreferences 映射回 List。

或者,您可以将 ActivityInfo 映射到本地 SQLite 数据库中的新模式/表。这种方法在多个活动中更具可扩展性,因为您可以使用 contentResolvers 来观察 ContentValues(您保存)中的更改并将其读取到 SQLite DB 中。

在http://developer.android.com/training/basics/data-storage/databases.html阅读更多关于在数据库中插入和读取数据的信息

于 2013-10-22T18:50:55.420 回答