我正在创建一个小部件,我需要为其存储一些数据。我的小部件没有 Activity
,因此我无法使用 SharedPreferences
。我存储的数据非常小,但访问频率很高,因此使用数据库就有点过分了。我想过使用简单的文件,但这似乎不是一个好的解决方案。有什么方法可以为小部件存储简单数据吗?
最佳答案
您不需要Activity
来存储首选项,只需一个Context
。在扩展 AppWidgetProvider
的类中,您应该在所有相关方法(例如 onUpdate
和 onDeleted
)中接收上下文。
然后您可以使用 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/