169 похожих чатов

Есть кейс, где я во вьюмоделе делаю каждые 3 секунды

запрос на статус, это я провожжу в коррутине в бесконечно цикле.И выхожу из него, когда получаю то чтт мне нужно. Вопрос - какие могут быть подводные камни? Мне нужно завязываться на жц? код выполняется при свернутом приложении.

23 ответов

16 просмотров

Если в viewModelScope запускаете, то все ок Единственное что цикл должен быть не while(true), а while(isActive)

Иван-Чепёлкин Автор вопроса

а что такое isActive ? это моя локальная переменная?

Нет, это проперти контекста, которая true если джоб не была отменена или не завершилась, почитайте доку если интересно

Иван-Чепёлкин Автор вопроса

а. я понял о чем вы. это проверка не отменена ли джоба

Да да да

Ну для начала добавьте туда логгер в виде строковой переменной хранящейся в applicatoin классе, значение которой можно просмотреть просто где-то в текст вью (в отд окошке скажем). Кидайте в нее через добавление в конец время и дату каждого "трехсекундного вызова". Узнаете много интересного о том дает ли андроид приложению в фоне что то делать каждые три секунды.

Иван-Чепёлкин Автор вопроса

я уже проверил - работает у меня на 10 андройде, пока система не убила активити

Я либу написал и тестирую (на джаве, извините, человек пожилой, модное не люблю) - она позволяет дергать коллбэк или обновлять лайфату пока приложение в фоне, и даже в в doze mode, более того, рестартит его сразу если система его прибила/убила. Но вне переднего плана никаких 3 секунд не гарантируется по итогам тестов на 10ке. Раз в минуту плюс/минус без проблем. Во сне чаще 4 минут. В долгом doze не хуже 20. И авторебут конечно. Надо? Как минимум оно сможет оживить прилку и пусть корутина обратно долбит раз в 3 сек.раз умеет

Иван-Чепёлкин Автор вопроса

скорее всего мне этой информации хватит, чтоб обсудить с аналитиком наше дальнейшее действие. все же не факт, что система сама не убьет активити и тогда все вообще встанет

Система убивает прложение а не активность

Иван-Чепёлкин Автор вопроса

конечно. но мое приложение очень завязано на жц активити, если она сдохнет - то сдохнут все мои фрагменты и di вместе с ними(

Если что то надо долбить из фона невзирая ни на что, используя посл.введенные юзером данные - это из vm можно вынести

Иван-Чепёлкин Автор вопроса

Тупо в какой нить синглтон?

Да. Прикрепленный к репозиторию/модели по ж/ц. Vm отдает туда данные и говорит - долби по ним каждые 3 секунды или как выйдет пока не отменят, невзирая на ребуты и doze

Иван-Чепёлкин Автор вопроса

можно ли создать этот синглтон вне di и переживет ли он убийство объекта внутри которого был создан?

https://github.com/psa98/Dont_Kill_My_App/tree/master/app Тут короче посмотри идеи к обсуждению с аналитиком. И суточные логи в экселе ему предъяви - там видны рестарты и пропуски вызовов когда прилка точно дохлая. https://github.com/psa98/Dont_Kill_My_App/tree/master/app С вас ишью, предложения,форки, звезды. Может порт на котлин

Прикрепи к application class, сохрани стейт (параметры задания в префах) и при рестарте он продолжит долбить то же и туда же

Иван-Чепёлкин Автор вопроса

эх, идея рабочая и правильная, но в моем случае недееспособнаяя(( у меня нет доступу ни к application ни активити. и di я инициализирую во flow fragment

Откуда такая информация?

Ну кто ж не дает получить доступ? Эти методы - обычный метод модели/репозитория. В application пару строк добавить.

Иван-Чепёлкин Автор вопроса

архитектура приложения. я делаю фичи аарниками, у которых нет ни аппликейшн ни активити

Ну это к архитекторам. Пусть метод для выживания реализуют отдельно и выставят api наружу под описанную идею. Задача нужная

Иван-Чепёлкин Автор вопроса

да, согласен! спасибо

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта