Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用活动方法后,Android应用程序断开与RabbitMQ的连接_Android_Kotlin_Rabbitmq - Fatal编程技术网

使用活动方法后,Android应用程序断开与RabbitMQ的连接

使用活动方法后,Android应用程序断开与RabbitMQ的连接,android,kotlin,rabbitmq,Android,Kotlin,Rabbitmq,我试图在我的android应用程序中实现RabbitMQ,但在handleDelivery方法中出现了一个问题,即当我试图调用外部函数时,连接丢失 private fun initRabbitmq () { factory.setUri("someURI") subscribeThread = Thread(object : Runnable { override fun run() { val connection: Connection

我试图在我的android应用程序中实现RabbitMQ,但在
handleDelivery
方法中出现了一个问题,即当我试图调用外部函数时,连接丢失

private fun initRabbitmq () {
    factory.setUri("someURI")
    subscribeThread = Thread(object : Runnable {
        override fun run() {
            val connection: Connection = factory.newConnection()
            val channel: Channel = connection.createChannel()
            val consumer: DefaultConsumer
            consumer = object : DefaultConsumer(channel) {
                override fun handleDelivery(consumerTag: String?, envelope: Envelope?, properties: AMQP.BasicProperties?, body: ByteArray?) {
                    super.handleDelivery(consumerTag, envelope, properties, body)
                    val msg = String(body!!, Charsets.UTF_8)
                    Log.e(TAG, "RabbitMQ - $msg")
                    showRabbitMessage(msg)
                }
            }
            channel.basicConsume("defenders_test", true, consumer)
        }
    })
    subscribeThread.start()
}
当执行函数
showrabitmessage()
时,连接将丢失,但如果我正在删除它并查看日志,消息将显示在控制台中

你知道如何从线程中提取信息吗?
提前谢谢

问题是,我必须将对象从线程->中转移出去,在android中,可以使用
Handle
对象和
handleMessage()
方法来完成