فهرست منبع

防止消息重复

liuzhenxing1118 2 سال پیش
والد
کامیت
b975c05afe

+ 8 - 0
app/src/main/java/com/xplora/xpchat/activity/PagerActivity.java

@@ -495,6 +495,11 @@ public class PagerActivity extends BaseActivity implements Listener.PlayListener
         getContentResolver().unregisterContentObserver(mChatObserver);
         getContentResolver().unregisterContentObserver(mEmojiObserver);
         getContentResolver().unregisterContentObserver(mPresetTextObserver);
+
+        mContactObserver = null;
+        mChatObserver = null;
+        mEmojiObserver = null;
+        mPresetTextObserver = null;
     }
 
     @Override
@@ -1131,6 +1136,9 @@ public class PagerActivity extends BaseActivity implements Listener.PlayListener
 
     private void addMessage(ArrayList<MessageBean> arrayList) {
         Log.d(TAG, "addMessage: " + arrayList.size());
+        for (MessageBean bean:arrayList) {
+            Log.d(TAG, "addMessage: " + bean.msgId);
+        }
         if (arrayList.isEmpty())
             return;
         mLoadOffset += arrayList.size();

+ 1 - 1
app/src/main/java/com/xplora/xpchat/fragment/ChatListFragment.java

@@ -105,7 +105,7 @@ public class ChatListFragment extends FrameLayout implements SwipeRefreshLayout.
     private ChatItem getItemWithPosition(long primaryKey) {
         int position = DataManager.instance().getMessageIndex(primaryKey);
         MessageBean bean = DataManager.instance().getMessageBeanWithPrimarykey(primaryKey);
-        Log.d(TAG, "getItemWithPosition: posion: " + position);
+        //Log.d(TAG, "getItemWithPosition: posion: " + position);
         if (bean == null) {
             Log.d(TAG, "getItemWithPosition: bean == null");
             return null;

+ 5 - 2
app/src/main/java/com/xplora/xpchat/manager/DataManager.java

@@ -103,7 +103,8 @@ public class DataManager {
         for (MessageBean bean: beanList) {
             if (bean.msgId == null || bean.msgId.isEmpty())
                 continue;
-            boolean isExist = isMessageBeanExsit(bean.msgId);
+            boolean isExist = isMessageBeanExsit(bean._id, bean.msgId);
+            Log.d(TAG, "fifterWithMessage: " + isExist + " msgId: " + bean.msgId);
             if (!isExist) {
                 arrayList.add(bean);
             }
@@ -134,10 +135,12 @@ public class DataManager {
         }
     }
 
-    public boolean isMessageBeanExsit(String msgId) {
+    public boolean isMessageBeanExsit(long _id, String msgId) {
         if (msgId == null || msgId.isEmpty())
             return false;
         for (MessageBean bean: mMessagesList) {
+            if (bean._id == _id)
+                return true;
             if (bean.msgId == null || bean.msgId.isEmpty())
                 continue;
             if (bean.msgId.equals(msgId))

+ 1 - 1
app/src/main/java/com/xplora/xpchat/model/MessageBean.java

@@ -67,6 +67,6 @@ public class MessageBean extends BaseBean {
     }
 
     public String beanToString() {
-        return "_id:" + _id + " type:" + type + " localState:" + localState + " createTime:" + create + " emojiId:" + emojiId + " filePath:" + filePath + " videoPath:" + videoPath;
+        return "_id:" + _id + " msgId:" + msgId + " type:" + type + " localState:" + localState + " createTime:" + create + " emojiId:" + emojiId + " filePath:" + filePath + " videoPath:" + videoPath;
     }
 }