Как статические переменные могут предотвратить утечку памяти? [закрыто]Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как статические переменные могут предотвратить утечку памяти? [закрыто]

Сообщение Anonymous »

У меня есть приложение для Android, которое использует Bluetooth (BLE). Я разработал приложение с помощью Android Studio. Приложение может подключаться к серверу Bluetooth, а затем отправлять и получать данные.
Все работает правильно, пока я не отправляю приложение на фоновый фон, а затем снова доведу его на передний план.

после восстановления приложения оно не работает правильно, в частности, каждый раз, что Bluetooth On characteristic -Callced Callback, по изменению, является в целом. переменные не изменяются по моему собственному коду, переменные, по -видимому, каким -то образом повреждены классами Bluetooth. Проблема? < /p>
Затронутые переменные: < /p>
private int comm_state;
final WaitThread[] waitThread = new WaitThread[1];
< /code>
Я изменил их на: < /p>
private static int comm_state;
static final WaitThread[] waitThread = new WaitThread[1];
< /code>
Эти переменные также близки друг к другу в исходном коде, я не знаю, является ли это совпадением. Заявление, в котором это идет не так, составляет не менее 700 строк кода, и я уверен, что никто не хочет, чтобы я опубликовал это здесь, поэтому я опубликовал только минимум после локализации проблемы. Работает).
сразу же нажмите среднюю кнопку, чтобы отправить приложение на фон. Только что создал версию без этого, и переменные по -прежнему становятся поврежденными.
CTW. Все код Bluetooth находится в основном действии, и, насколько я знаю, есть только один экземпляр основного действия. /> Я теперь попробовал приложение на Android 11 (API 30), и оно работает правильно как со статическими переменными, так и без него.
, чтобы заставить его работать на Android 11, мне пришлось внести следующие изменения: < /p>
Изменил макет ограничения на макет координатора, чтобы я мог использовать Snackbar без контейнера /фрагмента. от: < /p>
bar[0] = Snackbar.make(activity.getCurrentFocus(), caption, Snackbar.LENGTH_INDEFINITE);
< /code>
to < /p>
bar[0] = Snackbar.make(activity.getWindow().getDecorView(), caption, Snackbar.LENGTH_INDEFINITE);
< /code>
Ранее у меня была закусочная, работающая с макетом ограничения в Android 5, но это не вызвало исключения. 5 Без «статического» ключевого слова, но, поскольку Android 5 больше не поддерживается Google Play, я сомневаюсь, что будет много вопросов, пытаясь создать минимальный пример, который демонстрирует проблему.

Подробнее здесь: https://stackoverflow.com/questions/796 ... emory-leak
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»