android memory-leaks static weak-references inner-classes

Android Weak Reference of Inner Class



memory-leaks static (1)

Si solo usa el objeto Adapter dentro de la actividad GalleryVideo , no necesita usar una referencia débil.

El fragmento de código tiene seguridad de memoria, pero depende de lo que haga con los objetos que se encuentran fuera de ese fragmento, sin importar si su aplicación es o no.

Solo asegúrese de que ningún objeto creado dentro de una Actividad que tenga una referencia a esa Actividad (que incluye especialmente clases internas no estáticas y clases anónimas) abandone la Actividad.

He revisado el artículo http://developer.android.com/resources/articles/avoiding-memory-leaks.html . En este artículo, se sugiere usar clase interna estática con referencia débil.

public class GalleryVideo extends Activity { private int AUDIO_NO = 1; ........................... ................ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gallery = (Gallery) findViewById(R.id.examplegallery); gallery.setAdapter(new AddImgAdp(this)); } static public class AddImgAdp extends BaseAdapter { private int GalItemBg; private Context cont; private WeakReference<GalleryVideo> mGalleryVideo; public AddImgAdp(Context c) { mGalleryVideo = new WeakReference<GalleryVideo>(c); TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme); GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0); typArray.recycle(); } public long getItemId(int position) { final GalleryVideo galleryVideo = mGalleryVideo.get(); if(galleryVideo == null){ if(galleryVideo.AUDIO_NO==4){ .................. ............... } } } } }

¿Es la forma correcta de clase interna con ref débil? ¿Es la memoria de código anterior a prueba de fugas?