我对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元素的新引用。所以,尽量避免上面的代码。