2013-08-31 15 views
8

Ich weiß, dass die Frage aus der Erinnerung in Bezug auf bereits gefragt worden, aber ich fand keine LösungClearing Heap-Speicher für Nicht genügend Speicher Ausnahme

In Bitmap-Fabrik i out of memory Ausnahme bekam, auch verwenden

inSampleSize=1 

so verwende ich es durch try catch out of memory Ausnahme umgeben, da es eine schlechte Praxis ist

try{ 
    ......... 
    ...... 
}catch (OutOfMemoryError e) 
      {} 

aus auch gefangen Speicher Ausnahme aber meine questio n wird nach dieser Ausnahme gefangen werden wir

Clearing oder Neuzuteilung der Heap-Speicher von GC

ist es eine Lösung?

i verwenden

System.gc();

keine Verwendung bitte helfen !!!!!!!

not even Bitmap also for GridView Orientation 
i found this exception 
Clamp target GC heap from 17.333MB to 16.000MB 
Out of memory on a 140416-byte allocation. 
+0

Nur für "out of memory android" suchen, Sie wird viele Fragen mit jeder möglichen Lösung finden. – Simon

+0

mögliches Duplikat von [Strange out of memory issue beim Laden eines Bildes in ein Bitmap-Objekt] (http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image- to-a-bitmap-object) – Simon

+0

@Simon ya Ich habe gesehen, dass ich auch diesen Code benutze, aber das Bild, das zur Anzeige verwendet wird, wird verwackelt, nicht gut zu sehen –

Antwort

11

Nach 3 Tagen des Kampfes fand ich eine Lösung für die nicht steigende Speicher Heap von mit diesem

i mein Image alle wie diese

<com.example.util.SingleShotImageView 
        android:id="@+id/grid_image" 
        android:layout_width="170dp" 
        android:layout_height="240dp" 
        android:adjustViewBounds="true" 
        android:layout_centerInParent="true" 
        /> 

Mit dieser Klasse ersetzen Ich benutze, um die Bild Bitmap-Heap-Größe in onDetachedFromWindow Funktion

zu löschen
public class SingleShotImageView extends ImageView { 

    public SingleShotImageView(Context context) { 
     super(context); 
    } 

    public SingleShotImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public SingleShotImageView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected void onDetachedFromWindow() { 
     setImageDrawable(null); 
     setBackgroundDrawable(null); 
     setImageBitmap(null); 
     System.gc(); 
    } 

} 

jetzt funktioniert es gut und mein Heap-Speicher bleibt

wachsen Heap (frag Fall) 11.719MB für 8.192.016-Byte-Zuordnung

+0

Hallo, ich ändere meinen Code auf genau das, was du gesagt hast, aber das Problem ist onDetachedFromWindow() -Methode ruft niemals Aktivitäten während Aufrufe auf, wenn ich Fragmente ersetze! Meine App stürzt immer noch auf Aktivitäten ab. – Hesam

+0

Gute Lösung !! – Ganesh

+0

Oh Gott, ich brauche es, einige Nächte nicht zu finden Lösung, onDetachedFromWindow Methode Clean Custom ImageView – AndroSco

Verwandte Themen