honghengqiang před 2 roky
rodič
revize
e4fc58fa19

+ 1 - 12
baseswago/src/main/java/com/swago/baseswago/agora/AgoraManager.kt

@@ -231,18 +231,7 @@ object AgoraManager {
         mRtcEngine?.leaveChannel()
         iSwagoIRtcEngineEventHandler = null
         RtcEngine.destroy()
-    }
-
-    /**
-     * 未开播的情况下离开直播间
-     */
-    fun closePrepareRoom() {
-        if (userType == RoleType.anchor) {
-            mRtcEngine?.stopPreview()
-        }
-        mRtcEngine?.disableVideo()
-        iSwagoIRtcEngineEventHandler = null
-        RtcEngine.destroy()
+        mRtcEngine = null
     }
 
 

+ 7 - 13
room/src/main/java/com/swago/room/anchor/AnchorRoomActivity.kt

@@ -81,6 +81,8 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
 
     private var anchorRoomFragment: AnchorRoomFragment? = null
 
+    private var anchorCloseDialog: AnchorCloseDialog? = null
+
     //开播类型  0视频房 1语音房
     private var roomType = RoomType.VIDEO
 
@@ -115,7 +117,7 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
         binding.ivPrepareClose.setOnClickListener(object : NoDoubleClickListener() {
             override fun onClick() {
                 binding.ivPrepareClose.isEnabled = false
-                anchorCloseRoom()
+                SwagoRoomManager.closeRoom()
             }
         })
 
@@ -205,8 +207,8 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
         }
 
         roomVm.anchorCloseLiveData.observe(this) {
-            val dialog = AnchorCloseDialog.newInstance(it)
-            dialog.show(supportFragmentManager, "AnchorCloseDialog")
+            anchorCloseDialog = AnchorCloseDialog.newInstance(it)
+            anchorCloseDialog?.show(supportFragmentManager, "AnchorCloseDialog")
         }
     }
 
@@ -243,16 +245,7 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
     }
 
     override fun onBackPressed() {
-        if (binding.clPrepare.visibility == View.VISIBLE) {
-            anchorCloseRoom()
-        } else {
-            SwagoRoomManager.closeRoom()
-        }
-    }
-
-    private fun anchorCloseRoom() {
-        AgoraManager.closePrepareRoom()
-        finish()
+        SwagoRoomManager.closeRoom()
     }
 
 
