浏览代码

Execute SEService initialization on the handler thread

This (hopefully) eliminates a race condition where the connected listenr
is called before the service variable is assigned.
Peter Cai 3 年之前
父节点
当前提交
c3f4770108
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      app/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt

+ 5 - 3
app/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt

@@ -34,9 +34,11 @@ class EuiccChannelManager(private val context: Context) {
     private val handler = Handler(HandlerThread("EuiccChannelManager").also { it.start() }.looper)
 
     private suspend fun connectSEService(): SEService = suspendCoroutine { cont ->
-        var service: SEService? = null
-        service = SEService(context, { handler.post(it) }) {
-            cont.resume(service!!)
+        handler.post {
+            var service: SEService? = null
+            service = SEService(context, { handler.post(it) }) {
+                cont.resume(service!!)
+            }
         }
     }