Size: a a a

Android Developers

2020 August 11

K

Konstantin in Android Developers
FilmsFragment в пакете fragments
источник

AC

Arsen CeH9 in Android Developers
Dmitry Upovalov
так если понятно, к чему вопрос? что изменит ответ на него?
"Итак понятен" это про поинт с блоком мейн треда, но вопрос был немного в другом. Общая картина такая:
- Архитектура на фрагментах
- т.к. навигация на фрагментах, то onSaveInstanceState единственной активити вызывается только когда приложение "уходит в фон" или на "второй план", т.е. фризы юи не особо страшны.
- Зато страшны защитные механизмы системы, например фоновые сервисы которые работают дольше N сек без декларации себя как foreground - караются системой (ANR).  Вопрос в том если ли что-то подобное, при блокировке треда в методе onSaveInstanceState.
- Небольшие объемы данных залетают в бд моментально (по сравнению с таймаутом в N сек для сервисов). Потому первый вопрос больше носил теоретический характер:  "норм ли практика делать...". Итак понятно, что сейв в бд в 99% случаев отработает мгновенно.
- Так же вопрос оправдан наличием разных стратегий к сохранению данных:
1. Реактивно - как только данные прилетели из внешней среды или от юзера(ввод текста) - сразу сейвить (избыточная нагрузка на диск)
2. мой вариант при "уходе в фон"
3. компромисный - по "важным" действиям юзера, например пошаговый флоу регистрации, и на кнопку далее (шаг 1 -> шаг 2) сохранить часть стейта  в бд.

Вариант 2 меньше всего теребит ио с диском, все хранится в RAM, работает шустро, но есть темные моменты типа блока треда "перед смертью".
источник

QH

Quantum Harmonizer in Android Developers
Konstantin
FilmsFragment в пакете fragments
немного не по теме, но этот код можно заменить оператором new
источник

K

Konstantin in Android Developers
Quantum Harmonizer
немного не по теме, но этот код можно заменить оператором new
учту конечно, спасибо. Но сейчас для меня важнее добиться решения проблемы)
источник

QH

Quantum Harmonizer in Android Developers
Konstantin
FilmsFragment в пакете fragments
блииин, вот это хз как работать будет, фрагменты в XML какие-то упоротые, насколько я помню
источник

VS

Valentin Sergeev in Android Developers
Arsen CeH9
"Итак понятен" это про поинт с блоком мейн треда, но вопрос был немного в другом. Общая картина такая:
- Архитектура на фрагментах
- т.к. навигация на фрагментах, то onSaveInstanceState единственной активити вызывается только когда приложение "уходит в фон" или на "второй план", т.е. фризы юи не особо страшны.
- Зато страшны защитные механизмы системы, например фоновые сервисы которые работают дольше N сек без декларации себя как foreground - караются системой (ANR).  Вопрос в том если ли что-то подобное, при блокировке треда в методе onSaveInstanceState.
- Небольшие объемы данных залетают в бд моментально (по сравнению с таймаутом в N сек для сервисов). Потому первый вопрос больше носил теоретический характер:  "норм ли практика делать...". Итак понятно, что сейв в бд в 99% случаев отработает мгновенно.
- Так же вопрос оправдан наличием разных стратегий к сохранению данных:
1. Реактивно - как только данные прилетели из внешней среды или от юзера(ввод текста) - сразу сейвить (избыточная нагрузка на диск)
2. мой вариант при "уходе в фон"
3. компромисный - по "важным" действиям юзера, например пошаговый флоу регистрации, и на кнопку далее (шаг 1 -> шаг 2) сохранить часть стейта  в бд.

Вариант 2 меньше всего теребит ио с диском, все хранится в RAM, работает шустро, но есть темные моменты типа блока треда "перед смертью".
Все зависит от того, насколько вам эти данные важны. Нельзя терять - записывайте сразу, как появляются, тут все просто)
источник

K

Konstantin in Android Developers
Quantum Harmonizer
блииин, вот это хз как работать будет, фрагменты в XML какие-то упоротые, насколько я помню
как понять упоротые?
источник

K

Konstantin in Android Developers
и это xml макета активити, а не фрагмента
источник

M

Mafioznik in Android Developers
Mafioznik
Парни кто работал с рекламной сетью Vungle через adMob? Пытаюсь её внедрить, но при открытии видеорекламы у меня вылазит err_access_denied и не могу найти ответа в гугле что с этим делать
может все-таки кто-то............?
источник

