|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
||||||||||||||||
Foreground service, context null после закрытия главного окна программы13.06.2022, 19:10. Показов 966. Ответов 9
Есть Foreground service который создает Notifiction в statusbar, я его запускаю, и потом запускаю таймер который просто каждых 2 секунды обновляет сообщение в статусбаре.
Контекст я передаю в методе инициализации сервиса:
На сколько я понимаю после того как я закрываю главный экран то через некоторые время очищается память и мой контекст стает равен null. Как мне сделать что бы контекст приложения всегда был сохранен и я мог его использовать в любом методе, включая статические, и он ни когда не очищался даже если я закрыл главный экран приложения?
0
|
||||||||||||||||
| 13.06.2022, 19:10 | |
|
Ответы с готовыми решениями:
9
Сохранение списка в обработчике закрытия главного окна программы
Как сделать так, чтобы Service работал после закрытия программы |
|
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 477
|
|
| 13.06.2022, 22:03 | |
|
Зачем передавать контекст в сервис? Он сам по себе уже контекст.
0
|
|
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|||||||||||
| 13.06.2022, 22:26 [ТС] | |||||||||||
|
vs2019, Потому что я запускаю сервис статическим методом.
0
|
|||||||||||
|
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 477
|
|
| 13.06.2022, 22:36 | |
|
И каким образом ответ "Потому что я запускаю сервис статическим методом." отвечает на вопрос, зачем передавать контекс в сервис? Сервис сам по себе контекст.
Закрывается Активити? И пусть закрывается. Используйте контекст который сервиса. Сервис-то не закрывается? Или у Вас и сервис тоже закрывается?
0
|
|
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|
| 13.06.2022, 23:08 [ТС] | |
|
vs2019, А как мне в статическом методе использовать контекст сервиса? Можно пример кода что бы я понимал о чем Вы говорите?
А по замерам то получаться следующее: Запускаю я сервис в 18:53 Закрываю активити Он работает все нормально И в 18:57, в дебагере Андроид студии пишет что главный процесс "DEAD" И сервис перестает отправлять сообщения
0
|
|
|
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 477
|
||
| 13.06.2022, 23:29 | ||
|
Все что можно предложить - это использовать контексто от того, что не пропадает. В Вашем случае присутствует сервис. Если и он завершается, то ничего не поможет. Не будет контекста. Никакого. Использовать контекст Сервиса ровно так же, как и контекст Активити. Я никакого примера использования не могу предоставить. Потому что не вижу исходного кода Вашей программы(по представленным обрезкам мало чего можно понять). До сихпор не знаю. Сервис сразу завершается после запуска? Или он постоянно работает? Добавлено через 3 минуты И если нельзя в статическом методе использовать контекст, может стоит подумать о том, что бы не далать его статическим?
0
|
||
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
|||||||||
| 13.06.2022, 23:39 [ТС] | |||||||||
|
1. Умирает основной процесс 2. сохраненный контекст в статическом поле класса сервиса через какое-то время стает null. я такого ни разу еще не встречал ни в одном языке программирования, если честно...
0
|
|||||||||
|
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 477
|
|
| 14.06.2022, 07:06 | |
|
Что Вы называете "основной процесс"?
Что-то у Вас не так. Понять, что не так, по Вашему описанию не представляется возможным. Вообще, ссылку на Активити ниоткуда давать не надо. Если туториалы читали, то сейчас рекомендуемой является MVVM (Model View ViewModel) Architecture Pattern. В которой все вьюшки берут данные из вьюмодели. И никакой логики в Активити быть не должно. И никаких ссылок ни откуда на Активити. Не надо контекст из активити в сервисе использовать. И наоборот. У каждого свой контекст. Где нужен контекст - он там есть. Такова архитектура. Статичесие методы и свойства создавать тоже не надо. Я попробовал из сервиса сделать ссылку на Активити. У меня ничего не пропадает. Ссылка остается рабочей. Даже если остановить Активити командой finish(). И методы в сервисе по ссылке на закрытую активити работают, даже если Активити finish()-ed. Хотя так делать не надо. И не за чем. Есть же жизненные циклы у Активити. И у сервиса.
0
|
|
|
32 / 31 / 13
Регистрация: 20.05.2010
Сообщений: 705
|
||||||
| 14.06.2022, 14:40 [ТС] | ||||||
|
Ну у меня просто запущен таймер который каждые 2 секунды обновляет нотификейшен через старт сервиса, с новым интентом в котором новый "serviceIntent.putExtra("action", actionMessage);", то есть новое сообщение, и через некоторое время нотификейшен перестает обновляться, на нотификейшене так же есть две кнопки с функционалом, и когда я их нажимаю то там тоже ошибки что типа нету контекста, в упор не понимаю где проблема, все должно работать без проблем... Такое ощущение что либо система либо что-то еще влияет на работу моего сервиса или я хз что это такое...
Я бы и рад использовать контекст самого сервиса в моих методах запуска и остановки сервиса но проблема в том что когда я запускаю сервис то я не создаю объект а он создается сам, я передаю только объект класса при запуске, и я у меня нету созданного объекта, вот как здесь:
0
|
||||||
|
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 477
|
||||
| 14.06.2022, 15:30 | ||||
|
Покажите исходный текст.
Никаких статических методов не нужно. Никаких ссылок на контекст Активити не нужно. Все прекрасно работает. Из таймера прекрасно обновляется все в Notification. Причем даже когда сервис остановлен, если таймер в onDestroy методе сервиса не остановить. Просто покажите исходники, если хотите, что бы кто-то нашел в чем косяки заключаются. Добавлено через 3 минуты
0
|
||||
| 14.06.2022, 15:30 | |
|
Помогаю со студенческими работами здесь
10
Закрытия первого окна формы без закрытия всей программы
Как осуществить вывод таблицы в DataGrid и обновление таблицы в БД после закрытия окна программы Как убрать ICQ из пуска? после закрытия окна программы, ICQ остается в пуске Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|