Как выпустить изображения и избежать outOfMemory exc-n при переходе между действиями [android]

У меня есть приложение для детей - 18 страниц, каждая страница представляет собой действие с фоновым изображением, рассказом и звуком для каждого слова (textView) в рассказе и некоторыми анимациями.

Я замечаю, что когда я перехожу на следующую страницу, потребляется память;

он также расходуется, когда я возвращаюсь на предыдущую страницу (активность)! Я получаю исключение outOfMemory, когда приложение достигает около 182 МБ — это может произойти в любое время.

r

  • Как выпустить изображения, если изображение является фоном для RelativeLayout на каждой странице?

  • каждый раз, когда я перехожу на следующую страницу, предыдущая уничтожается - не должны ли загружаемые изображения также освобождаться из памяти?

    public class Page8 extends Activity{
    ImageView forward ;
    ImageView backward ;
    RelativeLayout main ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    super.onCreate(savedInstanceState);
    setContentView(R.layout.page8);
    forward = (ImageView)findViewById(R.id.to_page_9);
    backward = (ImageView)findViewById(R.id.to_page_7);
    forward.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() != MotionEvent.ACTION_DOWN) return false;
            Intent intent = new Intent(Page8.this, Page9.class);
            startActivity(intent);
            return true;
        }
    });
    backward.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() != MotionEvent.ACTION_DOWN) return false;
            Intent intent = new Intent(Page8.this, Page7.class);
            startActivity(intent);
            return true;
        }
    });
    }
       @Override
       public void onStop(){
       main = (RelativeLayout)findViewById(R.id.main) ;
       main.releaseMemory()?;
    
      }
     }
    

person ERJAN    schedule 10.06.2015    source источник
comment
как вы загружаете изображение в ImageView? Вы используете какую-либо библиотеку загрузчика изображений?   -  person Dhrumil Shah - dhuma1981    schedule 10.06.2015
comment
@ dhuma1981, нет, я просто делаю в xml, src = @drawable/...   -  person ERJAN    schedule 10.06.2015
comment
Не делайте этого, используйте любую библиотеку загрузчика изображений, они позаботятся о проблеме с памятью.   -  person Dhrumil Shah - dhuma1981    schedule 10.06.2015


Ответы (1)


Я думаю, что у вас есть HD-изображения, вы должны оптимизировать изображения и уменьшить их масштаб.

person NullByte    schedule 10.06.2015
comment
как их уменьшить? Вы имеете в виду сделать их точно такого же размера в пикселях, как мой планшет? - person ERJAN; 10.06.2015
comment
Вы должны проверить размер экрана устройства, в соответствии с шириной экрана по высоте с сохранением соотношения сторон изображения. Вы можете динамически уменьшать изображения, не добавляйте их в xml, добавляйте их в код, проверьте эту ссылку, чтобы оптимизировать растровые изображения, developer.android.com/training/displaying-bitmaps/ - person NullByte; 10.06.2015