我们说我们正处于一种方法的中间。我可以选择两种编程风格。
选项A:每次需要访问资源时都使用getContext().getResources()
public void doSomeStuffA(){
//...
getContext().getResources().getDrawable(R.drawable.ic_launcher);
getContext().getResources().getDrawable(R.drawable.ic_arrow); //...
}
选项B :将getContext().getResources()
存储在变量中。
public void doSomeStuffB(){
//...
Resources r = getContext().getResources();
r.getDrawable(R.drawable.ic_launcher);
r.getDrawable(R.drawable.ic_arrow);
//...
}
哪种风格更好?
答案 0 :(得分:3)
在性能和调优方面如此之多,正确答案是“它取决于”。 99%的情况下,额外的散列图解除引用与变量引用之间的差异并不是最大(甚至是显着)的性能问题。诀窍是要了解它何时可能是一个问题(例如在紧密循环中频繁调用)。
在单一方法中,我倾向于使用选项B主要是为了可读性。
答案 1 :(得分:1)
作为一般惯例(特别不是这种情况)
使用选项A:
资源不断变化,您需要最新的资源价值。
如果您只在资源上调用一次方法。
使用选项B:
答案 2 :(得分:0)
使用Kotlin使一切都整洁干净)
fun someFun() {
with(getContext()) {
var d1 = getDrawable(R.drawable.ic1)
val d2 = getDrawable(R.drawable.ic2)
...
}
}