【问题标题】:Android: save ActivityInfo for the next app-launchAndroid:保存 ActivityInfo 以供下次应用启动
【发布时间】:2024-01-13 04:11:01
【问题描述】:

我有一个 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 中。不过,感谢所有回复!

【问题讨论】:

    标签: android


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        最近更新 更多