AC

Arsen CeH9 in Android Developers
Valentin Sergeev
Все зависит от того, насколько вам эти данные важны. Нельзя терять - записывайте сразу, как появляются, тут все просто)
все бы ничего, но у меня гибрид MVVM с MVI (жирные стейты(SSOT) на экран/флоу) и сейвить все это дело на каждый чих юзера не хотелось бы. "Придумал" способ  с бд через onSaveInstanceState, но он непроверенный, инфы про это нефига не нашел
источник

VS

Valentin Sergeev in Android Developers
Arsen CeH9
все бы ничего, но у меня гибрид MVVM с MVI (жирные стейты(SSOT) на экран/флоу) и сейвить все это дело на каждый чих юзера не хотелось бы. "Придумал" способ  с бд через onSaveInstanceState, но он непроверенный, инфы про это нефига не нашел
Если данные хранятся в бд не в виде "одна колонка с сериализованным объектом" - то можно сохранять только конкретные изменения
источник

QH

Quantum Harmonizer in Android Developers
Konstantin
и это xml макета активити, а не фрагмента
там тег <fragment>
источник

DU

Dmitry Upovalov in Android Developers
Arsen CeH9
"Итак понятен" это про поинт с блоком мейн треда, но вопрос был немного в другом. Общая картина такая:
- Архитектура на фрагментах
- т.к. навигация на фрагментах, то onSaveInstanceState единственной активити вызывается только когда приложение "уходит в фон" или на "второй план", т.е. фризы юи не особо страшны.
- Зато страшны защитные механизмы системы, например фоновые сервисы которые работают дольше N сек без декларации себя как foreground - караются системой (ANR).  Вопрос в том если ли что-то подобное, при блокировке треда в методе onSaveInstanceState.
- Небольшие объемы данных залетают в бд моментально (по сравнению с таймаутом в N сек для сервисов). Потому первый вопрос больше носил теоретический характер:  "норм ли практика делать...". Итак понятно, что сейв в бд в 99% случаев отработает мгновенно.
- Так же вопрос оправдан наличием разных стратегий к сохранению данных:
1. Реактивно - как только данные прилетели из внешней среды или от юзера(ввод текста) - сразу сейвить (избыточная нагрузка на диск)
2. мой вариант при "уходе в фон"
3. компромисный - по "важным" действиям юзера, например пошаговый флоу регистрации, и на кнопку далее (шаг 1 -> шаг 2) сохранить часть стейта  в бд.

Вариант 2 меньше всего теребит ио с диском, все хранится в RAM, работает шустро, но есть темные моменты типа блока треда "перед смертью".
Читаем документацию:
To save persistent data, such as user preferences or data for a database, you should take appropriate opportunities when your activity is in the foreground. If no such opportunity arises, you should save such data during the onStop() method.
источник

K

Konstantin in Android Developers
Quantum Harmonizer
там тег <fragment>
ну да, я же вставляю туда фрагмент
источник

DU

Dmitry Upovalov in Android Developers
onSaveInstanceState() is not called when the user explicitly closes the activity or in other cases when finish()is called
источник

AC

Arsen CeH9 in Android Developers
Dmitry Upovalov
Читаем документацию:
To save persistent data, such as user preferences or data for a database, you should take appropriate opportunities when your activity is in the foreground. If no such opportunity arises, you should save such data during the onStop() method.
да, что-то подобное искал
источник

QH

Quantum Harmonizer in Android Developers
Konstantin
ну да, я же вставляю туда фрагмент
я вот только думаю, что айди, который там задан, нельзя использовать как айди контейнера. Непонятно, какой вьюхе этот айди будет присвоен
источник

AC

Arsen CeH9 in Android Developers
Dmitry Upovalov
onSaveInstanceState() is not called when the user explicitly closes the activity or in other cases when finish()is called
тут скорее всего отссылка к фрагментам, у них тоже есть такой колбек, но в том и фишка синглактивити, что появляется "нормальный" флоу колбеков жц
источник

AC

Arsen CeH9 in Android Developers
в обычной работе приложении активити всегда активна будет, за редкими случаями типа интента на фотку или реального ухода в фон
источник

DU

Dmitry Upovalov in Android Developers
Arsen CeH9
тут скорее всего отссылка к фрагментам, у них тоже есть такой колбек, но в том и фишка синглактивити, что появляется "нормальный" флоу колбеков жц
здесь нет отсылок к фрагментам
источник