【问题标题】:Which of the two code is better on memory basis?这两个代码中哪一个在内存基础上更好?
【发布时间】:2017-01-27 15:00:37
【问题描述】:

我正在从 Udacity 的一门课程中学习 android 开发。当我在学习第 2 课时,出现了一种情况,我们必须创建多个 Textview,从之前创建的字符串 ArrayList 设置文本并添加这些 Textview到线性布局。

常用代码:

 ArrayList<String> words = new ArrayList<String>();
    words.add("one");
    words.add("two");
    words.add("three");
    words.add("four");
    words.add("five");
    words.add("six");
    words.add("seven");
    words.add("eight");
    words.add("nine");
    words.add("ten");
    LinearLayout rootView =(LinearLayout) findViewById(R.id.rootView);

现在他们做了什么:

for(int i=0;i<10;i++){
TextView wordView=new TextView(this);
wordView.setText(words.get(i));
rootView.addView(wordView);
 }

我做了什么:

ArrayList<TextView> wordView = new ArrayList<TextView>();
    for(int i=0;i<10;i++)
    {
        wordView.add(new TextView(this));
        wordView.get(i).setText(words.get(i));
        rootView.addView(wordView.get(i));


    }

现在,我的问题是,我处理任务的方式比他们的方式有更多的内存开销?

我觉得我的代码更好,因为即使在循环之后我也引用了每个 TextView

【问题讨论】:

    标签: android for-loop arraylist textview


    【解决方案1】:

    没有区别。在这两种情况下,TextView 实例都无法被垃圾回收,因此内存占用量相等。

    因为即使在循环之后我也引用了每个 TextView。

    如果您真的不需要这些参考资料,那么它就是毫无意义的。这不是内存相关的优势。

    【讨论】:

      【解决方案2】:

      您的代码看起来不错。但我认为拥有 10 个相同的 TextView 没有任何意义。如果您将它用作列表并考虑优化代码,我会考虑使用 listView 或 recyclerView。

      但是你的代码还是没问题的。

      【讨论】:

      • I would consider using a listView or recyclerView 但是每一行都是一个单独的TextView,所以......那会是什么优化?此外,除了单行之外,您还有一个 ViewGroup。
      • ListViews 针对显示项目列表进行了优化。所以有了内存,这些行就被重用了。
      【解决方案3】:

      性能无关紧要。就像你说的:

      我觉得我的代码更好,因为即使在循环之后我也引用了每个 TextView。

      如果你需要,那就去做吧..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-05
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多