在做登录时,各位是否经常做自动登录,这是一个非常友好的操作,不过也容易出现问题,就是如果用户在其他地方进行了密码修改,而你如果是使用的SharedPreferences来进行用户信息存值的话,尤其是你这里没有进行网络判断,直接进行的是看用户是否有选择下次自动登录的话,很容易就会直接跳过验证,这样就容易出现漏洞,那么这里你就需要去进行网络判断
如下图
进行登录判断,确定用户是否进行过密码修改,但是这里有一个很容易进去的坑,是什么呢,就是onResume方法的使用,我们大部分会在这里面用handler进行3秒跳转,如这样:
这是没有问题的,但是如果在这里的话,你会出现一个问题,因为你需要异步请求网络参数,那么你的onResume方法就会在你的网络请求方法前执行,那么你就拿不到用户是否密码正确或者错误。(PS:自己写的网络请求类,可能比较渣...)
这样你的请求就会出现
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yuanda.activity.ydwy_bussiness_college/com.yuanda.activity.ydwy_bussiness_college.activity.GuideActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
这个错误,比如你在其中去判断了code的值,那么久会为空。
解决的方案也很简单,把你的handler方法写出了,注释掉onResume,然后在你的网络请求类里进行跳转的操作,如果判断后 用户密码有进行修改了,那么久可以直接跳转到登录界面,提示用户登录超时就好了。
(PS:小白记坑日记.....)