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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用activity方法后,Android应用程序与RabbitMQ断开连接相关的知识,希望对你有一定的参考价值。

我正在尝试将RabbitMQ实现到我的android应用程序中,但是当我尝试调用外部函数时连接丢失时,在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()
}

当函数showRabbitMessage()被执行时连接丢失,但如果我删除它并观看日志,则消息将显示在控制台中。

知道如何从线程中获取消息吗? Thx提前!

答案

问题是我必须从线程转移对象 - > out,并且在android中它可以通过使用Handle对象和handleMessage()方法来完成。

以上是关于使用activity方法后,Android应用程序与RabbitMQ断开连接的主要内容,如果未能解决你的问题,请参考以下文章

关闭飞行模式后,为啥 Android 应用程序会通过 Activity 和 Fragment 生命周期方法

android Activity关闭后 onDestory不执行

android 怎么调用强制关闭

分享:Android入门开发之销毁activity

09-appium-等待activity-Android

Android_Acitivity