我读到,当在创建它的同一个类中使用该方法时,getter和setter对于android编程并不好。但是如果在另一个类中使用它会有任何负面影响吗?我被告知不要使用很多静态变量,所以我正在寻找替代方案。使用getter / setter似乎比通过intent传递值更容易混淆。这样做的编码是否良好?
答案 0 :(得分:2)
只是为了获得最重要的部分:你应该从不在Android中使用静态变量,除非你确切知道你在做什么。否则你将会造成内存泄漏和其他一系列问题。
如果您想将数据传递给其他Activity
,则应使用Intents
。
方法调用总是会产生额外的开销。直接访问字段总是更快。但这并不意味着你应该放弃吸气剂和制定者。
例如,请查看此课程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的时候开始的。你应该遵守我上面解释的规则的主要原因只有一点:编码风格。
您首先要关注的是编写干净,可读和可维护的代码。
答案 1 :(得分:0)
简而言之:
这是最糟糕的事情,如果你想在活动之间使用传递数据。活动应该只保存/使用相关的数据,一旦活动完成,数据就会丢失..对于你要通过的案例从一项活动到另一项活动的数据,您必须使用本项。
如果您正在谈论应该为少数活动服务的数据,而且它们来自DB / Another数据源。在这种情况下,这与android无关,数据应作为java中的标准体系结构处理
希望有意义