我知道
Android中不建议使用内部类,因为它们包含对封闭类的引用.但是,在Java中,外部类仅在不再引用内部类时进行GCed.这意味着,在Android中,如果外部活动类中的内部类具有非静态引用,则内部类的存在时间不能长于外部活动类,因为只有在不包含引用的情况下才能销毁该活动.再到内心阶级了(至少那是我所推断的).那么使用非静态内部类的问题是什么(因为如果从java推断它们显然不会比外部活动存在更长时间)?我错过了什么吗?
谢谢!
解决方法
考虑这个简单的例子
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的生命周期之外的对象,您应该没问题.但它确实可能通过内部阶级泄露您的活动.