0

我的应用根据调用者和一些预定义的值执行不同的操作。当电话开始响起时,我需要尽可能快地从数据库中读取这些偏好并显示它们。我试图在 BroadcastReceiver 中使用静态变量,我也尝试将它们放在 Service 中,但它似乎已经死掉并丢失了所有值。如果我再次从数据库中读取它们,则显示信息需要很长时间。那么,有没有办法告诉 Android 尊重部分内存,以便我可以保留信息?

谢谢

已编辑:从 SharedPreferences 读取是否比从小型数据库读取更快?

4

3 回答 3

1

使用 SharedPreferences,它们就像您应用程序的私有部分,将永久保存您的值,直到用户重新安装(清除数据)应用程序。共享首选项的工作原理是这样的

// save string in sharedPreferences
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("some_key", string); // here string is the value you want to save
                    editor.commit();                    

// restore string in sharedPreferences 
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
string = settings.getString("some_key", "");

显然你可以保存 int boolean 等而不是字符串

于 2013-04-05T15:10:47.493 回答
0

不,没有办法告诉 Android 保留 RAM 内存。VM 关闭时,RAM 内存将始终丢失。

在 Android 开发者网站上有一个关于永久存储的选项和方法的很好的讨论http://developer.android.com/guide/topics/data/data-storage.html

但快速回答是: - 根据您可能想要使用 SharedPreferences 或数据库 (SQLite) 的数据类型和数量

于 2013-04-05T15:13:23.873 回答
-1

您可以使用 Android 共享首选项。 http://developer.android.com/reference/android/content/SharedPreferences.html

这篇文章的答案是一个非常好的解决方案。 Android 共享首选项

于 2013-04-05T15:09:05.920 回答