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



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

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

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数据库。 共享首选项用于存储单个值。但是,如果您有多个用户值,则需要将其存储在数据库中。

是的,您可以使用共享首选项来存储用户的基本详细信息(如果不是更复杂的),例如用户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();
}
}

最新更新