android - 如何存储小部件的数据?

标签 android android-widget persistence android-preferences

我正在创建一个小部件,我需要为其存储一些数据。我的小部件没有 Activity,因此我无法使用 SharedPreferences。我存储的数据非常小,但访问频率很高,因此使用数据库就有点过分了。我想过使用简单的文件,但这似乎不是一个好的解决方案。有什么方法可以为小部件存储简单数据吗?

最佳答案

您不需要Activity 来存储首选项,只需一个Context。在扩展 AppWidgetProvider 的类中,您应该在所有相关方法(例如 onUpdateonDeleted)中接收上下文。

然后您可以使用 PreferenceManager 获取首选项对象并将您需要的内容存储在其中,例如:

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
    int[] appWidgetIds)
{
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    String value = prefs.getString("key-string", null);
    if(value != null)
    {
        // do stuff
    }
}

作为旁注,您提到您考虑过使用文件,但出于性能原因不想使用。 SharedPreferences 对象实际上最终使用简单的文件,它们只是由 Android 为您管理。如果您要经常访问它,您仍然需要注意性能。 SQLite 数据库也是如此,因为它们也只是文件。

关于android - 如何存储小部件的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5834274/

相关文章:

android - 如何在 webView 中禁用平滑滚动/缩放

android - 在我的情况下,如何以编程方式在另一个布局之上显示一个布局?

android - arm-linux-androideabi-gcc : Internal error: Killed (program cc1) from Android NDK r8

android - 如何在 AlertDialog 中显示 CalendarView?

java - 使用工厂创建 JPA 实体

java - 找不到 resources/hibernate.cfg.xml

jquery-ui - wicket 有拖放组件吗

java - 无法看到从 admob hello world android 程序添加

java - android/java 概念用单个循环调用所有 getter 方法

Android Fragment 生命周期方向改变