可以静态引用查看内存泄漏吗?

Jay*_*ley 2 android memory-leaks

我是Android开发的新手,我读过有关在Android平台上避免内存泄漏的文章.我不确定,如果我的代码是......

public class TransactionDetailActivity extends Activity {

private Transaction transaction;

private TextView tvDetail; //static reference

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.screen_transaction_detail);

    tvDetail = (TextView) findViewById(R.id.detail); //init of reference
}
Run Code Online (Sandbox Code Playgroud)

这可以存储到静态引用中导致在切换其他活动后屏幕旋转后任何内存泄漏吗?如果是,我该如何避免呢?

非常感谢任何帮助!

Cri*_*ian 9

private TextView tvDetail; 不是静态参考.

private static TextView tvDetail;是一个静态参考,但它是不可取的.在这里你有一个解释:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

有时,我们开发人员将变量设置为静态以避免重新创建对象...在这种情况下类似这样:

// DON'T DO THIS! FOR THE LOVE OF GOD! 
if( tvDetail == null ){
    tvDetail = (TextView) findViewById(R.id.detail);
}
Run Code Online (Sandbox Code Playgroud)

但这在android开发中是错误的,因为每次onCreate调用该方法时,也会创建对UI元素的新引用.所以,试着避免上面的代码.

  • 我不认为在那篇文章中有足够的"为了上帝的爱而不做这件事",所以我想补充更多.不要那样做!停!没有!坏!不要对UI元素进行静态参考! (4认同)