最近在做改一个商城APP的时候,发现用户名更改之后,之前保存的收获地址都清空了,后来发现退出程序,然后重新进入APP后,地址又重现了。
最后,跟踪代码发现登陆逻辑是先登录,登陆后会获取一个会员对象,然后调用接口加载地址信息,并缓存在中间变量Constants里面,但是修改昵称后,会在Member.java中直接把会员信息重置了(昵称等信息是缓存在Member中的)。而购物车没有清空的原因是,购物车等信息是保存在中间变量Constants里面的,所以修改Member.java中的会员昵称,并不影响Constants中的信息。解决方法,把地址缓存在Constants中
// 初始化
if(GyUtils.isNotEmpty(Constants.member_info) && GyUtils.isNotEmpty(Constants.member_info.getM_id())){
// 初始化 会员收货地址
resultMap = dataService.getMemberAddress(Constants.member_info.getM_id());
if(GyUtils.isNotEmpty(resultMap) && resultMap.containsKey("SUCCESS")){
Constants.member_info.setMemberAddress(resultMap.get("SUCCESS"));
Constants.memberAddress=resultMap.get("SUCCESS");
----------------------------------------------------------------------------------------------------------------------
if(GyUtils.isNotEmpty(Constants.member_info) && GyUtils.isNotEmpty(Constants.member_info.getMemberAddress())){
addressList.addAll(Constants.member_info.getMemberAddress());
}else{
if(GyUtils.isNotEmpty(Constants.member_info.getM_id())){
addressList.addAll(Constants.memberAddress);
Constants.member_info.setMemberAddress(Constants.memberAddress);
}else{
swipeLayout.setVisibility(View.GONE);
center_address_list_noData_lay.setVisibility(View.VISIBLE);
}
}