diff --git a/app/src/main/java/com/kanglai/push/mapper/LoginMapper.java b/app/src/main/java/com/kanglai/push/mapper/LoginMapper.java index 2ff00a7..6f9d8d1 100644 --- a/app/src/main/java/com/kanglai/push/mapper/LoginMapper.java +++ b/app/src/main/java/com/kanglai/push/mapper/LoginMapper.java @@ -34,7 +34,7 @@ public interface LoginMapper { @FormUrlEncoded @Headers({ "Content-Type: application/x-www-form-urlencoded; charset=utf-8", - "Authorization: Basic dGVzdDp0ZXN0" + "Authorization: Basic a2ljY19ub3RpZnlfYXBwOmtpY2Nfbm90aWZ5X2FwcA==" }) Observable login(@FieldMap Map fields); diff --git a/app/src/main/java/com/kanglai/push/ui/adapter/MessageSwipeableRecyclerAdapter.java b/app/src/main/java/com/kanglai/push/ui/adapter/MessageSwipeableRecyclerAdapter.java index 2dd3191..6d7a405 100644 --- a/app/src/main/java/com/kanglai/push/ui/adapter/MessageSwipeableRecyclerAdapter.java +++ b/app/src/main/java/com/kanglai/push/ui/adapter/MessageSwipeableRecyclerAdapter.java @@ -233,6 +233,20 @@ public class MessageSwipeableRecyclerAdapter extends RecyclerView.Adapter collection) { + mItemList.addAll(collection); + notifyDataSetChanged(); + return this; + } + + public MessageSwipeableRecyclerAdapter insert(Collection collection) { + mItemList.addAll(0, collection); + notifyItemRangeInserted(0, collection.size()); + return this; + } + + /**左滑*/ private static class SwipeLeftResultAction extends SwipeResultActionMoveToSwipedDirection { private MessageSwipeableRecyclerAdapter mMessageSwipeableRecyclerAdapter; @@ -297,10 +311,5 @@ public class MessageSwipeableRecyclerAdapter extends RecyclerView.Adapter { PushChatMessage pushChatMessage = (PushChatMessage) msg; if(!TextUtils.isEmpty(pushChatMessage.getFanUserId())) { - mViewModel.judgeNewPushMsgs(pushChatMessage.getFanUserId(), pushChatMessage.getText()); + mViewModel.addLocalHistoryMsg(pushChatMessage.getFanUserId(), pushChatMessage.getText()); } }); RxSubscriptions.add(mSubscription); @@ -108,7 +106,7 @@ public class MessageFragment extends BaseFragment { if (result !=null) { - mViewModel.judgeNewPushMsgs(result.getId(), result.getLastContent()); + mViewModel.addLocalHistoryMsg(result.getId(), result.getLastContent()); } }); } @@ -147,24 +145,19 @@ public class MessageFragment extends BaseFragment list = mAdapter.getData(); - list.get(position).setIsRead("0"); - list.get(position).setPinned(false); - LocalPushChatMsgUtil.updateLocalData((ArrayList) list); - } + public void setToRead(int position) {} } diff --git a/app/src/main/java/com/kanglai/push/ui/vm/FocusDetailViewModel.java b/app/src/main/java/com/kanglai/push/ui/vm/FocusDetailViewModel.java index 9c2746a..0ab375c 100644 --- a/app/src/main/java/com/kanglai/push/ui/vm/FocusDetailViewModel.java +++ b/app/src/main/java/com/kanglai/push/ui/vm/FocusDetailViewModel.java @@ -26,7 +26,7 @@ import com.kanglai.push.entity.PushType; import com.kanglai.push.service.LinkService; import com.kanglai.push.ui.activity.FocusDetailActivity; import com.kanglai.push.ui.activity.InstantActivity; -import com.kanglai.push.util.LocalPushChatMsgUtil; +import com.kanglai.push.util.HistoryMsgUtil; import com.kongzue.dialogx.DialogX; import com.kongzue.dialogx.dialogs.BottomMenu; import com.kongzue.dialogx.dialogs.MessageDialog; @@ -124,7 +124,7 @@ public class FocusDetailViewModel extends ToolbarViewModel @Override public void onNext(ResultResponse R) { if (R.getCode() == R.SUCCESS) { - LocalPushChatMsgUtil.clearAppointData(followFans.getConcernUserId()); + HistoryMsgUtil.del(followFans.getConcernUserId()); finish(); ToastUtil.showBottomSuccess("操作成功"); }else ToastUtil.showBottomWarn(R.getMsg()); @@ -159,7 +159,7 @@ public class FocusDetailViewModel extends ToolbarViewModel @Override public void onNext(ResultResponse R) { if (R.getCode() == R.SUCCESS) { - LocalPushChatMsgUtil.clearAppointData(followFans.getConcernUserId()); + HistoryMsgUtil.del(followFans.getConcernUserId()); finish(); ToastUtil.showBottomSuccess("操作成功"); }else ToastUtil.showBottomWarn(R.getMsg()); diff --git a/app/src/main/java/com/kanglai/push/ui/vm/FocusListViewModel.java b/app/src/main/java/com/kanglai/push/ui/vm/FocusListViewModel.java index df66642..2121fb6 100644 --- a/app/src/main/java/com/kanglai/push/ui/vm/FocusListViewModel.java +++ b/app/src/main/java/com/kanglai/push/ui/vm/FocusListViewModel.java @@ -2,7 +2,6 @@ package com.kanglai.push.ui.vm; import android.app.Application; import android.text.Editable; -import android.text.TextUtils; import android.util.Pair; import android.view.View; import android.widget.Filter; @@ -23,7 +22,7 @@ import com.kanglai.push.entity.ConcernFan; import com.kanglai.push.entity.User; import com.kanglai.push.service.LinkService; import com.kanglai.push.ui.activity.FocusListActivity; -import com.kanglai.push.util.LocalPushChatMsgUtil; +import com.kanglai.push.util.HistoryMsgUtil; import com.kongzue.dialogx.dialogs.FullScreenDialog; import java.util.List; @@ -117,7 +116,7 @@ public class FocusListViewModel extends ToolbarViewModel { if (R.getCode() == R.SUCCESS) { ToastUtil.showBottomSuccess("操作成功"); loadFocusList(); // 刷新数据 - LocalPushChatMsgUtil.clearAppointData(item.getFanUserId()); + HistoryMsgUtil.del(item.getFanUserId()); }else ToastUtil.showBottomWarn(R.getMsg()); } diff --git a/app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java b/app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java index 4584ff5..cc1f920 100644 --- a/app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java +++ b/app/src/main/java/com/kanglai/push/ui/vm/InstantViewModel.java @@ -29,10 +29,8 @@ import com.kanglai.push.entity.PushChatMessage; import com.kanglai.push.entity.User; import com.kanglai.push.service.PushService; import com.kanglai.push.ui.activity.InstantActivity; -import com.kanglai.push.util.LocalPushChatMsgUtil; import com.scwang.smart.refresh.layout.api.RefreshLayout; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Locale; @@ -57,8 +55,6 @@ public class InstantViewModel extends ToolbarViewModel{ public String cursor = ""; - public ArrayList localPushChatMsgs; // 本地缓存的列表数据 - public InstantViewModel(@NonNull Application application) { super(application); DaggerServiceComponent @@ -71,7 +67,6 @@ public class InstantViewModel extends ToolbarViewModel{ public void onCreate(@NonNull LifecycleOwner owner) { super.onCreate(owner); super.setRightIconVisible(View.VISIBLE); - localPushChatMsgs = LocalPushChatMsgUtil.getLocalData(); } @Override protected void rightIconOnClick() { diff --git a/app/src/main/java/com/kanglai/push/ui/vm/LinkDetailViewModel.java b/app/src/main/java/com/kanglai/push/ui/vm/LinkDetailViewModel.java index 7e2e345..1d1ef41 100644 --- a/app/src/main/java/com/kanglai/push/ui/vm/LinkDetailViewModel.java +++ b/app/src/main/java/com/kanglai/push/ui/vm/LinkDetailViewModel.java @@ -28,7 +28,7 @@ import com.kanglai.push.entity.User; import com.kanglai.push.service.LinkService; import com.kanglai.push.ui.activity.InstantActivity; import com.kanglai.push.ui.activity.LinkDetailActivity; -import com.kanglai.push.util.LocalPushChatMsgUtil; +import com.kanglai.push.util.HistoryMsgUtil; import com.kongzue.dialogx.DialogX; import com.kongzue.dialogx.dialogs.BottomMenu; import com.kongzue.dialogx.dialogs.MessageDialog; @@ -135,7 +135,7 @@ public class LinkDetailViewModel extends ToolbarViewModel { @Override public void onNext(ResultResponse R) { if (R.getCode() == R.SUCCESS) { - LocalPushChatMsgUtil.clearAppointData(concernFan.getFanUserId()); + HistoryMsgUtil.del(concernFan.getFanUserId()); finish(); ToastUtil.showBottomSuccess("操作成功"); }else ToastUtil.showBottomWarn(R.getMsg()); @@ -166,7 +166,7 @@ public class LinkDetailViewModel extends ToolbarViewModel { if (R.getCode() == R.SUCCESS) { ToastUtil.showBottomSuccess("操作成功"); /*清除缓存的聊天记录*/ - LocalPushChatMsgUtil.clearAppointData(concernFan.getFanUserId()); + HistoryMsgUtil.del(concernFan.getFanUserId()); finish(); }else ToastUtil.showBottomWarn(R.getMsg()); } diff --git a/app/src/main/java/com/kanglai/push/ui/vm/MessageViewModel.java b/app/src/main/java/com/kanglai/push/ui/vm/MessageViewModel.java index 7987a31..d89e585 100644 --- a/app/src/main/java/com/kanglai/push/ui/vm/MessageViewModel.java +++ b/app/src/main/java/com/kanglai/push/ui/vm/MessageViewModel.java @@ -1,40 +1,35 @@ package com.kanglai.push.ui.vm; import android.app.Application; -import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; +import com.blankj.utilcode.util.ArrayUtils; import com.blankj.utilcode.util.CacheDiskUtils; -import com.blankj.utilcode.util.CollectionUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.Utils; import com.dolphin.core.http.api.ResultResponse; import com.dolphin.core.http.exception.ExceptionHandle; import com.dolphin.core.util.RxUtil; import com.dolphin.core.util.ToastUtil; +import com.google.gson.Gson; import com.kanglai.push.app.AppApplication; import com.kanglai.push.constant.CacheConstant; import com.kanglai.push.constant.CommonConstant; import com.kanglai.push.di.component.DaggerServiceComponent; import com.kanglai.push.entity.LocalPushChatMsg; -import com.kanglai.push.entity.PushMessage; import com.kanglai.push.entity.ResultVo; import com.kanglai.push.entity.SystemUser; import com.kanglai.push.entity.User; import com.kanglai.push.service.PushService; import com.kanglai.push.ui.fragment.MessageFragment; -import com.kanglai.push.util.LocalPushChatMsgUtil; +import com.kanglai.push.util.HistoryMsgUtil; import com.kanglai.push.util.TimeFormatUtil; import com.scwang.smart.refresh.layout.api.RefreshLayout; import com.umeng.message.PushAgent; -import com.umeng.message.api.UPushRegisterCallback; -import java.util.ArrayList; -import java.util.List; -import java.util.OptionalInt; -import java.util.stream.IntStream; +import java.util.Map; import javax.inject.Inject; @@ -53,8 +48,6 @@ public class MessageViewModel extends ToolbarViewModel { @Inject PushService pushService; - private PushMessage pushMessage = new PushMessage(); - private User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User()); @@ -73,118 +66,56 @@ public class MessageViewModel extends ToolbarViewModel { super.onCreate(owner); } - /** - * 刷新布局直接刷新本地缓存数据 - * @param refresh - */ + public void refresh(RefreshLayout refresh) { - List localData = LocalPushChatMsgUtil.getLocalData(); - if (!CollectionUtils.isEmpty(localData)) { - mActivity.mAdapter.refresh(localData); + Map localHistoryMsg = HistoryMsgUtil.select(); + if (localHistoryMsg != null) { + mActivity.mAdapter.refresh(localHistoryMsg.values()); mActivity.mLoadingLayout.showContent(); - if (mActivity.mAdapter.getItemCount() < localData.size()) { // 全部数据加载完之后停止加载 - refresh.finishRefresh(); - } else refresh.finishRefreshWithNoMoreData(); // 完成刷新并且标记没有更多的数据 - }else { - /*未发现缓存数据*/ + } else { mActivity.mLoadingLayout.showEmpty(); - refresh.finishRefresh(true); + refresh.finishRefresh(); } } - /** - * 判断是否为新的用户消息 - * @param fanUserId - * @param lastContent - */ - public void judgeNewPushMsgs(String fanUserId, String lastContent){ - ArrayList data = LocalPushChatMsgUtil.getLocalData(); - if (data != null && !CollectionUtils.isEmpty(data)) { - // Optional 适用于任何引用类型的空值判断和处理。而 OptionalInt 只适用于基本类型 int 的空值判断和处理 - // !TextUtils.isEmpty(i.getId()) 来确保只处理 id 不为空的实体对象 避免空对象报错 - OptionalInt indexOptional = IntStream.range(0,data.size()) - .filter(i -> !TextUtils.isEmpty(data.get(i).getId()) && fanUserId.equals(data.get(i).getId())) - .findFirst(); - if (indexOptional.isPresent()){ // Optional.isPresent() 方法用于检查 Optional对象是否包含非空的实体对象 - 即实体类数组中已有对应用户(修改) - LocalPushChatMsg sameMsg = data.get(indexOptional.getAsInt()); - sameMsg.setSendTime(TimeFormatUtil.getCurrentTime()); - sameMsg.setLastContent(lastContent); - sameMsg.setIsRead("1"); // 设置为未读 - data.remove(indexOptional.getAsInt()); // 删除重复的内容 - data.add(0, sameMsg); // 更新为最新的数据 - LocalPushChatMsgUtil.updateLocalData(data); - mActivity.mAdapter.refresh(data); // 更新界面ui - mActivity.mLoadingLayout.showContent(); - }else newLocalCache(fanUserId, lastContent); /*列表不为空 但 目标用户为新用户*/ - - }else newLocalCache(fanUserId, lastContent); /*列表为空 直接新增数组*/ - } - - - /** - * 检测到目标用户没有本地缓存 - * @param fanUserId - * @param lastContent - */ - public void newLocalCache(String fanUserId, String lastContent) { - pushService.getUserById(fanUserId) - .compose(RxUtil.schedulersTransformer()) - .compose(RxUtil.exceptionTransformer()) - .doOnSubscribe(this) - .subscribe(new DisposableObserver>>() { - @Override - public void onNext(ResultResponse> R) { - if (R.getCode() == R.SUCCESS) { - if (R.getData().getResult() != null) { - SystemUser systemUser = R.getData().getResult(); - LocalPushChatMsg newMsg = new LocalPushChatMsg(fanUserId, systemUser.getAvatar(), systemUser.getNickName(), systemUser.getUserType(), "1"); - newMsg.setLastContent(lastContent); - newMsg.setSendTime(TimeFormatUtil.getCurrentTime()); - - /** 将数据更新到缓存*/ - ArrayList data = LocalPushChatMsgUtil.getLocalData(); - if(CollectionUtils.isEmpty(data)) data = new ArrayList<>(); /*当数据本地存储数据为空时 需要将数据实例化*/ - data.add(0, newMsg); - LocalPushChatMsgUtil.updateLocalData(data); - }else ToastUtil.showBottom("用户不存在"); - }else ToastUtil.showBottom(R.getMsg()); - } - - @Override - public void onError(Throwable e) { - ExceptionHandle.baseExceptionMsg(e); - } - - @Override - public void onComplete() { - /** 数据更新完之后 更新UI*/ - ArrayList newList = LocalPushChatMsgUtil.getLocalData(); - if (CollectionUtils.isEmpty(newList)){ - mActivity.mLoadingLayout.showEmpty(); - mActivity.mRefreshLayout.finishRefresh(true); - ToastUtil.showBottom("暂无聊天记录"); - }else { - mActivity.mAdapter.refresh(newList); - mActivity.mLoadingLayout.showContent(); - } - } - }); + public void addLocalHistoryMsg(String userId, String content) { + pushService.getUserById(userId) + .compose(RxUtil.schedulersTransformer()) + .compose(RxUtil.exceptionTransformer()) + .doOnSubscribe(this) + .subscribe(new DisposableObserver>>() { + @Override + public void onNext(ResultResponse> R) { + if (R.getCode() == R.SUCCESS) { + if (R.getData().getResult() != null) { + SystemUser systemUser = R.getData().getResult(); + LocalPushChatMsg newMsg = new LocalPushChatMsg(userId, systemUser.getAvatar(), systemUser.getNickName(), systemUser.getUserType(), "0"); + newMsg.setLastContent(content); + newMsg.setSendTime(TimeFormatUtil.getCurrentTime()); + HistoryMsgUtil.put(userId, newMsg); + mActivity.mAdapter.insert(ArrayUtils.asArrayList(newMsg)); + }else ToastUtil.showBottom("用户不存在"); + }else ToastUtil.showBottom(R.getMsg()); + } + + @Override + public void onError(Throwable e) { + ExceptionHandle.baseExceptionMsg(e); + } + + @Override + public void onComplete() { + if (mActivity.mAdapter.getItemCount() > 0) { + mActivity.mLoadingLayout.showContent(); + } else mActivity.mLoadingLayout.showEmpty(); + } + }); } public void setAlias(){ PushAgent mPushAgent = PushAgent.getInstance(Utils.getApp()); - mPushAgent.register(new UPushRegisterCallback() { // 设备注册 - @Override - public void onSuccess(String s) { - LogUtils.i( "device token: " + s); - } - @Override - public void onFailure(String s, String s1) { - LogUtils.i("register failed: " + s + " " + s1); - } - }); mPushAgent.setAlias(user.getId(), CommonConstant.UMENG_PUSH_USER_ALIAS_TYPE, (s, m)->{ String bindMsg; if (s) { @@ -195,4 +126,5 @@ public class MessageViewModel extends ToolbarViewModel { LogUtils.d(bindMsg); }); } + } diff --git a/app/src/main/java/com/kanglai/push/util/HistoryMsgUtil.java b/app/src/main/java/com/kanglai/push/util/HistoryMsgUtil.java new file mode 100644 index 0000000..3822801 --- /dev/null +++ b/app/src/main/java/com/kanglai/push/util/HistoryMsgUtil.java @@ -0,0 +1,47 @@ +package com.kanglai.push.util; + +import com.blankj.utilcode.util.CacheDiskUtils; +import com.blankj.utilcode.util.MapUtils; +import com.google.gson.Gson; +import com.kanglai.push.constant.CacheConstant; +import com.kanglai.push.entity.LocalPushChatMsg; +import com.kanglai.push.entity.User; + +import java.util.Map; +import java.util.Objects; + +import lombok.experimental.UtilityClass; + +@UtilityClass +public class HistoryMsgUtil { + + private User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User()); + + public Map select() { + String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,""); + return (Map) new Gson().fromJson(localHistoryMsgJson, Map.class); + } + + public void put(String key,LocalPushChatMsg value) { + Objects.requireNonNull(key); + String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,""); + Map localHistoryMsg = Objects.requireNonNullElse((Map) new Gson().fromJson(localHistoryMsgJson, Map.class), MapUtils.newHashMap()); + localHistoryMsg.put(key, value); + String newLocalHistoryMsgJson = new Gson().toJson(localHistoryMsg); + CacheDiskUtils.getInstance().put(user.getId().concat(user.getUserType()), newLocalHistoryMsgJson); + } + + public void del(String key){ + Objects.requireNonNull(key); + String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,""); + Map localHistoryMsg = Objects.requireNonNullElse((Map) new Gson().fromJson(localHistoryMsgJson, Map.class), MapUtils.newHashMap()); + localHistoryMsg.remove(key); + String newLocalHistoryMsgJson = new Gson().toJson(localHistoryMsg); + CacheDiskUtils.getInstance().put(user.getId().concat(user.getUserType()), newLocalHistoryMsgJson); + } + + public void clean() { + CacheDiskUtils.getInstance().remove(user.getId().concat(user.getUserType())); + } + +} diff --git a/app/src/main/java/com/kanglai/push/util/LocalPushChatMsgUtil.java b/app/src/main/java/com/kanglai/push/util/LocalPushChatMsgUtil.java deleted file mode 100644 index 6c3a2b8..0000000 --- a/app/src/main/java/com/kanglai/push/util/LocalPushChatMsgUtil.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.kanglai.push.util; - -import android.text.TextUtils; - -import com.blankj.utilcode.util.CacheDiskUtils; -import com.blankj.utilcode.util.CollectionUtils; -import com.blankj.utilcode.util.LogUtils; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import com.kanglai.push.constant.CacheConstant; -import com.kanglai.push.entity.LocalPushChatMsg; -import com.kanglai.push.entity.User; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -/** - * 本地聊天数据缓存工具类 - * - * 本地聊天记录缓存方式 - * CacheDiskUtils.getInstance().getString(user.getId()+"_MESSAGE_STORAGE",""); -获取 - * CacheDiskUtils.getInstance().put(user.getId()+"_MESSAGE_STORAGE", newArr); -存储 - * - * @Author: liusixiang007 - * @since: 2023/6/26 - */ -public class LocalPushChatMsgUtil { - - /** - * 获取本地缓存ArrayList - * 并进行自检 id 是否为空 - * @return - */ - public static ArrayList getLocalData() { - ArrayList data = new ArrayList<>(); - User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User()); - Type listType = new TypeToken>(){}.getType(); // 定义接收结果类型 - String cachedJsonArrayStr = CacheDiskUtils.getInstance().getString(user.getId()+"_MESSAGE_STORAGE",""); - data = (ArrayList) new Gson().fromJson(cachedJsonArrayStr, listType); - if (data != null && !CollectionUtils.isEmpty(data)) { - Iterator iterator = data.iterator(); // 自检 使用迭代器的remove来删除 - while (iterator.hasNext()){ - LocalPushChatMsg item = iterator.next(); - if (item.getId() == null || TextUtils.isEmpty(item.getId())) { - iterator.remove(); - } - } - } - return data; - } - - /** - * 清除指定用户的缓存数据(添加之前需要限制id不能为空) - * @param id - */ - public static void clearAppointData(String id){ - ArrayList data = getLocalData(); - if (data != null && !CollectionUtils.isEmpty(data)) { - Iterator iterator = data.iterator(); - while (iterator.hasNext()){ - LocalPushChatMsg item = iterator.next(); - /*获取的时候已经做过自检了 这里就不需要做非空判断了*/ - if (id.equals(item.getId())) { - iterator.remove(); - updateLocalData(data); - } - } - } - } - - /** - * 更新用户缓存数据 - * @param data - */ - public static void updateLocalData(ArrayList data) { - User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User()); - String newArr = new Gson().toJson(data); - CacheDiskUtils.getInstance().put(user.getId()+"_MESSAGE_STORAGE", newArr); - LogUtils.i(user.getNickName()+"_MESSAGE_STORAGE 的缓存数据已更新"); - } - - /** - * 储存最新的一条数据 - * @param newDate - */ - public static void addNewLocalData(LocalPushChatMsg newDate){ - User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User()); - ArrayList data = new ArrayList<>(); - data.add(newDate); - LogUtils.d(data); - String newArr = new Gson().toJson(data); - CacheDiskUtils.getInstance().put(user.getId()+"_MESSAGE_STORAGE", newArr); - LogUtils.i(user.getNickName()+"_MESSAGE_STORAGE 的缓存数据已更新"); - } - - /** - * 遍历本地存储列表 出现相同id就删除旧数据 插入新的 没有就直接插入 - * - * - * @param newData 新的单条数据 - * @param oldList 老的存储数据列表(使用之前确保该列表不为空) - */ - public static void updateLocalDatas(LocalPushChatMsg newData, ArrayList oldList) { - User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User()); - Iterator iterator = oldList.iterator(); - while (iterator.hasNext()){ - LocalPushChatMsg item = iterator.next(); - if (newData.getId().equals(item.getId())) iterator.remove(); - } - if (CollectionUtils.isEmpty(oldList)) oldList = new ArrayList<>(); // 防止数据为空时数据插入异常 - oldList.add(newData); - CacheDiskUtils.getInstance().put(user.getId()+"_MESSAGE_STORAGE", oldList); - LogUtils.i(user.getNickName()+"_MESSAGE_STORAGE 的缓存数据已更新--",oldList); - } -}