我是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
}
这可以存储到静态引用中导致屏幕旋转后切换其他活动时是否有任何内存泄漏?如果是,我该如何避免呢?
非常感谢您的帮助!!!
答案 0 :(得分: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);
}
但这在android开发中是错误的,因为每次调用onCreate
方法时,都会创建对UI元素的新引用。所以,试着避免上面的代码。