Autore Topic: GC - LayoutInflater  (Letto 310 volte)

Offline LinkOut

  • Utente normale
  • ***
  • Post: 269
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
GC - LayoutInflater
« il: 18 Maggio 2015, 13:45:07 CEST »
0
Presupponendo di avere un'activity con un LinearLayout (vertical) che fa da container e di "infilare" i layout usando LayoutInflater.

Abbiamo dunque, il seguente metodo (esempio)

Codice (Java): [Seleziona]
 private void testInflater() {
        LayoutInflater lf = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View testView = lf.inflate(R.layout.test_layout, null);

        TestClass testClass = new TestClass(testView, this);
        testClass.init();

        View insertPoint = findViewById(R.id.linearContent);
        ((ViewGroup) insertPoint).addView(testView , new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
    }

Domandiamo quindi ad un'altra classe (TestClass) di occuparsi dell'inserimento dei contenuti all'interno della nostra view(quella presa dal test_layout);

Questa classe dunque si presenterà così:

Codice (Java): [Seleziona]
public class TestClass {

    private View mView;
    private Context mContext;

    public TestClass (View view,Context context) {
        this.mView = view;
        this.mContext = context;
    }

    public void init () {
        ImageView imgFotoGallery1 = (ImageView) mView.findViewById(R.id.img1);
        ImageView imgFotoGallery2 = (ImageView) mView.findViewById(R.id.img2);
        ImageView imgFotoGallery3 = (ImageView) mView.findViewById(R.id.img3);

        // usiamo poi i riferimenti per settare alcune immagini...
               
    }
}

La mia domanda è : il metodo testInflater viene chiamato da un Activity, una volta che quest'ultima viene distrutta, perchè rimangono i riferimenti alle ImageView? Questo perchè, la memoria utilizzata da quelle immagini non viene liberata.


Grazie.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1186
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:GC - LayoutInflater
« Risposta #1 il: 18 Maggio 2015, 14:50:34 CEST »
0
Se non vai l' override di onDestroy() non viene chiamato niente

Offline LinkOut

  • Utente normale
  • ***
  • Post: 269
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:GC - LayoutInflater
« Risposta #2 il: 18 Maggio 2015, 14:58:26 CEST »
0
Se non vai l' override di onDestroy() non viene chiamato niente

Non capisco il senso della tua frase, quando l'Activity si distrugge, viene invocato il metodo onDestroy(), questo sì.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1186
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:GC - LayoutInflater
« Risposta #3 il: 18 Maggio 2015, 15:05:17 CEST »
0
Hai chiesto se alla chiusura della activity viene chiamato il metodo testInflater. O sbaglio?