所以我一直在做一个从服务器接收数据的项目,例如 sessionKey。我像这样创建了 getter 和 setter 方法:
public class sEngine
{
private static String sessionKey;
public static String getSessionKey() {
return sessionKey;
}
public static void setSessionKey(
String sessionKey) {
sEngine.sessionKey = sessionKey;
}
}
然后我有 Activity A。在这个 Activity A 中,我将一个值插入到 setter 方法中。
public class A extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
sEngine.setSessionKey("Hello world")
}
}
我还有activity B,在这个activity B中,我调用了getter方法
public class B extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
String sessionKey = sEngine.getSessionKey();
}
}
我突然想到,Android 有时会删除所有数据以释放一些内存,例如当我让程序闲置太久时,或者我使用了 Advanced Task Killer。问题是,如果发生这种情况,尽管我已经在 Activity A 中设置了值,但当我调用 getter 方法时,我将在 Activity B 中得到 null。有什么方法可以让我维护通过 setter 方法存储的值(除了使用SharedPreference)所以尽管 Android 删除内存/数据,该值仍然存在?
最佳答案
Is there any way for me to maintain the value stored via the setter method (other than using SharedPreference) so the value will still be there although Android wipes the memories/data?
不确定为什么您不想使用 SharedPreferences
,尽管它是您要求的完美候选者。当像这样简单的东西可以存储它时:
SharedPreferences sharedPrefs = getApplicationContext().getSharedPreferences(SOME_KEY, Context.MODE_PRIVATE);
Editor editor = sharedPrefs.edit();
editor.putString("session_key", sessionKey );
这将确保您的sessionkey 始终保持存储以便于检索。除非用户清除了您的应用数据。
与 SharedPreferences
相比,您唯一的选择是将 sessionkey 保存到 Database
中,在我看来,考虑到它将执行的任务,完全没有必要。
您还可以考虑将 session key 写入到文本文件,然后读取它以检索数据.
SharedPreferences
的两种替代方法确实不适合您需要它的目的。我强烈建议您重新考虑使用 SharedPreferences
。
关于java - Android 中的 Getter 和 Setter 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15060096/