Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

OutOfMemoryError

Das Thema "OutOfMemoryError" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 06.01.2012, 15:57   #1 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Bobert

Modell: Nexus S

Registriert seit: 21.11.2010
Beiträge: 162
Abgegebene Danke: 9
Erhielt 15 Danke für 15 Beiträge
Standard OutOfMemoryError

Hallo,

ich habe das Problem, dass ich irgendwann die folgende Fehlermeldung bekomme:"java.lang.OutOfMemoryError: bitmap size exceeds VM budget"

Der Fehler tritt nach einer gewissen Zeit auf, wenn ich von der einen Seite auf die andere Seite wechsele, und je nach Größe der Bilder früher oder später (z.B. 100kb Bilder 30-40 wechseln).

Folgendes hat mir leider nicht weiter geholfen!
android - java.lang.OutOfMemoryError: bitmap size exceeds VM budget - Stack Overflow
image - Android: Strange out of memory issue - Stack Overflow

Kennt einer von euch einen Workaround oder was habe ich übersehen!?

Danke Bobert

Code:
package your.namespace;

import android.app.Activity;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class LoadFromSDActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        ((ImageView)findViewById(R.id.imageView1)).setImageBitmap(BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/IMG1.png"));        
        findViewById(R.id.imageView1).setOnClickListener(this);        
    }

    @Override
    public void onClick(View v) {
        startActivity(new Intent(this, LoadImages.class));        
    }
}
Code:
package your.namespace;

import android.app.Activity;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class LoadImages extends Activity implements OnClickListener{
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.load_image);
             
        ((ImageView)findViewById(R.id.imageView1)).setImageBitmap(BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/IMG2.png"));        
        findViewById(R.id.imageView1).setOnClickListener(this);       
    }

    @Override
    public void onClick(View v) {
        startActivity(new Intent(this, LoadFromSDActivity.class));
    }
}
Bobert ist offline   Mit Zitat antworten
Alt 06.01.2012, 16:08   #2 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: OutOfMemoryError

Also du darfst die Bilder auf keinen Fall alle gleichzeitig laden.

Lad nur die, die du auch gerade anzeigen willst.
Nicht benötigte Bilder mit bitmap.recycle() wieder frei geben. (Das wird wieder zu anderen Problemen führen, aber thats the way...)
Unicate ist offline   Mit Zitat antworten
Alt 06.01.2012, 16:23   #3 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Bobert

Modell: Nexus S

Registriert seit: 21.11.2010
Beiträge: 162
Abgegebene Danke: 9
Erhielt 15 Danke für 15 Beiträge
Beitrag AW: OutOfMemoryError

Danke, aber wie soll ich bitmap.recycle() in meinen Beispiel machen?

Code:
    @Override
    protected void onStop() {
        super.onStop();
       // ((ImageView)findViewById(R.id.imageView1)). ??        
    }
?
Bobert ist offline   Mit Zitat antworten
Alt 06.01.2012, 16:49   #4 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard

Wenn du von der view ais nicht mehr an das bitmap Objekt selbst kommst, versuche dir vorher einen Verweis auf dieses zu sichern . BitmapFactory.decode liefert diese zurück.
Wenns bloss die eine ist könntest du z.b. ne membervariable verwenden.

Gesendet von meinem Desire HD mit Tapatalk
Unicate ist offline   Mit Zitat antworten
Alt 06.01.2012, 17:03   #5 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus S

Registriert seit: 30.09.2011
Beiträge: 137
Abgegebene Danke: 8
Erhielt 35 Danke für 33 Beiträge
Standard AW: OutOfMemoryError

Hast du im Manifest für für die beiden Activities android:launchMode="singleTask" eingetragen?
Das sieht so aus als würdest du einen riesigen Rattenschwanz an Instanzen erzeugen.
strider ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei strider für diesen Beitrag:
Bobert (06.01.2012)
Alt 06.01.2012, 18:47   #6 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Bobert

Modell: Nexus S

Registriert seit: 21.11.2010
Beiträge: 162
Abgegebene Danke: 9
Erhielt 15 Danke für 15 Beiträge
Standard AW: OutOfMemoryError

Hallo strider,

es sieht so aus, dass mit android:launchMode="singleTask" bzw. android:launchMode="singleInstance" das Problem beseitigt ist. Jetzt muss ich mal schauen, ob ich mir nicht ein neues eingehandelt habe damit?!

Ich werde berichten, aber ich danke Euch schon (strider + Unicate) mal!

Grüße Bobert

Geändert von Bobert (06.01.2012 um 20:56 Uhr)
Bobert ist offline   Mit Zitat antworten
Alt 06.01.2012, 21:58   #7 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus S

Registriert seit: 30.09.2011
Beiträge: 137
Abgegebene Danke: 8
Erhielt 35 Danke für 33 Beiträge
Standard AW: OutOfMemoryError

Gern geschehen und viel Erfolg!
strider ist offline   Mit Zitat antworten
Alt 07.01.2012, 01:16   #8 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: OutOfMemoryError

[Edit:] Es war spät, das war Mist!
Unicate ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
java.lang.OutOfMemoryError während des Builds dereulenspiegel Android App Entwicklung 3 14.03.2010 19:41




Du liest gerade: "OutOfMemoryError" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.