繁体   English   中英

使用 Retrofit 登录和登录

[英]LogIn & SignIn with Retrofit

我在我的计算机上创建了一个带有 JSON 数据库的简单 localhost API。 我已经实现了主机可以创建新配置文件或登录现有配置文件的功能。

"hosts": [
    {
      "id": 1,
      "login": "drey95music",
      "password": "8526000Qq",
      "email": "shtandrinity@gmail.com",
      "eventName": "FDC Open Mic",
      "latitude": 41.924676,
      "longitude": -87.700266
    }],
"artists": [
    {
      "id": 1,
      "name": "MDQ",
      "phone": 7738375513,
      "isLocated": "true",
      "userId": 1
    }]

我的问题是存储/记住/检查用户是否登录以便他/她拥有更多功能的最佳方式是什么?

谢谢你。

实际上,您可以根据您拥有的用例以多种不同的方式进行实现。 就个人而言,我觉得,如果用户信息非常小,或者您只需要存储一个令牌以便将其传递给后续的 API 请求,那么将该令牌存储在SharedPreferences中可能是一个好主意。 这样就可以从应用程序中的任何位置访问它,并且此存储是持久的 - 也就是说,即使您关闭应用程序并重新打开它,它也会在持久性 memory 中表示。

话虽如此,如果您必须存储大量信息,我建议将这些信息存储在SQLite数据库中。 不建议将SharedPreferences用于存储大量数据。

我希望这会有所帮助!

通常开发人员使用 Shared Preference 来存储特定键的一些值行为。 我做了一个通用的共享偏好 class 并毫不犹豫地在每个 android 项目中使用它。

public class SaveInSharedPreference {

public static final String IS_LOGIN = "isLogin";

private final SharedPreferences pref;
private final SharedPreferences.Editor editor;

// shared pref mode
private final int PRIVATE_MODE = 0;

// Shared preferences file name
private static final String PREF_NAME = "PREF_NAME";

@SuppressLint("CommitPrefEdits")
public SaveInSharedPreference(Context context) {
    pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

public void setBoolean(String key, boolean value){
    editor.putBoolean(key, value);
    editor.commit();
}

public boolean getBoolean(String key) {
    return pref.getBoolean(key, false);
}

public void setString(String key, String value) {
    editor.putString(key, value);
    editor.commit();
}

public String getString(String key) {
    return pref.getString(key, "");
}

public void setInteger(String key, int value) {
    editor.putInt(key, value);
    editor.commit();
}

public Integer getInteger(String key) {
    return pref.getInt(key, 0);
}

public void clearSavedInSharedPreference(){
    editor.clear();
    editor.commit();
}

}

成功验证用户身份后,使用此行通过以下方式添加/更新密钥的值:

 new SaveInSharedPreference(this).setBoolean(IS_LOGIN, true);

您可以通过以下方式获取 key 的值:

 new SaveInSharedPreference(this).getBoolean(IS_LOGIN);

共享首选项仅存储 String、Boolean、Long、Float、Integer。 如果您想将 JsonObject 存储在共享首选项中,您也可以这样做。 但是您必须将您的 JsonObject 更改为字符串,然后将其存储并从字符串中的共享首选项中获取值,然后将其转换为下面给出的 JsonObject:

存储/更新数据

 new SaveInSharedPreference(this).setString("user_data", new Gson().toJson(put_your_model_here));

获取数据

  new Gson().fromJson(new SaveInSharedPreference(this).getString("user_data"));

您还可以将列表存储在共享首选项中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM