在活动之间传递自定义对象

Passing custom object between activities

我正在关注 this tutorial on how to use MQTT with Android Studio. In it, they created an MQTTClient class that uses the MQTTAndroidClient 图书馆。我想将 MQTTClient class 从一个 activity 传递给另一个。有什么建议我可以怎么做吗?我是 Android 开发人员的新手,我正在尝试协商 serializable/parcelable 工具,但没有太多专业知识。谢谢!

P.S。我在 Kotlin 开发

在活动之间传递复杂的 classes 通常不是一个好主意。对于这种用法,您应该使用 Singleton 并将其存储在您的应用程序 class 或类似的东西中。

我不建议您将整个 MQTTClient 通过活动。

我建议你阅读这个 Dependency-Injection manual is more or less what you need, normally you'd use a dependency injection library/framework 来做你想做的事,但由于设置其中的大部分内容很复杂,我会遵循 link I以前 link 编辑过。

示例代码:

// Container of objects shared across the whole app
class AppContainer {

    val mqttClient = MQTTClient() //<-- Initialisation 
}

然后创建自定义 Application

class MyApplication : Application() {

    // Instance of AppContainer that will be used by all the Activities of the app
    val appContainer = AppContainer()
}

不要忘记将其添加到 manifest.xml 的名称属性中。

然后从你的 Activity 你需要这个 MQTTClient 你使用 :

val appContainer = (application as MyApplication).appContainer
val mqttClient = appContainer.mqttClient

@Ben-J 的建议也很重要,要在 kotlin 中创建 Singleton,您可以使用 object 键盘。