我对android开发非常陌生,我读过关于android平台上Avoiding Memory Leaks的文章。我不确定,如果我的代码…

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
}

在切换其他活动时,屏幕旋转后,存储到静态引用中是否会导致内存泄漏?如果是的话,我怎样才能避免呢?
非常感谢你的帮助!!!!

最佳答案

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);
}

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

09-26 09:03