gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:49:10 24 4
gpt4 key购买 nike

我真的是 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
}

在切换其他 Activity 时屏幕旋转后,这种存储到静态引用中是否会导致任何内存泄漏?如果是,我该如何避免?

非常感谢您的帮助!!!

最佳答案

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

关于android - 可以静态引用查看内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com