Dmytro
Спасибо большое) Только что пришло в голову))) и было ж так тупить)
еще сделай транзишн анимацию снизу вверх и будет агонь
Dmytro
Какой?
НПЕ или ИллегалСтейтЕкспшн
Konstantin
Какой?
Ну как вариант null или че ещё не смогет init или Стейт
⁣
Я сейчас меняю экраны (фрагменты) методами hide/show, когда приложение свёрнуто, внутри runOnUiThread(). И у меня никаких вылетов, работает идеально.
⁣
Это когда запрос завершается, а приложение в этот момент свернуто и нужно показать следующий экран
Дмитрий
самое быстрое что могу предложить, это прибавить к У оффсету высоту попап
У меня еще маленький вопрос. Когда я отправляю запрос на получение данных из вьюмодели слишком часто, у меня потом перестает работать метод в подписке к списку со значениями. Проверял, даные с сервера приходят, вызвается метод setValue, а сам метод в активити не вызывается. Как вы считаете, как можно разобраться с таким багом?
Дмитрий
еще сделай транзишн анимацию снизу вверх и будет агонь
Только что сделал через setAnimationStyle, какая то дерганая. Сейчас попробую через transitioin
Konstantin
Я сейчас меняю экраны (фрагменты) методами hide/show, когда приложение свёрнуто, внутри runOnUiThread(). И у меня никаких вылетов, работает идеально.
Это пока что ,а вот начнет работать на большом количестве телефонов и в бекгроунде будет тонна програм или форграунд будет ресурсо ёмким вот тогда баги полетят на право и на лево
Konstantin
При нехватке памяти, система просто выгрузит моё приложение и всё, никаких проблем
Что произойдет когда вы вернётесь в приложение то что она его вугрузила это одно а Стейт на фрагментах остался ?
Anna
При нехватке памяти, система просто выгрузит моё приложение и всё, никаких проблем
несколько странно что-то делать на ui, когда его не видно.. как-то не в духе андроида
Konstantin
При нехватке памяти, система просто выгрузит моё приложение и всё, никаких проблем
У студио есть кнопочка тама можно симулировать смерть приложения где она там в профиле валяется попробуйте потестирйте
⁣
Что произойдет когда вы вернётесь в приложение то что она его вугрузила это одно а Стейт на фрагментах остался ?
Если выгрузит, у меня просто активность перезапустится, а вместе с ней и все фрагменты заново будут созданы. Начнётся заново авторизация
Дмитрий
Скорее всего вью модель постит значения в одну лайвдату, а активити подписана на другую. Смотри нет ли лишней инциализации или еще чего подобного
Они постятся в одну и ту же лайвдату. Если делать медленно, все работает. Если делать быстро, перестает реагировать подписчик
⁣
несколько странно что-то делать на ui, когда его не видно.. как-то не в духе андроида
На самом деле, если открыть приложение, визуально это выглядит будто переход от экрана к экрану происходит на onResume, только чуть быстрее, чем обычно
⁣
я про то, что в бекграунде какие-то действия на ui. или может я неправильно поняла
Так и есть. Но они необходимы, потому что долгий запрос завершился и нужно перейти на следующий экран
⁣
а что за долгий запрос? какая-то загрузка?
Конечно не загрузка, обычный пост или гет) Ну секунд 5, допустим
Alexandr
Можно как-то автоматически перезапустить приложение, если оно крешнулось?
Konstantin
Если выгрузит, у меня просто активность перезапустится, а вместе с ней и все фрагменты заново будут созданы. Начнётся заново авторизация
Куда фрагменты добовляется при транзакции ? И откуда он будет подгружать последний фрагмент ? Также скорее всего то что вас от краша защищает это то что лайв дата и навигация lifecycle aware и просто делаю это при возвращении на экран и поэтому пока везёт но можно попасть на ту долью момента где начнется переход и аппка свернётся тут очень непредсказуемо так как контроль отдан потоку
Kanstantsin
Так и есть. Но они необходимы, потому что долгий запрос завершился и нужно перейти на следующий экран
в идеале если экран свернут, есть высокая вероятность что он помрет, и не стоит менять экраны в таком состоянии, обычно в таких ситуациях вообще роутер детачиться и менять ничего нельзя, так работают и либы с навигацией типо cicerone и компонент тот же, они делают pending операции и меняют UI только потом
Kanstantsin
в свернутом состоянии менять UI - плохо, это в принципе факт, и вам об этом сказали выше уже несколько человек
Kanstantsin
это простите, вообще какая-то дичь тогда
Anna
Конечно не загрузка, обычный пост или гет) Ну секунд 5, допустим
мы несколько иначе строим взаимодействие в таком случае. если фрагмент ушёл в подполье, то мы ничего не обновляем, но когда он вернётся к жизни, мы сделаем ещё один запрос (есть вариант с кешем, но у нас прилага с актуальными данными... специфика) и обновим ui соответственно
Kanstantsin
смысл тогда от фрагментов какой ? юзайте activity отдельные, если вы их все держите в памяти с их вьюшками, и просто делаете hide/show
Kanstantsin
А подробнее можно, почему?
Для меня основная тема фрагментов что в одну единицу времени живет 1 фрагмент и одна его view, другие могут быть даже в стэке но view будет пересоздана
Kanstantsin
у вас же вы держите все фрагменты с их view сразу, это максимально странно получается
Anna
Один раз добавляются на onCreate в одной Activity, а потом просто скрываются или показываются методами hide/show
это странно... в андроид стараются не держать много данных в памяти. попробуйте воспользоваться андроид сдк и его принципами, иначе со временем будет армагедец)
⁣
смысл тогда от фрагментов какой ? юзайте activity отдельные, если вы их все держите в памяти с их вьюшками, и просто делаете hide/show
Если запустить новую активность из бэкграунда, она автоматически развернёт приложение
Anna
Почему несколько экранов, на которых пара EditText и TextView - это много?
в таком случае можно действительно обойтись активити и вьюхами. поддерживаю Константина
Kanstantsin
Почему несколько экранов, на которых пара EditText и TextView - это много?
делайте как хотите, я описал правильный way вам, с таким успехом вы можете и делать это вообще через view и скрывать и показывать их, это тоже самое
Ivan
Хочу обновить padding для FrameLayout, чтобы учесть чёлку, но не работает даже так, тупо не применяется: content.setOnApplyWindowInsetsListener { v, insets -> v.updatePadding(top = 400) insets } Что-то упускаю?
⁣
делайте как хотите, я описал правильный way вам, с таким успехом вы можете и делать это вообще через view и скрывать и показывать их, это тоже самое
Я в классы этих фрагментов вынес очень много логики взаимодействия с View, а в активности оставил запросы
Mikhail
Есть ли отдельный чатик по Admob? Заблокировали показ объявлений в игре с формулировкой "Наложение контента и объявлений друг на друга". Нужна консультация по исправлению.
⁣
в таком случае можно действительно обойтись активити и вьюхами. поддерживаю Константина
Если запустить новую активность из бэкграунда, она автоматически развернёт приложение
Anna
Я в классы этих фрагментов вынес очень много логики взаимодействия с View, а в активности оставил запросы
просто получается что вы выдумываете велосипед и будете поддерживать это самостоятельно. представьте, что уже есть удобный способ реализации этой задачи) просто нужно вникнуть в него и жизнь заиграет другими красками)
Anna
не настаиваю, но рекламирую :)
⁣
⁣
Alexey
Vitalii кто это писал?
Konstantin
Че заересь
Anna
вообщем я тоже умываю руки...)
⁣
Александр
Шёл такой юзер, шел, да как выпал
Konstantin
Если у разработчика руки из одного места то и на переход на след экран можно вылететь
Konstantin
Кто это пишет че за ересь
⁣
https://xakep.ru/2016/12/21/android-ui-fragment/
Konstantin
https://xakep.ru/2016/12/21/android-ui-fragment/
Статья 2016 мы как бы уже в 2020
⁣
Это всё меняет?
Alexey
Да и для 2016 года уровень никакой
Kanstantsin
Это всё меняет?
так вы фрагменты как те же activity используете
Александр
Статья 2016 мы как бы уже в 2020
Не аргумент, фрагменты и активити за 4 года не шибко то поменялись
Kanstantsin
я ж вам про это пишу уже в который раз
Kanstantsin
толку вам юзать фрагменты, у вас поведения такое же как и у активити, вы фрагменты все сразу держите с вьюхами, так собственно и активити живут
Konstantin
Не аргумент, фрагменты и активити за 4 года не шибко то поменялись
Поменялись и не хило так те болячки которые были немного как бы пофиксили
⁣
Спасибо всем за ответы! Я потом почитаю внимательно
Kanstantsin
статья максимально странная, смотрите проверенные источники, а лучше оффициальную доку вообще
Takaev
Доброй ночи всем. Может кто подсказать как определить местоположение в сервисе приложения?
Сергій
Не аргумент, фрагменты и активити за 4 года не шибко то поменялись
Активити нет, а вот фрагмены что в саппорт либе, да
Александр
Активити нет, а вот фрагмены что в саппорт либе, да
Это не повод смотреть на фрагменты из 2к16 как на какие - то другие фрагменты, лол.
Александр
По этим темам даже 2010- статьи актуальны будут, если годно написаны.
Konstantin
Принципиально ничего не изменилось.
Ну так если бы имплиметацию меняли каждый месяц то явно мало бы кто остался в здравом уме а вот под капотом уже давно все переписали
Александр
Немного повод.
Что там такого изменилось, что может сделать статью 2к16 не актуальной?
Александр
Ну так если бы имплиметацию меняли каждый месяц то явно мало бы кто остался в здравом уме а вот под капотом уже давно все переписали
Мне то какая разница что там под капотом? Пущай хоть на паскале там бахают правки каждые пол часа.
Сергій
Принципиально ничего не изменилось.
Несколько лет назад было обновление фрагментов, что в неком роде изменило их поведение при добавлении и удалении с бекстека. Поменялся порядок вызовов некоторых методов жц
Alexey
Что там такого изменилось, что может сделать статью 2к16 не актуальной?
были исправлены многие глюки и особенности поведения, которые описаны в таких вот статьях
Александр
Как - то притянуто за уши, сорян. Мб есть что конкретное?
Александр
Прямо чтобы разъёб
Konstantin
Прямо чтобы разъёб
Ну с таким подходом могу спросить докажите обратное прямо так чтоб разорвало нахрен :)