上一篇文章中我介紹了怎麼使用BmobSDK進行簡單的用戶註冊、登陸操做。文中咱們是使用BmobSDK默認的BmobUser類來設置用戶名、 密碼註冊登陸的。這是一種很是簡單的用戶對象,只包含了用戶名和密碼兩個屬性,實際開發中,咱們的用戶信息還包含年齡、性別、暱稱等等其餘屬性。這個時候 咱們該怎麼作呢?很簡單,咱們只須要新建一個用戶類繼承自BmobUser,在這個類中擴展其餘咱們須要的用戶屬性。代碼以下:java
public class MyUser extends BmobUser { /** * 年齡 */ private Integer age; /** * 性別 */ private Boolean gender; /** * 暱稱 */ private String nickname; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Boolean getGender() { return gender; } public void setGender(Boolean gender) { this.gender = gender; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } }
那麼接下來進行用戶註冊和登陸有什麼區別嗎?其實沒什麼變化,只是此次咱們再也不使用BmobUser類,而是使用咱們新建立的MyUser類來建立用戶對象進行註冊和登陸。代碼以下:緩存
// 使用BmobSDK提供的註冊功能MyUser myUser = new MyUser(); myUser.setUsername("abc"); myUser.setPassword("123456"); myUser.setNickname("鳴人"); myUser.setAge(18); myUser.setGender(true);//true爲男,false爲女 myUser.signUp(this, new SaveListener() { @Override public void onSuccess() { Toast.makeText(CustomUserSignUpActivity.this, "註冊成功", Toast.LENGTH_SHORT).show(); } @Override public void onFailure(int i, String s) { Toast.makeText(CustomUserSignUpActivity.this, "註冊失敗", Toast.LENGTH_SHORT).show(); } });
以上代碼中,我建立了myUser對象,除了設置用戶名和密碼以外,還設置了暱稱、年齡和性別,而後一樣是調用signUp方法進行註冊,這和上一篇文章中的註冊方法是同樣的。只不過此次註冊成功後在Bmob後臺中User表發生了一些變化,先看圖:ide
User表中比以前多出了三個數據列(gender、nickname、age),這就是MyUser類擴展的三個屬性。從這裏能夠看出,數據表的列名稱是和MyUser類的屬性名稱對應的。在MyUser類中增長新的屬性,註冊時會同步到Bmob後臺的數據表中。this
注意spa
這裏須要注意一點,以前註冊的「稻草人」這個帳號在登陸成功後getGender、getNickname、getAge是返回null的。
因此須要注意管理好繼承自BmobUser類和BmobObject類的屬性,在肯定好各個屬性後,儘可能不要修改。若是特殊狀況新增了屬性,在get的時候記得要判斷爲null的狀況。code
登陸和上一篇文章中介紹的同樣,可使用BmobUser也可使用MyUser進行登陸,下面是使用MyUser對象進行的登陸操做。對象
MyUser myUser = new MyUser(); myUser.setUsername("abc"); myUser.setPassword("123456"); myUser.login(this, new SaveListener() { @Override public void onSuccess() { Toast.makeText(CustomUserSignUpActivity.this, "登陸成功", Toast.LENGTH_SHORT).show(); } @Override public void onFailure(int i, String s) { Toast.makeText(CustomUserSignUpActivity.this, "登陸失敗", Toast.LENGTH_SHORT).show(); } });
本地用戶信息
說完了註冊和登陸功能,咱們來好好解釋下BmobUser這個類。BmobUser類是繼承自BmobObject類的,它存在的主要目的就是爲了解決應 用中關於用戶系統的相關功能(註冊、登陸、修改密碼…)。在BmobUser類中實現了signUp(註冊)和login(登陸)兩個方法,這兩個方法在 用戶註冊或登陸成功以後都會在本地緩存該用戶的信息(除密碼外),這裏咱們稱它爲本地用戶信息或緩存用戶信息。
爲何要緩存這個用戶信息呢?主要目的有二:繼承
避免重複登陸開發
方便獲取、展現用戶信息get
那麼該怎樣獲取這個緩存在本地的用戶信息呢?BmobUser類中的靜態方法getCurrentUser能夠很方便的將本地的用戶信息提取出來用一個BmobUser對象返回。
MyUser user = BmobUser.getCurrentUser(this, MyUser.class);
以上代碼中,第二個參數指定以MyUser.class類型將本地用戶信息返回。
最後我仍是提一下,在什麼狀況下使用這個本地用戶信息吧。好比通常應用在啓動的時候須要判斷用戶是否已登陸,若是登陸了則能夠正常進入使用,未登陸則跳轉到登陸or註冊界面。簡單的代碼以下:
MyUser user = BmobUser.getCurrentUser(this, MyUser.class); if(null == user){ // 未登陸,跳轉到登陸Or註冊界面 }else{ // 已登陸,正在進入應用 }
在應用中須要顯示當前登陸用戶的信息時,一樣是getCurrentUser,而後get各屬性的值進行展現:
MyUser user = BmobUser.getCurrentUser(this, MyUser.class); user.getNickname(); user.getAge(); ....
擴展BmobUser類能讓Bmob用戶功能更加符合個性化的業務需求。同時,結合本地用戶信息能更方便的展現登陸用戶信息,避免重複登陸和過多的邏輯判斷。