在活动之间传递自定义对象
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
键盘。
我正在关注 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
键盘。