Prechádzať zdrojové kódy

合并notConnectedList和connectListeners,功能重叠;优化代码

Frankensteinly 10 mesiacov pred
rodič
commit
f29c19872c

+ 20 - 37
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -56,8 +56,6 @@ object BusinessManager {
 
     // 已连接的蓝牙钥匙集合
     var deviceList: MutableList<BleBean> = mutableListOf()
-    // 待连接的钥匙Mac集合 TODO 待和connectListeners合并
-    val notConnectedList: MutableList<String> = mutableListOf()
     // TODO 是否正在进行准备流程
     private var isPreparing: Boolean = false
 
@@ -71,9 +69,9 @@ object BusinessManager {
     // 蓝牙连接准备监听
     class ConnectListener(
         val mac: String,
-        val callBack: ((Boolean, BleBean?) -> Unit)?
+        val callBack: ((Boolean, BleBean?) -> Unit)? = null
     )
-    // TODO 待和notConnectedList合并
+    // 蓝牙连接准备监听集合,全是待准备连接的,准备完毕的会移除
     private val connectListeners = mutableListOf<ConnectListener>()
 
     // TODO 归还设备是否需要登录
@@ -150,15 +148,9 @@ object BusinessManager {
                                 }
 //                                ModBusController.controlKeyBuckle(false, isLeft = true, dockBean.addr.toInt() - 1)
                             } else {
-                                // 移出待连集合,移出监听集合,防止connectKey循环失败
+                                // 移出待连监听集合,防止connectKey循环失败
                                 keyBean.mac?.let {
-                                    if (notConnectedList.contains(it)) {
-                                        notConnectedList.remove(it)
-                                    }
-                                    if (connectListeners.any { listener -> listener.mac == it }) {
-                                        val listener = connectListeners.first { listener -> listener.mac == it }
-                                        connectListeners.remove(listener)
-                                    }
+                                    unregisterConnectListener(it)
                                 }
                             }
                         }
@@ -359,7 +351,6 @@ object BusinessManager {
      * 注册连接监听
      */
     private fun registerConnectListener(mac: String, callBack: ((Boolean, BleBean?) -> Unit)? = null) {
-        notConnectedList.add(mac)
         connectListeners.add(ConnectListener(mac, callBack))
         if (connectListeners.size == 1) {
             connectKey()
@@ -370,12 +361,10 @@ object BusinessManager {
      * 连接监听反注册
      */
     fun unregisterConnectListener(mac: String, bleBean: BleBean? = null) {
-        if (notConnectedList.contains(mac)) {
-            notConnectedList.remove(mac)
-            connectListeners.find { it.mac == mac }?.let {
-                it.callBack?.invoke(true, bleBean)
-                connectListeners.remove(it)
-            }
+        connectListeners.find { it.mac == mac }?.let {
+            // TODO 移除的时候是否要回调待定
+//            it.callBack?.invoke(true, bleBean)
+            connectListeners.remove(it)
         }
     }
 
@@ -383,7 +372,7 @@ object BusinessManager {
      * 连接钥匙,单个mac走完prepare再进行下一个
      */
     private fun connectKey() {
-        if (notConnectedList.isEmpty()) {
+        if (connectListeners.isEmpty()) {
             return
         }
         if (isPreparing) {
@@ -393,29 +382,23 @@ object BusinessManager {
             return
         }
         isPreparing = true
-        val mac = notConnectedList[0]
-        prepareBle(mac, ActivityUtils.currentActivity() as BaseActivity<*>, null) { isDone, bleBean ->
+        val listener = connectListeners[0]
+        prepareBle(listener.mac, ActivityUtils.currentActivity() as BaseActivity<*>, null) { isDone, bleBean ->
             Executor.runOnMain {
                 isPreparing = false
                 if (!isDone) {
                     // 判断是否仍然待连,防止拿走;移到末尾,防止循环影响
-                    if (notConnectedList.contains(mac)) {
-                        notConnectedList.remove(mac)
-                        notConnectedList.add(mac)
-                    }
-                    connectKey()
+                    unregisterConnectListener(listener.mac)
+                    registerConnectListener(listener.mac, listener.callBack)
                     return@runOnMain
                 }
                 // 判断是否仍然待连,防止拿走
-                if (notConnectedList.contains(mac)) {
-                    notConnectedList.remove(mac)
-                    // TODO 暂时只处理准备成功
-                    connectListeners.find { it.mac == mac }?.let {
-                        it.callBack?.invoke(true, bleBean)
-                        connectListeners.remove(it)
-                    }
+                // TODO 暂时只处理准备成功
+                if (connectListeners.contains(listener)) {
+                    listener.callBack?.invoke(true, bleBean)
+                    unregisterConnectListener(listener.mac)
                 }
-                if (notConnectedList.isNotEmpty()) {
+                if (connectListeners.isNotEmpty()) {
                     connectKey()
                 }
             }
@@ -453,9 +436,9 @@ object BusinessManager {
             }
 
             override fun onScanning(bleDevice: BleDevice?) {
+                LogUtil.i("onScanning:${bleDevice?.mac}")
                 bleDevice?.let {
-                    LogUtil.i("onScanning:${it.mac}")
-                    if (notConnectedList.any { itMac -> itMac == bleDevice.mac }) {
+                    if (connectListeners.any { itData -> itData.mac == bleDevice.mac }) {
                         doConnect(it, loadingCallBack, prepareDoneCallBack)
                     }
                 }