内部类:Android与Java

前端之家收集整理的这篇文章主要介绍了内部类:Android与Java前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道 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的生命周期之外的对象,您应该没问题.但它确实可能通过内部阶级泄露您的活动.

猜你在找的Android相关文章