gpt4 book ai didi

java - 内部类 : Android vs Java

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:46 25 4
gpt4 key购买 nike

我知道在 Android 中不推荐使用内部类,因为它们持有对封闭类的引用。然而,在 Java 中,外部类只有在内部类不再被引用时才会被 GC。这意味着,在 Android 中,如果您在外部 Activity 类中有一个对内部类的非静态引用,则内部类的存在时间不能比外部 Activity 类长,因为 Activity 只有在不持有引用时才会被销毁到内部类了(至少这是我的推断)。那么使用非静态内部类的问题是什么(因为如果您从 java 推断它们显然不能比外部 Activity 存在更长的时间)?我错过了什么吗?

谢谢!

最佳答案

考虑这个简单的例子

class Leaker 
{
public static Object leakedObj;
}

class MyActivity extends Activity
{
public class MyInnerClass { ... }

void onCreate(Bundle savedState)
{
Leaker.leakedObj = new MyInnerClass();
//The activity now won't be GCed until Leaker.leakedObj is cleared.
}
}

您可以轻松地在 Activity 上下文之外传递内部非静态类。只要您不将内部类传递给 Activity 生命周期之外的对象,就应该没问题。但肯定有可能通过内部类泄露您的 Activity 。

关于java - 内部类 : Android vs Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10112163/

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