我可以通过 Companion 对象传递对象吗?
Can I pass objects through Companion object?
我对 Android 的 kotlin 中的伴生对象有疑问:我可以通过伴生对象传递对象吗?
我已经尝试过这个并且很有效,但我不知道这是一个好方法还是应该避免?
编辑:
感谢您的回答,我怀疑这是一种不好的做法,但我想确定一下!
必须避免,与Java静态一样。
不会在进程重建中存活并引入全局可变状态。
如前所述,必须避免通过 Companion 对象传递对象,因为它的行为方式与 Java 静态相同。
最好的选择是通过包传递您的对象。如果你不喜欢自己实现 Parcelable
,你可以尝试 @Parcelize which is available in kotlin or some libraries, such as Parceler.
否,将伴随对象用作对象引用工具是不好的做法。请将项目添加到捆绑包中。如果您使用带有片段导航的捆绑包,我会推荐使用新的 Jetpack Navigation 组件。使用 safeArgs,导航和传递对象真的很容易。
我对 Android 的 kotlin 中的伴生对象有疑问:我可以通过伴生对象传递对象吗?
我已经尝试过这个并且很有效,但我不知道这是一个好方法还是应该避免?
编辑: 感谢您的回答,我怀疑这是一种不好的做法,但我想确定一下!
必须避免,与Java静态一样。 不会在进程重建中存活并引入全局可变状态。
如前所述,必须避免通过 Companion 对象传递对象,因为它的行为方式与 Java 静态相同。
最好的选择是通过包传递您的对象。如果你不喜欢自己实现 Parcelable
,你可以尝试 @Parcelize which is available in kotlin or some libraries, such as Parceler.
否,将伴随对象用作对象引用工具是不好的做法。请将项目添加到捆绑包中。如果您使用带有片段导航的捆绑包,我会推荐使用新的 Jetpack Navigation 组件。使用 safeArgs,导航和传递对象真的很容易。