在 Java/Android 中,我是通过 Intent 还是使用 getters/setters 传递值?

In Java/Android, do I pass values through Intent or by using getters/setters?

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

但是如果用在另一个class上会有什么负面影响吗?

我被告知不要使用很多静态变量,所以我正在寻找替代方法,使用 getters/setters 似乎比通过 Intent 传递值更容易混淆。

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

简而言之:

这是最糟糕的做法,如果你想在活动之间使用传递数据。Activity 应该 save/use 只有相关的数据,一旦 activity 完成数据将会丢失。如果您想将数据从一个 activity 传递到另一个,您必须使用 INTENT。

如果您谈论的数据应该服务于少数活动,并且它们来自 DB/Another 数据源。在这种情况下,这与 android 无关,数据应作为java

中的标准架构

希望有道理

只是为了让最重要的部分不受影响:你应该永远不要在Android中使用静态变量,除非你确切地知道你在做什么。否则你将造成内存泄漏和其他一系列问题。

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


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

例如看这个 class Example:

public class Example {

    private String text;

    public String getText() {
        return text;
    }

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

    public void doSomething() {
        ...
    }
}

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

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

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

创建字段 public 并像 instance.text 一样直接访问它是不好的。


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

您的首要任务应该始终是编写干净、可读和可维护的代码。