java - Android 中的 Getter 和 Setter 返回 null

标签 java android

所以我一直在做一个从服务器接收数据的项目,例如 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/

相关文章:

java - 在 Intellij Idea 2019.2 更新后,在 Intellij 中导入项目时没有下一个和上一个按钮

java - 从 Restful Web 服务下载 pdf

java - 具有附加功能的装饰器模式

AlertDialog 中的 Android MapView

安卓工作室 : Using ImageButton in different activity

java - Spring 依赖注入(inject)与实用程序的静态类?

java - 解析包含引号和换行符的逗号分隔值

java - 手动编译android应用程序的麻烦

android - 从 native 代码在 android 设备屏幕上显示 rgb888 数据

android - 重新启动应用程序时保存的数据丢失(android)