上一篇文章中我介绍了怎么使用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用户功能更加符合个性化的业务需求。同时,结合本地用户信息能更方便的展现登陆用户信息,避免重复登陆和过多的逻辑判断。