2016-04-29 6 views
0

Meine App besteht aus 4 Layout-Dateien, jedes Layout verwendet ein anderes Bild als Hintergrund. Ich lade Layout 1 und 2, aber nachdem ich zu Layout 3 gehe ich bekomme Fehler "verursacht durch: java.lang.OutOfMemoryError"Wie lösche ich Speicher von Bildern früherer Layouts? Wie wird der Speicher bei verschiedenen Layouts/Aktivitäten gereinigt?

Ich vermute, es ist, weil das Layout 1 und Layout 2 noch im Speicher ist. Gibt es eine Möglichkeit, den Speicher jedes Mal zu reinigen, wenn ich ein neues Layout anwähle, damit mir nicht der Speicher ausgeht? Vielen Dank.

P.S Ich benutze Android Studio. 2

PS Ich bin nicht sicher, ob dies alles ändert sich aber nur für den Fall das ist, wie ich gehe zu verschiedenen Aktivitäten/Layouts:

previouspage.setOnClickListener(
       new Button.OnClickListener() { 
        public void onClick(View v) { 
         Intent intent = new Intent(v.getContext(), secondPage.class); 
         startActivity(intent); 
        } 
       } 
     ); 

     nextpage.setOnClickListener(
       new Button.OnClickListener() { 
        public void onClick(View v) { 
         Intent intent = new Intent(v.getContext(), FourthPage.class); 
         startActivity(intent); 
        } 
       } 
     ); 

Antwort

2
new Button.OnClickListener() { 
     public void onClick(View v) { 
     Intent intent = new Intent(v.getContext(), secondPage.class); 
     startActivity(intent); 

     yourExistingActivity.finish(); // This will free the memory 

} 

Beachten Sie, dass die Aktivität Sie die Ziel sind Aufruf() Methode von ist zerstört und ALL ihre Ressourcen sind Warteschlange für Garbage Collection, und der gesamte Speicher, der von dieser Aktivität verwendet wurde, wird während nächsten GC-Zyklus freigegeben werden.

Wenn Sie wirklich wollen den Speicher zu widerrufen, so schnell wie möglich, außer Kraft setzen Ihre Aktivitäten onDestroy Methode:

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    Runtime.getRuntime().gc();  
} 
Verwandte Themen