【问题标题】:Why use parcelable when you can perform the same task using static variables?当您可以使用静态变量执行相同的任务时,为什么还要使用 parcelable?
【发布时间】:2011-10-01 05:01:03
【问题描述】:

我是 android 和 java 的新手......我从几天前读到关于 android parceling 教程,用于将数据或变量值从一个活动传输到另一个活动或一个类到另一个......但我不太了解那。 你能告诉我是否有必要为此使用Parcelable,因为同样的任务也可以使用static关键字作为字符串、int或数组类型的变量执行,那么为什么parcelable请详细解释.. 感谢您提前解释,请提供与示例的比较

【问题讨论】:

    标签: android ipc parcelable


    【解决方案1】:

    虽然从技术上讲这两种方法都行得通,但存在一些缺陷。

    首先是静态变量是静态的。如果您有相同活动的两个实例,它们都将引用相同的静态对象。这可能不是你想要的。

    其次,访问全局变量被认为是不好的做法。这使得很难看到发生了什么,很难测试,而且你的某个人(另一个班级)可以修改你的数据。这会产生一些可怕的错误。

    通过 Parcelable 对象传递数据,您可以非常清楚地知道您在做什么,并且可以避免这两个问题。

    请注意,此建议并非专门针对 Android,而是针对 Java 和一般编程。

    【讨论】:

    • 嗨,大卫,你能不能给我提供使用 parcelable 的工作代码。因为我正在互联网上搜索,但没有完整的源代码。请。我的电子邮件 ID:saurabh262134@gmail.com
    • This is an example 将实现 Parcelable 的对象传递给 Activity。如果要传递自己的对象,则需要实现 Parcelable 接口。 Android 文档中有an example
    • 另一个例子参见本教程techdroid.kbeanie.com/2010/06/…
    • 感谢您的回复..我正在努力了解这一点...希望我会...:)
    • 更不用说静态变量会导致内存泄漏;如果你没有明确地将一个可以为 null 的静态变量设置回 null,那么无论变量引用都不会被垃圾收集器清理。
    【解决方案2】:

    静态引用永远不会被垃圾回收,因此您最终会创建称为内存泄漏的东西。

    您在内存中保留了一个不需要且无法释放的对象。

    如果你像这样实例化足够多的对象,你会得到一个内存不足 (oom) 异常,这将导致应用程序崩溃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2020-10-04
      相关资源
      最近更新 更多