1.我有TextView
,ID为textView1
岛
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText("Hellow World");
或不创建电视,
((TextView) findViewById(R.id.textView1)).setText("Hellow World");
II。
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText("Hellow World");
tv.setTextSize(someValue);
tv.setTag("title");
或
((TextView) findViewById(R.id.textView1)).setText("Hellow World");
((TextView) findViewById(R.id.textView1)).setTextSize(someValue);
((TextView) findViewById(R.id.textView1)).setTag("title");
哪种方法在两种情况下都很好,差异是什么。
2.similerly我有String childName
需要从3种方法访问
i。我可以创建一个字段变量childName
,可以从所有3种方法中访问
ii。通过每种方法传递变量,例如,
setChildFragment(childName);
in
public setChildFragment(String childName){
.
.
.
setChildView(childName);
}
和in,
public setChildView(String childName){
.
.
.
setChildTitle(childName);
}
最后在textview中,
public setChildTitle(String childName){
((TextView) findViewById(R.id.title)).setText("Hellow World");
}
哪种方法更好,为什么!!!
感谢提前
答案 0 :(得分:1)
对于第一部分坦率地说,您的方法i
和ii
之间的唯一区别是,由于ii
没有TextView对象的引用,因此可能会尽快收集GC,尽管您可以通过在tv=null;
使用后编写i
来实现相同目的。但无论如何,差异并不显着。
对于第二部分,最好存储对任何视图的引用,然后在其上调用方法而不是重复调用findViewById(R.id.textView1)
,这是一个昂贵的操作,因为它导致布局树遍历,并且可以是如果布局很大或很复杂,性能会受到影响。所以在这种情况下i
更好。
第三部分再次不会产生任何明显的性能差异,因为引用变量或将它们作为函数参数传递不是主要的性能问题。
要提高应用性能,请考虑正确设计布局,并使用Android doc Read this中的良好做法获取更多信息
答案 1 :(得分:0)
您可以使用以下实现,即
((TextView) findViewById(R.id.textView1)).setText("Hellow World");
如果该值仅设置一次,则无需再次调用它。
但是就像你的情况一样,你在函数下面调用了3次,
public setChildTitle(String childName){
((TextView) findViewById(R.id.title)).setText("Hellow World");
}
因此,如果您在调用setChildTitle时采用此方法,TextView将一次又一次地初始化。相反,在onCreate函数中全局一次,您可以使用下面的方法对其进行初始化,然后在setChildTitle函数中将textView的setText函数调用为setText。
TextView tv = (TextView) findViewById(R.id.textView1);