【问题标题】:In Java/Android, do I pass values through Intent or by using getters/setters?在 Java/Android 中,我是通过 Intent 还是使用 getter/setter 传递值?
【发布时间】:2015-02-28 20:49:41
【问题描述】:

我读到 getter 和 setter 在使用它创建的同一个类中的方法时不适合 Android 编程。

但是如果在其他类中使用会不会有什么负面影响?

有人告诉我不要使用很多静态变量,所以我正在寻找一种替代方法,使用 getter/setter 似乎比通过 Intent 传递值更容易混淆。

那么,这样做是不是很好的编码?

【问题讨论】:

  • 仅通过意图传递数据。当活动结束时,它们被销毁并丢失所有包含的数据。
  • @Malik Brahimi 我明白了

标签: java android android-intent setter getter


【解决方案1】:

只是为了摆脱最重要的部分:除非您确切知道自己在做什么,否则您应该切勿在 Android 中使用静态变量。否则你会造成内存泄漏和其他一大堆问题。

如果您想将数据传递给另一个Activity,您应该使用Intents


方法调用总是有额外的开销。直接访问字段总是更快。但这并不意味着您应该一起放弃 getter 和 setter。

例如看这个类Example

public class Example {

    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public void doSomething() {
        ...
    }
}

doSomething() 中,您应该直接使用该字段。调用那里的 getter 和 setter 是不可行的,因为每次调用都需要额外的开销。

如果您在另一个类中使用Example 类,如下所示,您应该使用getter 和setter 方法:

Example instance = new Example();
instance.setText("some text");
...
String text = instance.getText();

公开该字段并像instance.text 那样直接访问它会很糟糕。


但是任何现代设备都具有如此强大的计算能力,以至于方法调用产生的开销完全可以忽略不计。 The docs 确实声明您应该避免在性能关键的地方使用 getter 和 setter,但该规则是从大多数 Android 手机具有 128 MB RAM 的时候开始的。你应该遵守我上面解释的规则的主要原因只是一件事:编码风格

您首先关心的应该是编写干净、可读和可维护的代码。

【讨论】:

    【解决方案2】:

    简而言之:

    如果您想在活动之间使用传递数据,这是最糟糕的事情。活动应该只保存/使用相关的数据,一旦活动完成,数据将丢失。在您想要传递的情况下从一项活动到另一项活动的数据您必须使用 INTENT。

    如果您谈论的数据应该服务于少数活动,并且它们来自 DB/另一个数据源。在这种情况下,这与 android 无关,数据应作为 java 中的标准架构处理

    希望这是有道理的

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 2011-09-27
      • 2020-04-01
      • 2017-10-09
      • 2023-03-20
      • 2012-04-28
      • 2015-02-24
      • 1970-01-01
      • 2011-11-10
      相关资源
      最近更新 更多