Приложение Android закрывается, когда памяти мало

Я занимаюсь разработкой приложения, и во время тестирования возникла проблема. Основное действие показывает записи базы данных. Когда системной памяти мало (я нажимаю кнопку "Домой" и запускаю много приложений), сборщик мусора удаляет записи базы данных, и если я возвращаюсь в приложение, ничего не отображается в активности (без записей) и в приложении принудительно закрывает на любые действия (обратно, домой, на ощупь и т. д.)

Есть идеи по решению проблемы?

3 ответа

Решение

Задача решена. Он появился, когда системная память была очень мала (я запустил 10 других приложений для тестирования своего приложения), и я решил ее, используя шаблон синглтона в классе базы данных.

В файле манифеста

<application name=".MainAppActivity" >
   .
   .
   .
</application>

В MainActivity

public class MainAppActivity extends Application {
   .
   .
   .
   .
   @Override
   public void onLowMemory(){
      System.gc();
   }
}

Вы можете сделать проверку в onResume, если ваш массив записей, например, пустой или нулевой, перезагрузите их (возможно, перезагрузите их в службе) или вы даже можете сохранить их в файле, когда вы сначала загружаете их и сохраняете файл в onPause() а позже в onResume() Вы можете загрузить этот файл.

В любом случае, если вы думаете, что ваше приложение занимает слишком много памяти, вы можете попробовать использовать System.gc() попытаться убрать мусор, но эта опция может оказаться бесполезной, если пользователь запускает другие приложения и заполняет память.

Другие вопросы по тегам