假设我有一个 Activity ,它包含一个 TextView。我可以将 TextView 初始化为成员变量或局部变量。这些与初始化之间在内存方面有什么区别吗?
例子: 具有本地 View 引用的 Activity :
public class MainActivity extends Activity{
@OVerride
public void onCreate(Bundle b){
TextView textView = (TextView)findViewById(R.id.my_text_view_id);
}
}
具有成员 View 引用的 Activity :
public class MainActivity extends Activity{
TextView mTextView;
@OVerride
public void onCreate(Bundle b){
mTextView = (TextView)findViewById(R.id.my_text_view_id);
}
}
最佳答案
您应该始终使用最小 范围。所以当你声明一个变量时你应该问问自己:
“我以后在不同的函数中需要这个变量吗?”
是 -> 使用成员变量
否 -> 使用局部变量
编辑:
还要考虑对象创建的成本:
如果函数确实被重复调用,最好只实例化一个对象一次,将其存储为成员变量并重用它,而不是每次调用函数时都创建一个新实例。
所以第二个重要的问题是:
“这个函数会被调用很多吗,我真的需要一个存储在变量中的对象的新实例吗?”
是的,经常,但不是,我可以重复使用同一个对象 -> 使用成员变量。这样可以使用相同的内存并且不会堆积垃圾。仅用于大型数组或对象,循环中的简单 int 变量不需要它。
关于android - View 引用成员变量和局部变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35171465/