dro*_*dev 2 memory android local-variables member-variables android-view
假设我有一个活动,它包含一个TextView.我可以将TextView初始化为成员变量或局部变量.这些与初始化之间有任何记忆明智的区别吗?
示例: 具有本地视图引用的活动:
public class MainActivity extends Activity{
@OVerride
public void onCreate(Bundle b){
TextView textView = (TextView)findViewById(R.id.my_text_view_id);
}
}
Run Code Online (Sandbox Code Playgroud)
成员视图参考的活动:
public class MainActivity extends Activity{
TextView mTextView;
@OVerride
public void onCreate(Bundle b){
mTextView = (TextView)findViewById(R.id.my_text_view_id);
}
}
Run Code Online (Sandbox Code Playgroud)
您应该始终使用最小范围.因此,当您声明变量时,您应该问自己:
" 我以后会在另一个函数中需要这个变量吗? "
是 - >使用成员变量
否 - >使用局部变量
编辑:
还要考虑的是对象创建的成本:
如果一个函数被重复调用,最好只对对象进行一次实例化,将其存储为成员变量并重新使用它,而不是每次调用该函数时都创建一个新实例.
所以第二个重要问题是:
" 这个函数会被调用很多,我真的需要一个存储在变量中的对象的新实例吗? "
是的,经常,不,我可以重复使用相同的对象 - >使用成员变量.这样就可以使用相同的内存,也不会堆积垃圾.仅用于大型数组或对象,循环中的简单int变量不需要它.