Ошибка Android Outofmemory, внешняя память - PullRequest
1 голос
/ 18 августа 2011

Я создал эмулятор с ядром Android 2.2 и максимальным размером кучи виртуальной машины = 24Mb.Когда действие выполняется на нем, logcat показывает ошибку outofmemory:

"861984-byte external allocation too larger for this process"

Могу ли я узнать, что здесь означает "внешнее распределение" ?Это "внешняя память" ?Это действие вызывает setContentView(R.layout.main).

Макет main.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/login_bg"
>
<ImageView  
android:layout_width="190dp" 
android:layout_height="50dp" 
android:scaleType = "fitXY"
android:layout_gravity="center"
android:src="@drawable/login_btn_fb"
android:id="@+id/facebookconnect"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility = "visible"
android:src="@drawable/splash"
android:scaleType = "fitXY"
android:id="@+id/splashscreen"
/>
</FrameLayout>

Размер изображения splash.png равен 640*960

До Сота пиксельные данные изображения сохранялись в «родной памяти» .Является ли «родной памятью» такой же, как «внешней памятью» ?

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

каждый раз, когда вы загружаете новое изображение, устанавливаете свой viewview равным нулю. Или используйте метод recycle () для вашего объекта imageview каждый раз, когда вы загружаете новое изображение

0 голосов
/ 17 февраля 2012

Читать это . Я решил проблему с памятью в вызове setContentView, создав собственную тему (используя мозаичное рисование) вместо использования темы Android по умолчанию, а затем установив большое изображение в качестве фона, что вызвало перерисовку макета, что приводит к расточительству как памяти, так и процессора спектакль.

...