Android: riferimenti a un context e perdite di memory

Ho letto che è un errore e una fonte di perdite di memory nell'applicazione Android per mantenere un riferimento a lungo termine a un context.

Ma non capisco se è giusto creare una class simile a questa:

  • API di ricerche di immagini inversa di Google
  • java.lang.StringIndexOutOfBoundsException durante la riproduzione di video in videoView: Android v 4.2.1
  • Ciclo di vita di un ViewPager e BackStack sostituito?
  • GetView Vs. BindView in un CursorAdapter personalizzato?
  • Come creare un'anteprima video in android?
  • Come posso fare uno schermo dinamico di scorrimento (come quello di iPhone) in Android?
  • public class HelperClass { private Context context; public HelperClass(Context context) { this.context = context; } public void myHelperMethod() { // uses this.context } } 

    E lo chiami da un'attività:

     public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { HelperClass h = new HelperClass(this); h.myHelperMethod(); } ... } 

  • Come call il metodo di service service di stopservice () dalla class di attività chiamante
  • Passare un valore per caricareURL - Android
  • Raccogliendo un'image da opere della Camera, ma non dal Gallario
  • Come cambiare il block di orientamento in android?
  • Come validationte il formato e i valori di EditTextPreference inseriti in Android 2.1?
  • Android Studio - La struttura del progetto è quasi vuota
  • 2 Solutions collect form web for “Android: riferimenti a un context e perdite di memory”

    Questo va bene e non causerà perdite di memory.

    Non appena la onCreate termina l'esecuzione, h sarà fuori field e diventa idoneo per la raccolta di rifiuti. Se h fosse statico, allora dovresti affrontare problemi. Solo quando il riferimento al context supera il ciclo di vita del context stesso si verificherà una perdita di memory. Alcuni consigli utili:

    • Utilizzare Context.getApplicationContext() quando ansible. Questo context continuerà a vivere fino a quando la tua applicazione è viva.
    • Fare attenzione quando si utilizzano campi statici e classi interne.
    • Esegui la tua applicazione tramite un profiler per verificare la perdita.

    Lo scopo di HelperClass è solo all'interno della function onCreate, quindi una volta creata l'esecuzione, l'object "h" non è più necessario e sobject a raccolta di rifiuti.

    Sarebbe una storia diversa se "h" fosse un membro statico – CHE sarebbe un ottimo modo per perdere la memory.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.