Ver código fonte

防止在语聊界面灭屏后,无法收到消息。重新拉取下。

liuzhenxing1118 2 anos atrás
pai
commit
3660884e63

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

@@ -89,6 +89,8 @@ public class PagerActivity extends BaseActivity implements Listener.PlayListener
     private int mPageIndex = 0;
     private int mLoadOffset = 0;
 
+    private int isSyncMessage = 0;
+
     @Override
     protected void onCreateBase() {
         Log.d(TAG, "onCreateBase: ");
@@ -476,11 +478,19 @@ public class PagerActivity extends BaseActivity implements Listener.PlayListener
 
     @Override
     protected void onResume() {
+        Log.d(TAG, "onResume: ");
         super.onResume();
 
         //有权限后,才能读到分享文件的大小
         checkShareMessage();
 
+        //防止在语聊界面灭屏后,无法收到消息。重新拉取下。
+        Log.d(TAG, "onResume: " + isSyncMessage);
+        if (isSyncMessage == 1) {
+            syncNewMessageAll();
+        }
+        isSyncMessage = 1;
+
         if (!Macros.DEBUG) {
             registerContentObserver();
         }
@@ -488,6 +498,7 @@ public class PagerActivity extends BaseActivity implements Listener.PlayListener
 
     @Override
     protected void onPause() {
+        Log.d(TAG, "onPause: ");
         super.onPause();
 
         //暂停正在播放的语音
@@ -1054,6 +1065,19 @@ public class PagerActivity extends BaseActivity implements Listener.PlayListener
         }).start();
     }
 
+    private void syncNewMessageAll() {
+        Log.d(TAG, "syncSinceMessage: ");
+        new Thread(()-> {
+            ArrayList<MessageBean> messageBeans = mDatabaseUtil.loadNewMessages(mChatType, mChatUserId);
+            if (messageBeans == null || messageBeans.size() <= 0)
+                return;
+            ArrayList<MessageBean> fifterList = DataManager.instance().fifterWithMessage(messageBeans);
+            if (fifterList == null || fifterList.size() <= 0)
+                return;
+            addMessage(fifterList);
+        }).start();
+    }
+
     //监听-》再去数据库取新数据
     private MessageBean updateOldMessage(int primaryKey) {
         MessageBean dbBean = mDatabaseUtil.loadMessageFromPrimaryKey(mChatType, mChatUserId, primaryKey);

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

@@ -154,7 +154,7 @@ public class ChatListFragment extends FrameLayout implements SwipeRefreshLayout.
 
     @Override
     public void onScrollStateChanged(AbsListView view, int scrollState) {
-        Log.d(TAG, "onScrollStateChanged: " + scrollState);
+        //Log.d(TAG, "onScrollStateChanged: " + scrollState);
         switch (scrollState) {
             case 1:
                 //开始滚动
@@ -177,7 +177,7 @@ public class ChatListFragment extends FrameLayout implements SwipeRefreshLayout.
 
     @Override
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-        Log.d(TAG, "onScroll: " + firstVisibleItem + "  vis:" + visibleItemCount + " total:" + totalItemCount );
+        //Log.d(TAG, "onScroll: " + firstVisibleItem + "  vis:" + visibleItemCount + " total:" + totalItemCount );
         for (int i = firstVisibleItem; i < firstVisibleItem + visibleItemCount; i++) {
             boolean isContains = mReadItemIdArray.contains(i);
             if (!isContains) {

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

@@ -98,7 +98,7 @@ public class DataManager {
         mMessagesList = saveArrayList;
     }
 
-    private ArrayList<MessageBean> fifterWithMessage(ArrayList<MessageBean> beanList) {
+    public ArrayList<MessageBean> fifterWithMessage(ArrayList<MessageBean> beanList) {
         ArrayList<MessageBean> arrayList = new ArrayList<>();
         for (MessageBean bean: beanList) {
             if (bean.msgId == null || bean.msgId.isEmpty())
@@ -111,6 +111,7 @@ public class DataManager {
         return arrayList;
     }
 
+
     public void dealWithMessage(ArrayList<MessageBean> beanList, long lastShowTime) {
         //设置谁发的消息
         setOwner(beanList);