Утечка памяти при щелчке EditText

У меня есть приложение для Android, которое начинается с класса ItemListActivity, и в методе onCreate() я проверяю, вошел ли пользователь в приложение или нет (на основе сохраненного значения в sharedPreferences), и если он не вошел в систему, я меняю активность на активность content_main:

if (!SharedPreferencesUtils.sharedPrefHasString(getApplicationContext(),userIDKey,null)){
        Intent intent = new Intent(getApplicationContext(),content_main.class);
        startActivity(intent);
        finish();
        return;
    }

и в активности content_main у меня есть просто 2 EditText для получения электронной почты и пароля пользователей.

Все работает нормально, пока я не нажму на любой Edittext, затем он начинает истощать память и вылетает с этим журналом: java.lang.OutOfMemoryError: Failed to allocate a 35469582 byte allocation with 16769200 free bytes and 24MB until OOM.

Я занимаюсь этим пару дней и читал, что это происходит, когда вы используете edittext в relativeLayout, поэтому я изменил макет на LinearLayout, и это тоже не сработало. Мое устройство - Samsung galaxy s5, версия Android - 6.0.1.

И я продолжаю получать эту ошибку, когда нажимаю на любой EditText. А вот мой вид памяти профилировщика Android: Утечка памяти при щелчке EditText Есть идеи, что вызывает эту проблему?

Я предположил, что это может быть проблемой, поэтому удалил все изображения (есть только одно для логотипа signUp и фон для edittext). Но это не меняет результата.

ali73 03.06.2018 09:52

В этой строке Intent intent = new Intent(getApplicationContext(),content_main.class); удалите getApplicationContext() и вместо этого запишите this и никогда в будущем не передавайте ApplicationContext() в намерение.

Ildarov 03.06.2018 09:54

@ Devit951 Спасибо за совет. Но, боюсь, это не имело никакого значения.

ali73 03.06.2018 10:00
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В профилировщике Advance Android есть некоторые проблемы. Вам нужно отключить его следующим образом:

Перейдите в конфигурацию запуска / отладки -> Профилирование -> Снимите флажок Включить расширенное профилирование

disable

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