У меня есть самое простое приложение. в котором нет тяжелого программирования. У меня есть 2 действия, и я перехожу от одного действия к другому, например, я перехожу к действию 2 из действия 1, а затем возвращаюсь к действию 1 из действия 2.
Делая это несколько раз, я получаю ошибку OOM, и в это время происходит сбой приложения. Я понятия не имею, почему это происходит, просто устанавливая фоновое изображение и кнопку в Activity1, а в Activity2 есть только фоновое изображение, а также представление изображения и одна кнопка
Возвращаясь назад, я уничтожаю Activity2, используя метод onDestroy, и использую этот метод также в Activity1, но он все еще не работает, чтобы освободить память.
Вот полная трассировка стека
Обновление 1:
Добавление моих XML-файлов Xml первого действия
Activity2 с именем MainActivity
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.efu.myproject.FirstActivity"
android:background="@drawable/bg_enter_the_book">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:id="@+id/lLayout"
android:padding="10dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:background="@drawable/btn_next"
android:onClick="EnterTheJungleBookButton"
android:text=" "
android:visibility="invisible"
android:layout_marginBottom="20dp"/>
</LinearLayout>
</RelativeLayout>
Также у меня есть статический класс, который содержит ресурсы моего приложения, и я извлекаю эти ресурсы, например, из этого статического класса.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
tools:context="com.efu.myproject.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:src="@drawable/bg_anim_name"
android:id="@+id/iv_anim_name"/>
<TextView
android:id="@+id/tv_anim_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerHorizontal="true"
android:keepScreenOn="true"
android:text="@string/dummy_content"
android:textColor="#ffffff"
android:textSize="@dimen/tv_anim_name"
android:textStyle="bold"
android:layout_above="@+id/tv_empty"/>
<TextView
android:id="@+id/tv_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerHorizontal="true"
android:keepScreenOn="true"
android:text="sdasdasd"
android:visibility="invisible"
android:textColor="#33b5e5"
android:textSize="@dimen/tv_empty"
android:layout_alignBaseline="@+id/iv_anim_name"
android:layout_alignBottom="@+id/iv_anim_name"
android:textStyle="bold"
/>
</RelativeLayout>
<ImageView
android:id="@+id/iv_anim_pic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:maxHeight="@dimen/iv_anim_pic_height"
android:src="@drawable/ic_launcher" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom|center_horizontal"
android:fitsSystemWindows="true">
<RelativeLayout
android:id="@+id/fullscreen_content_controls"
style="?metaButtonBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:orientation="horizontal"
tools:ignore="UselessParent">
<Button
android:id="@+id/btn_next"
style="?metaButtonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_next"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
</FrameLayout>
</RelativeLayout>
вот мой тот класс, который содержит ресурсы
ivAnimPicture.setImageResource(NextResource.getPicture(anyRandomNum));
Так что мне делать? Где мои ошибки?
public class NextResource {
static int[] animPics = {R.drawable.anteater,R.drawable.antelope,R.drawable.bear,
R.drawable.bird,R.drawable.cat,R.drawable.chicken,R.drawable.cow,R.drawable.dog,
R.drawable.duck,R.drawable.elephant,R.drawable.fox,
R.drawable.frog,R.drawable.impala,R.drawable.lion,R.drawable.monkey,R.drawable.ostrich,
R.drawable.panda,R.drawable.penguin,R.drawable.rabbit,
R.drawable.sheep,R.drawable.tiger,R.drawable.vulture,R.drawable.zebra};
static String[] animName = {"Anteater","Antelope","Bear","Parrot","Cat","Chicken","Cow","Dog",
"Duck","Elephant","Fox","Frog","Impala","Lion","Monkey","Ostrich",
"Panda","Penguin","Rabbit","Sheep","Tiger","Vulture","Zebra"};
// public static int [] animSound = {R.raw.ballon,R.raw.billi,R.raw.carrot,
// R.raw.fountain,R.raw.horse,R.raw.huka,R.raw.sparrow,R.raw.tea};
public static int [] animSound = {R.raw.anteater,R.raw.antelope,R.raw.bear,
R.raw.parrot,R.raw.cat,R.raw.chicken,R.raw.cow,R.raw.dog,
R.raw.duck,R.raw.elephant,R.raw.fox,
R.raw.frog,R.raw.impala,R.raw.lion,R.raw.monkey,R.raw.ostrich,
R.raw.panda,R.raw.penguin,R.raw.fox,
R.raw.sheep,R.raw.tiger,R.raw.vulture,R.raw.zebra};
public static int getPicture(int i){
return animPics[i];
}
public static int getSound(int i){
return animSound[i];
}
public static String getName(int i){
return animName[i];
}
}
Поскольку я использую класс NextResource Static для извлечения своих ресурсов, является ли это реальной причиной получения памяти снова и снова, а не освобождения памяти?
Изменить2
Согласно журналу, опубликованному выше, эта ошибка возникает из-за ошибки в вашем макете. пожалуйста, проверьте свой макет один раз или опубликуйте свой код, чтобы быть более понятным. Или в вашей деятельности выполняется какая-либо фоновая задача, где вам нужно было загрузить какое-либо изображение?
@Override
protected void onDestroy() {
if (tts != null) {
tts.stop();//tts is Text To Speech whcih I am using
tts.shutdown();
}
ivAnimPicture = null; //this is the Imageview to show random pics
secureRandom = null;
mAccelerometer = null;
mSensorManager = null;
mShakeDetector = null;
tvAnimName = null;
btnNext = null;
random = null;
mediaPlayer = null;
map = null;
super.onDestroy();
}