Высокое разрешение изображения - OutOfMemoryError
Я занимаюсь разработкой приложения для Galaxy S4. Одним из требований приложения является наличие SplashScreen, содержащего изображение1920x1080 пиксели. Это высокое качество изображения .jpeg и размер изображения составляет около2 мегабайта.
Проблема в том, что я получаюOutOfMemoryError как только я запускаю приложение. Я совершенно ошеломлен, что это уже происходит с изображением размером всего 2 мегабайта?Как я могу исправить эту проблему и отобразить изображение?
Изменение размеров или размера изображения не вариант.
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();
}
}
И splashscreen.xml
<ImageView
xmlns:and,roid="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"/>
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Иногда (когда доступно много памяти устройства) приложение может выйти за пределы заставки, но затемпотребление памяти приложения просто безумно. (около 100 мегабайт), Хотя я закрываю SplashScreen Activity и заканчиваю (), кажется, чтоссылка на ImageView / Изображение, хранящееся в памяти.
Как я могу уменьшить огромное потребление памяти?
Когда я не отображаю заставку, мое приложение потребляет только около 35 МБ памяти. С изображением SplashScreen его около 100 МБ.