Turalllb
Не подскажете каково дефолтное поведение по сокрытию клавиатуры при переходе на новый фрагмент? Я так понимаю, уходит фрагмент который держит фокус на клаве и она скрывается? Просто на андроиде 5.1 на неком ZUK1 клава не скрывается сама
Kirill
Ага.
по описанию ничего криминального нет. а вот как это реализовано, никто кроме тебя не видит)
Dmitry
Как лучше начать работу в ViewModel с репозиторием? с активвити дернуть метод типо loadData, или с конструктора ViewModel?
TheBukharian
Mike
Показать пустой ресайклер а потом только лезть в сеть?
нет, сначала найти причину, вместо того чтобы выдумывать её
Arsen
https://developer.android.com/topic/performance/vitals/launch-time#heavy-act
TheBukharian
Type Mismatch выдает, что делать?
Mike
Type Mismatch выдает, что делать?
прочитать сообщение об ошибке, осознать
TheBukharian
вроде всё правильно написал и проверил
Arsen
наведи на ошибку - покажет подробнее
TheBukharian
навел, но там совсем с этим не связано
Mike
навел, но там совсем с этим не связано
ну если ты лучше знаешь, тогда мы тут тем более не советчики
TheBukharian
ок спасибо
Arsen
наверное бага в тулинге, пиши в джетбрейнс\гугл, пусть чинят)
Arsen
Kirill
подскажите, с помощью retrofi2 отправляю сообщение. и когда менятся фрагмент, в случае onFailure приложние падает, т.к. контекст = 0, можно это как-то обойти? @Override public void onFailure(Call<GetIdMessage> call, Throwable t) { Toast.makeText(getActivity().getBaseContext(), R.string.error_msg, Toast.LENGTH_SHORT).show(); progress.set(false); }
Kirill
всегда отменять запросы, когда пользователь уходит (привет, утечка памяти)
никак нельзя закончить отправку?) у меня есть идея попробовать через сервис.. но это пока мысли вслух)
Impossible
архитектуры не при чём
Почему? Правильно реализованный mvvm например, вообще такого не допускает)
Mike
никак нельзя закончить отправку?) у меня есть идея попробовать через сервис.. но это пока мысли вслух)
можно, но тогда нужно что-то понадёжнее на случай, если пользователь уйдёт. В идеале — прибайндиться к сервису, а когда пользователь уходит, отбайндиваться. Сервис, если у него осталась работа, должен сделать себя форграундным.
Kirill
частично согласен). но все же это не архитектура)
Mike
Почему? Правильно реализованный mvvm например, вообще такого не допускает)
Не потому что он MVVM, а потому что он правильно реализован.
Impossible
Не потому что он MVVM, а потому что он правильно реализован.
Ну спорить можно долго, проще всего проверить контекст на null )
Kirill
Ну спорить можно долго, проще всего проверить контекст на null )
на нул легко проверить, а тост показать нет, а хотелось)
Mike
на нул легко проверить, а тост показать нет, а хотелось)
можно контекст приложения захватить
Impossible
можно контекст приложения захватить
Ты пробовал запускать тост на апликейшене?)
Impossible
Подскажите пожалуйста, за корутины, когда следует юзать runBlocking ? Он блокает тек поток, в чем разница между ним и launch.UI . Только тем что run подключается к scope тек потока?
Arsen
просто корутины как демоны, потому блокинг нужен. а лонч лучше сравнивать с асинком
Arsen
в ведре есть вьюмодельКонтекст
Arsen
если самому пилить то coroutineScoupe
Arsen
а вообще много ньюансов, без стакашки не разобраться, иди доки читай)
Impossible
а вообще много ньюансов, без стакашки не разобраться, иди доки читай)
заебся читать, решил у опытных попытать удачи)
Arsen
я тоже заебся их читать, пришлось медиум серфить, доклады смотреть (у Елизарова норм)
Impossible
просто корутины как демоны, потому блокинг нужен. а лонч лучше сравнивать с асинком
Честно, я так и не понял, для чего нужен блокинг, если можно просто создать Scope и повязать его на жц
Arsen
для тестов)
Arsen
или для jvm
Impossible
для тестов)
В бытовых ситуациях просто делается scope и в него уже кидают потоки и прерывания?
Arsen
что значит кидают потоки?
Arsen
там кароч билдеры это экстеншин функции к контексту, т.е. он нужен, чтобы можно было стартануть корутины, и чтобы очистить их при завершении жц (типа диспозабл)
Impossible
runBlocking заюзывает глобал контекст ?
Arsen
диспатчеры - шедулеры, каналы(экспериментальные еще) - типа операторы (чейн обработка, хуемое..)
Arsen
глобалКонтекст вроде не мешает завершению процесса (демон типа), а блокинг - не дает
Arsen
могу ошибаться
Ravshan
Всем привет! Как получить канал и дистанцию(расстояние) вайфай?
Arsen
Global scope is used to launch top-level coroutines which are operating on the whole application
Impossible
могу ошибаться
Если копнуть, то видно что юзается globalScope. А если отменить глобал то вроде его уже перезапустишь
Arsen
runBlocking заюзывает глобал контекст ?
все что нужно знать про глобал, это то, что его не рекомендуется юзать, а то утечки будут) привязывайся к локальным скоупам
Impossible
все что нужно знать про глобал, это то, что его не рекомендуется юзать, а то утечки будут) привязывайся к локальным скоупам
хм, ну а все таки, если я на него повесил овер дофига, и хочу поубивать все корутины, как быть?)
Impossible
скоупы ввели как раз для контроля жц корутин)
Я понимаю, но что делать в такой ситуации, ибо не пониманию тогда практичного приминения runBlocking
Arsen
про ран блокинг to be used in main functions and in tests.
Arsen
мейн -точка входа, если корутина отпустит тред, то мейн сделает ретерн и процесс завершится, джвм - рип
Arsen
а блокинг не дает этого потому и to be used in main functions and in tests.
Arsen
в андроиде нет такой проблемы, у нас контроль поялвяется в колбеках компонентов фреймворка
Arsen
но есть проблема утечки, потмоу скоупы нужны (аналог диспозабл в рх)
Impossible
Arsen
вместо тысячи слов
Impossible
вместо тысячи слов
Вижу что нужен для ловли екзепшена по всей цепочки)
Impossible
вместо тысячи слов
а на каком он scope ? Тоже main ?
Arsen
так же как в рх всякие модные перегрузки сабскрайба, так и тут - чисто декларативный стайл, вместо зашкварного трай кеча
Arsen
по-моему эта шляпа даже не в пакете корутин
Arsen
чисто стд фича
Impossible
по-моему эта шляпа даже не в пакете корутин
хм, старый вопрос, если ты в ней что-то стартанул и нужно отменить, твои действия?
Arsen
а на каком он scope ? Тоже main ?
вообще вопрос "в каком скоупе" зависит от объекта на котором вызываешь, ты же просек фишку с тем, что в корутинах все, что можно реализует интерфейс CoroutineContext, который является сетом (коллекцией), которая может хранить всякий тюнинг, а еще перегружает оператор сложения, что открывает ̶ш̶к̶а̶т̶у̶л̶к̶у̶ ̶п̶а̶н̶д̶о̶р̶ы̶ возможности для конфигурирования.
Arsen
еще можно грохнуть джобу, если скоуп не супервизор