android - View 引用成员变量和局部变量的区别

标签 android memory android-view local-variables member-variables

假设我有一个 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/

相关文章:

ruby - 为什么重复的 JSON 解析会消耗越来越多的内存?

ruby - 在 Ruby 中打印 N 个元素数组的 N 个第一个排列的有效方法

android - 防止 BottomSheetDialogFragment 覆盖导航栏

android - 从 xml 布局文件创建自定义 View 类的最佳方法?

Android - WebView 中来自 android_assets 的 html,CSS 未在 ICS 中加载

java - 在没有 Activity 的另一个类文件中使用 Toast 扩展了 Android

python - 配置 python

android - 查看绘制完成回调

android - 如何从应用程序 config.xml 中删除 `key` 和 `string` 以停止显示 AdMob?

android - 如何在 Android 服务中 ping 一个 URL?