У меня есть приложение для 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
Как статические переменные могут предотвратить утечку памяти? [закрыто] ⇐ Android
Форум для тех, кто программирует под Android
1751386458
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, я сомневаюсь, что будет много вопросов, пытаясь создать минимальный пример, который демонстрирует проблему.
Подробнее здесь: [url]https://stackoverflow.com/questions/79674691/how-can-static-variables-prevent-a-memory-leak[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия