@ -18,7 +18,7 @@ public class ContextLeaks extends Activity {
static Object sFld ;
static Object sFld ;
public void directLeak ( ) {
void directLeak ( ) {
sFld = this ;
sFld = this ;
}
}
@ -48,7 +48,8 @@ public class ContextLeaks extends Activity {
o . f = null ;
o . f = null ;
}
}
class NonStaticInner { }
class NonStaticInner {
}
public void nonStaticInnerClassLeak ( ) {
public void nonStaticInnerClassLeak ( ) {
sFld = new NonStaticInner ( ) ;
sFld = new NonStaticInner ( ) ;
@ -76,24 +77,28 @@ public class ContextLeaks extends Activity {
}
}
public static Singleton getInstance ( Context context ) {
public static Singleton getInstance ( Context context ) {
if ( instance = = null ) {
if ( instance = = null ) {
instance = new Singleton ( context ) ;
instance = new Singleton ( context ) ;
}
}
return instance ;
return instance ;
}
}
}
}
Singleton singletonLeak ( ) {
public Singleton singletonLeak ( ) {
return Singleton . getInstance ( this ) ;
return Singleton . getInstance ( this ) ;
}
}
Singleton singletonNoLeak ( ) {
public Singleton singletonNoLeak ( ) {
return Singleton . getInstance ( this . getApplicationContext ( ) ) ;
return Singleton . getInstance ( this . getApplicationContext ( ) ) ;
}
}
private Handler handler = new Handler ( ) ;
private Handler handler = new Handler ( ) ;
public void handlerLeak ( ) {
public void indirectHandlerLeak ( ) {
handlerLeak ( ) ;
}
private void handlerLeak ( ) {
Runnable r =
Runnable r =
new Runnable ( ) {
new Runnable ( ) {
public void run ( ) {
public void run ( ) {