我现在要做一个让项目里面的类,统一访问一个SharedPreferences里面的用户ID,那么,我写一个类,用来只作userId的访问,在里面,如果userId为空的话, 也就是没有登录过,那么,让用户去登录或者弹出Toast,但是,我写的一个方法是
public String getUserId() {
if (userId!=null || !"".equals(userId)){
return userId;
}else
return "请登录";
}
显然不对,它怎么样,都会给调用的类,返回信息,且,其它类,调用时,就在OkHttp的网络线程上调用的,是不能Toast的,
如果想要在一个访问服务器的Manager类中设置如果userId为空的话,就显示一个请登录或Toast一个信息。那么,如果这个类没有extends AppcompatActivity的话,怎样让,在不访问服务端之前,就让其截住要访问的这个动作呢。。
不能每次都让它访问了,再从后端 返回 一个信息,什么 用户ID不能为呀,这些的信息,也不合适哈。减少服务端的压力嘛。。
在SharedPrConst类里面判断,userId为空的话,就跳转到登录界面或Toast?。。该怎么做呢?
下面是自定的 SharedPrConst 做userId查询的
public class SharedPrConst extends AppCompatActivity {
private static SharedPrConst mInstance = null;
public static SharedPrConst getInstant() {
if (mInstance == null) {
//加线程通路锁
synchronized (SharedPrConst.class) {
if (mInstance == null) {
mInstance = new SharedPrConst();
}
}
}
//返回唯一对象
return mInstance;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
private SharedPreferences sp = ActivityUtils.getTopActivity().getSharedPreferences("userInformation", Context.MODE_PRIVATE);
public String userId = sp.getString("userId", "");
public String getUserId() {
if (userId!=null || !"".equals(userId)){
return userId;
}else
return "请登录";
}