我的应用根据调用者和一些预定义的值执行不同的操作。当电话开始响起时,我需要尽可能快地从数据库中读取这些偏好并显示它们。我试图在 BroadcastReceiver 中使用静态变量,我也尝试将它们放在 Service 中,但它似乎已经死掉并丢失了所有值。如果我再次从数据库中读取它们,则显示信息需要很长时间。那么,有没有办法告诉 Android 尊重部分内存,以便我可以保留信息?
谢谢
已编辑:从 SharedPreferences 读取是否比从小型数据库读取更快?
使用 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 等而不是字符串
不,没有办法告诉 Android 保留 RAM 内存。VM 关闭时,RAM 内存将始终丢失。
在 Android 开发者网站上有一个关于永久存储的选项和方法的很好的讨论http://developer.android.com/guide/topics/data/data-storage.html
但快速回答是: - 根据您可能想要使用 SharedPreferences 或数据库 (SQLite) 的数据类型和数量
您可以使用 Android 共享首选项。 http://developer.android.com/reference/android/content/SharedPreferences.html
这篇文章的答案是一个非常好的解决方案。 Android 共享首选项