如果要在用户登录后检索用户的数据,是否需要使用“共享首选项”?

时间:2019-05-30 03:47:23

标签: android

我目前正在学习使用Android Studio开发移动应用程序。我已经成功完成了登录活动。我想知道是否要在用户登录后检索用户的数据时使用共享首选项?

2 个答案:

答案 0 :(得分:0)

要存储用户数据,最好的方法是在如下所示的用户模型中进行设置:

public class User {

private int user_isd;
private long post_count;
private long follower_count;
private long following_count;
private String user_email;
private String user_tag;
private String user_register_type;
private String user_mobile;
private String user_picture;
private String user_name;
private String user_bio;
private String user_gender;
private String user_latitude;
private String user_longitude;
private String user_location_name;
private String user_skills;
private int is_follow;
private String token;
private boolean isLoggedIn;

public User() {
}

public String getUser_email() {
    return user_email;
}

public void setUser_email(String user_email) {
    this.user_email = user_email;
}

public String getUser_tag() {
    return user_tag;
}

public void setUser_tag(String user_tag) {
    this.user_tag = user_tag;
}


public String getUser_mobile() {
    return user_mobile;
}

public void setUser_mobile(String user_mobile) {
    this.user_mobile = user_mobile;
}


public String getUser_name() {
    return user_name;
}

public void setUser_name(String user_name) {
    this.user_name = user_name;
}

public String getUser_bio() {
    return user_bio;
}

public void setUser_bio(String user_bio) {
    this.user_bio = user_bio;
}

public String getUser_gender() {
    return user_gender;
}

public void setUser_gender(String user_gender) {
    this.user_gender = user_gender;
}

public int getUser_isd() {
    return user_isd;
}

public void setUser_isd(int user_isd) {
    this.user_isd = user_isd;
}

public String getToken() {
    return token;
}

public void setToken(String token) {
    this.token = token;
}

public int getIs_follow() {
    return is_follow;
}

public void setIs_follow(int is_follow) {
    this.is_follow = is_follow;
}

public String getUser_picture() {
    return user_picture;
}

public void setUser_picture(String user_picture) {
    this.user_picture = user_picture;
}

public String getUser_latitude() {
    return user_latitude;
}

public void setUser_latitude(String user_latitude) {
    this.user_latitude = user_latitude;
}

public String getUser_longitude() {
    return user_longitude;
}

public void setUser_longitude(String user_longitude) {
    this.user_longitude = user_longitude;
}

public String getUser_location_name() {
    return user_location_name;
}

public void setUser_location_name(String user_location_name) {
    this.user_location_name = user_location_name;
}

public String getUser_skills() {
    return user_skills;
}

public void setUser_skills(String user_skills) {
    this.user_skills = user_skills;
}

public long getPost_count() {
    return post_count;
}

public void setPost_count(long post_count) {
    this.post_count = post_count;
}

public long getFollower_count() {
    return follower_count;
}

public void setFollower_count(long follower_count) {
    this.follower_count = follower_count;
}

public long getFollowing_count() {
    return following_count;
}

public void setFollowing_count(long following_count) {
    this.following_count = following_count;
}


public String getUser_register_type() {
    return user_register_type;
}

public void setUser_register_type(String user_register_type) {
    this.user_register_type = user_register_type;
}

public boolean isLoggedIn() {
    return isLoggedIn;
}

public void setLoggedIn(boolean loggedIn) {
    isLoggedIn = loggedIn;
}

@Override
public String toString() {
    return "ClassPojo [user_email = " + user_email + ", user_tag = " + user_tag + ", user_isd = " + user_isd + ", user_mobile = " + user_mobile + ", user_picture = " + user_picture + ", following_count = " + following_count + ", user_name = " + user_name + ", user_bio = " + user_bio + ", user_gender = " + user_gender + ", post_count = " + post_count + ", follower_count = " + follower_count + "]";
}

}

然后,您可以将该模型存储在Sqlite数据库表中,也可以使用Room ORM数据库。 共享首选项用于存储单个值。但是,如果您有多个用户值,则需要将其存储在数据库中。

答案 1 :(得分:0)

是的,您可以使用“共享首选项”存储用户的基本详细信息(如果不太复杂),例如用户ID,显示名称等。在注销用户时,您需要清除所有存储的信息。

您可以考虑以下课程为例:

public class UserPrefManager {
    private static final String is_LOGIN = "is_user_login";
    private static final String USER_ID = "user_id";

    private SharedPreferences pref;

    private static final String MyPREFERENCES = "myPrefs";

    public UserPrefManager(Context context) {
        pref = context.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
    }

    public void setIsLogin(boolean value) {
        pref.edit().putBoolean(is_LOGIN, value).apply();
    }

    public boolean isLogin() {
        return pref.getBoolean(is_LOGIN, false);
    }

    public void setUserId(String value) {
        pref.edit().putString(USER_ID, value).apply();
    }

    public String getUserId(String defValue) {
        return pref.getString(USER_ID, defValue);
    }

    public void setBooleanValue(String key, Boolean value) {
        pref.edit().putBoolean(key, value).apply();
    }

    public boolean getBooleanValue(String key, Boolean defValue) {
        return pref.getBoolean(key, defValue);
    }

    public boolean clear() {
        return pref.edit().clear().commit();
    }

}
相关问题