Bild in hoher Auflösung - OutOfMemoryError

Ich entwickle eine Anwendung für das Galaxy S4.
Eine der Anforderungen der Anwendung ein SplashScreen mit einem Bild von 1920x1080 Pixel. Es ist eine hohe Qualität .jpeg-Bild und die Größe des Bildes ist ungefähr 2 Megabyte.

Das problem ist, dass ich immer ein OutOfMemoryError sobald ich die Anwendung starten. Ich bin ziemlich fassungslos, dass dies bereits geschieht, mit einem Bild nur 2 MB groß ist? Wie kann ich dieses problem beheben und zeigt das Bild?

Änderung der Größe oder die Größe des Bildes ist nicht eine option.

SplashScreen.java

public class Splashscreen extends Activity {

private static final int SPLASH_DURATION = 2000;
private boolean isBackPressed = false; 

@Override
protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN, LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splashscreen);

    Handler h = new Handler();

    h.postDelayed(new Runnable() {

        @Override
        public void run() {

            //check if the backbutton has been pressed within the splash_duration
            if(!isBackPressed) { 

                Intent i = new Intent(Splashscreen.this, MainActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                Splashscreen.this.startActivity(i);
                overridePendingTransition(R.anim.short_fade_in, R.anim.short_fade_out);
            }       

            finish();
        }
    }, SPLASH_DURATION);
}

@Override
public void onBackPressed() {

    isBackPressed = true;
    super.onBackPressed();
}
}

Und die splashscreen.xml

    <ImageView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ivSplashScreenImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:scaleType="fitXY"
        android:src="@drawable/high_res_splashscreen_image"/>

ZUSÄTZLICHE INFORMATIONEN:

Manchmal (wenn viel Speicher des Gerätes verfügbar) die app ist in der Lage, um es vorbei an der splash-screen, aber dann, den Speicherverbrauch der app ist einfach der Wahnsinn. (rund 100 megabyte). Obwohl ich in der Nähe der SplashScreen-Activity und finish (), scheint es, dass es einen Verweis auf die Bildansicht /das Bild im Speicher gehalten.

Wie kann ich reduzieren, die großen Speicherbedarf?

Wenn ich nicht die Anzeige des splash-screen, die app verbraucht nur rund 35 MB
der Speicher. Mit der SplashScreen-image, das rund 100 MB.

InformationsquelleAutor der Frage Philipp Jahoda | 2013-08-22

Schreibe einen Kommentar