Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一旦用户登录,我应该使用类实例(序列化)还是单例来存储用户信息_Java_Android_Ios_Objective C - Fatal编程技术网

Java 一旦用户登录,我应该使用类实例(序列化)还是单例来存储用户信息

Java 一旦用户登录,我应该使用类实例(序列化)还是单例来存储用户信息,java,android,ios,objective-c,Java,Android,Ios,Objective C,我想知道在用户登录后,存储用户信息的更好方法是什么。我应该将数据解析为序列化对象类吗?或者我应该创建一个单例。登录后,我通常会从服务器上获得12-13个对象,但其中2-3个在整个应用程序中使用,其他的并不常见。您有几种选择。请看这里: 在您的情况下,也许您可以简单地使用SharedReferences,如下所示: 要设置值,请执行以下操作: (.commit()而不是.apply(),如果您关心putString是否成功) 要检索该值,请执行以下操作: SharedPreferences

我想知道在用户登录后,存储用户信息的更好方法是什么。我应该将数据解析为序列化对象类吗?或者我应该创建一个单例。登录后,我通常会从服务器上获得12-13个对象,但其中2-3个在整个应用程序中使用,其他的并不常见。

您有几种选择。请看这里:

在您的情况下,也许您可以简单地使用SharedReferences,如下所示:

要设置值,请执行以下操作: (.commit()而不是.apply(),如果您关心putString是否成功)

要检索该值,请执行以下操作:

    SharedPreferences sharedPreferences = context.getSharedPreferences("FILE_NAME", Context.MODE_PRIVATE);
    if (sharedPreferences != null) {
        String theString = sharedPreferences.getString("KEY", "DEFAULT_VALUE");
    }

其中,“默认值”是指如果找不到以“KEY”作为KEY的值,您将得到的值。

将该信息存储在请求会话中,以便用户随时可以访问该信息。我所做的是将整个响应存储在共享引用中,一旦我打开应用程序,如果使用Gson的可序列化类的用户不是null,我将解析这些数据。我已经创建了一个基类,它继承了所有的类,这些类都有一个名为getUser和User Obect(序列化类)的方法,每当我需要获取用户名、id或其他信息时都可以使用。例如,我调用了类getUser().getUserId。这是一种好方法吗?您可以存储完整的对象,而不需要使用Gson进行序列化/反序列化,但这不是一个坏的解决方案。好的,但不会序列化类中的数据,这样可以更快地检索eg;userId,而不是调用整个响应,然后调用getJsonObject(userId),它只是调用getUserId?而且这也会使我的基本方法更少,所有的userInfo方法都会在用户类中。好吧,我不明白你的意思,如果你在会话中存储java对象,或者SharedReferences是好的。我所做的是,将整个响应存储在SharedReferences中,一旦我打开应用程序,如果使用Gson的可序列化类的用户不是null,我将解析这些数据。我已经创建了一个基类,它继承了所有的类,这些类都有一个名为getUser和User Obect(序列化类)的方法,每当我需要获取用户名、id或其他信息时都可以使用。例如,我调用了类getUser().getUserId。这是一个好方法吗?我的意思是,当然,尝试在应用程序本身中存储尽可能少的内容,然后创建一个RESTful api,然后基本上只需要存储令牌。而且,你存储的信息越少,你的应用程序可以拥有的信息越少,测试就越容易。
    SharedPreferences sharedPreferences = context.getSharedPreferences(COOKIE_SP_FILE_NAME,
            Context.MODE_PRIVATE);
    if (sharedPreferences != null) {
        sharedPreferences.edit().putString("KEY", "VALUE").apply();
    }
    SharedPreferences sharedPreferences = context.getSharedPreferences("FILE_NAME", Context.MODE_PRIVATE);
    if (sharedPreferences != null) {
        String theString = sharedPreferences.getString("KEY", "DEFAULT_VALUE");
    }