diff --git a/app/src/main/java/com/casic/app/safetreecontroller/tcp/TcpClient.kt b/app/src/main/java/com/casic/app/safetreecontroller/tcp/TcpClient.kt index 85fc554..b002415 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/tcp/TcpClient.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/tcp/TcpClient.kt @@ -1,6 +1,10 @@ package com.casic.app.safetreecontroller.tcp import android.util.Log +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.LifecycleRegistry +import androidx.lifecycle.lifecycleScope import io.netty.bootstrap.Bootstrap import io.netty.channel.AdaptiveRecvByteBufAllocator import io.netty.channel.Channel @@ -17,15 +21,22 @@ import io.netty.handler.codec.bytes.ByteArrayDecoder import io.netty.handler.codec.bytes.ByteArrayEncoder import io.netty.handler.timeout.IdleStateHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import java.net.InetSocketAddress import java.util.concurrent.TimeUnit - class TcpClient( private val host: String, private val port: Int, private val listener: OnSocketConnectionListener -) { +) : LifecycleOwner { + + private val registry = LifecycleRegistry(this) + + override fun getLifecycle(): Lifecycle { + return registry + } private val kTag = "TcpClient" private val reconnectDelay = 5L @@ -93,7 +104,7 @@ if (channel != null && channel!!.isActive) { return } - Thread { + lifecycleScope.launch(Dispatchers.IO) { try { val channelFuture = bootstrap.connect(host, port) .addListener(object : ChannelFutureListener { @@ -110,7 +121,7 @@ Log.d(kTag, "连接失败: ${e.message}") reconnect() } - }.start() + } } private fun reconnect() {