@@ -273,6 +266,7 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
     }
 
     override fun onDestroy() {
+        anchorCloseDialog = null
         PKStateManager.removePKListener(this)
         AudioRoomManager.removeListener(this)
         agoraService?.let { stopService(it) }

+ 4 - 1
room/src/main/java/com/swago/room/base/BaseComFragment.kt

@@ -574,6 +574,9 @@ abstract class BaseComFragment<T : FragmentBaseComBinding> : BaseXFragment<T>(),
 
     override fun onDestroyView() {
         super.onDestroyView()
+        dialog = null
+        gameDialog = null
+        msgListDialog = null
         PKStateManager.removePKListener(this)
         activity?.let {
             KeyboardUtils.unregisterSoftInputChangedListener(it.window)
@@ -591,7 +594,7 @@ abstract class BaseComFragment<T : FragmentBaseComBinding> : BaseXFragment<T>(),
     }
 
     fun openMessageListDialog() {
-        msgListDialog = MessageListDialog()
+        msgListDialog = MessageListDialog.newInstance()
         msgListDialog?.show(childFragmentManager, "MessageListDialog")
     }
 

+ 28 - 18
room/src/main/java/com/swago/room/dialog/MessageListDialog.kt

@@ -10,6 +10,8 @@ import com.swago.baseswago.dialog.BaseXDFragment
 import com.swago.baseswago.util.NoDoubleClickListener
 import com.swago.room.databinding.DialogMessageListBinding
 import com.tencent.imsdk.v2.V2TIMConversation
+import com.tencent.qcloud.tim.uikit.modules.conversation.ConversationLayout
+import com.tencent.qcloud.tim.uikit.modules.conversation.ConversationManagerKit
 
 /**
  *@date 2021/11/11 21:03
@@ -17,33 +19,41 @@ import com.tencent.imsdk.v2.V2TIMConversation
  */
 class MessageListDialog : BaseXDFragment<DialogMessageListBinding>() {
 
-    override fun onActivityCreated(savedInstanceState: Bundle?) {
-        super.onActivityCreated(savedInstanceState)
+    init {
         setDimAmount(0f)
-        setHeightMatchParent()
         setGravity(Gravity.BOTTOM)
     }
 
-    override fun initOther() {
-        binding.conversation.initDefault()
-        binding.conversation.conversationList.setOnItemClickListener { view, position, messageInfo ->
-            ARouter.getInstance().build(ARouteConstant.Home.chatDetail)
-                .withInt("type", V2TIMConversation.V2TIM_C2C)
-                .withString("account",messageInfo.id)
-                .withString("chatName",messageInfo.title).navigation()
-        }
+   companion object{
+       fun newInstance(): MessageListDialog {
+           val args = Bundle()
+           val fragment = MessageListDialog()
+           fragment.arguments = args
+           return fragment
+       }
+   }
 
-        binding.conversation.conversationList.setOnItemLongClickListener { view, position, messageInfo ->
 
-        }
+    override fun initOther() {
+        activity?.let {
+            binding.conversation.initDefault()
+            binding.conversation.conversationList.setOnItemClickListener { view, position, messageInfo ->
+                ARouter.getInstance().build(ARouteConstant.Home.chatDetail)
+                    .withInt("type", V2TIMConversation.V2TIM_C2C)
+                    .withString("account",messageInfo.id)
+                    .withString("chatName",messageInfo.title).navigation()
+            }
+
+            binding.conversation.conversationList.setOnItemLongClickListener { view, position, messageInfo ->
 
-        binding.cl.setOnClickListener(object : NoDoubleClickListener() {
-            override fun onClick() {
-                dismissAllowingStateLoss()
             }
-        })
+
+        }
     }
 
     override fun initLiveData() {}
-
+    override fun onDestroyView() {
+        ConversationManagerKit.getInstance().detachAdapter()
+        super.onDestroyView()
+    }
 }

+ 4 - 2
room/src/main/java/com/swago/room/vm/RoomVm.kt

@@ -204,7 +204,9 @@ class RoomVm(application: Application) : AbsRoomVm(application) {
                         }
 
                         requestError {
-                            ActivityManagerUtil.get().currentActivity().finish()
+                            if (ActivityManagerUtil.get().currentActivity()!=null){
+                                ActivityManagerUtil.get().currentActivity().finish()
+                            }
                         }
                     }
                 }
@@ -214,7 +216,7 @@ class RoomVm(application: Application) : AbsRoomVm(application) {
                 SwagoRoomManager.iRoomInfo?.let {
                     leaveCurrentRoom(it)
                 }
-                if (ActivityManagerUtil.get().currentActivity() is UserRoomActivity) {
+                if (ActivityManagerUtil.get().currentActivity()!=null && ActivityManagerUtil.get().currentActivity() is UserRoomActivity) {
                     ActivityManagerUtil.get().finishTopActivity()
                 }
             }

+ 1 - 1
room/src/main/java/com/swago/room/widget/ComHeaderView.kt

@@ -154,7 +154,7 @@ class ComHeaderView  : ConstraintLayout, IRoomActiveListener, IHeader, RoomTimer
     }
 
     override fun closeRoomed() {
-        RoomTimer.timeTickList.add(this)
+        RoomTimer.timeTickList.remove(this)
         SwagoRoomManager.removeListener(this)
     }
 

+ 1 - 1
room/src/main/res/layout/dialog_message_list.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
+    android:layout_height="wrap_content"
     android:id="@+id/cl"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 

+ 6 - 0
tuikit/src/main/java/com/tencent/qcloud/tim/uikit/modules/conversation/ConversationManagerKit.java

@@ -656,4 +656,10 @@ public class ConversationManagerKit implements MessageRevokedManager.MessageRevo
         void updateUnread(int count);
     }
 
+
+    public void detachAdapter(){
+        if (mProvider!=null){
+            mProvider.detachAdapter();
+        }
+    }
 }

+ 4 - 0
tuikit/src/main/java/com/tencent/qcloud/tim/uikit/modules/conversation/ConversationProvider.java

@@ -176,4 +176,8 @@ public class ConversationProvider implements IConversationProvider {
     public void attachAdapter(IConversationAdapter adapter) {
         this.mAdapter = (ConversationListAdapter) adapter;
     }
+
+    public void detachAdapter() {
+        this.mAdapter = null;
+    }
 }