Сергій
Короче, просто смотрите чтобы ничего не текло потом. Пис да инжект 🌚
Ярослав
ViewModelProviders.of(this)
он (контекст) нужен провайдерам этим, но если отказаться от ViewModel и инжектить синглтон с LiveData внутри, то тогда и провайдеров никаких не будет ViewModel'овских
Сергій
Глобальный синглтон?
Ярослав
Глобальный синглтон?
ну получается что да, а что?
Сергій
Не храни там данные, синглтоны умирают после пересоздания процесса. )
Сергій
Чтобы это протестировать, поставь максимальное количество фоновых процессов в 0
Сергій
Ярослав
Не храни там данные, синглтоны умирают после пересоздания процесса. )
не поверишь, но даже так конструктор класса, который инжектится даггером, не вызывается, то есть объект не пересоздаётся
Mike
Log.e()
в logcat переключался с умершего процесса на новый?
Ярослав
в logcat переключался с умершего процесса на новый?
чего? видимо я чего-то ещё не знаю, сорян
Arsen
Дата класс на котлине будет норм работать в проекте на джава? (собираюсь переводить проект на котлин, хочу пока с дто начать)
Ярослав
в logcat переключался с умершего процесса на новый?
у меня есть кейс, при котором вылетает краш, тогда при перезапуске конструктор объекта синглтона вызывается
Ярослав
*краш после сворачивания через секунду
Ярослав
вот это и была смерть процесса
значит при смене размера шрифта процесс не убивается, а ViewModel всё равно мрёт
Arsen
зачем тебе дата-класс?
ну классический дто с геттерами и сеттерами
Mike
Arsen
ну так то да, сначала обычный бахну
Mike
обычный класс же
Arsen
а когда нужен будет иквалс и хешкоды всякие тогда сделаю
Ярослав
забей на инстант ран
да причём тут инстант ран?? забей, его это не касается никак. и кстати переворот экрана viewmodel переживает, а открытие 2й активити нет. может я не правильно использую ViewModel???
Mike
ключи-не-строки — это очень редкая ситуация
Ярослав
ты сам говорил про ir
блин, и чё теперь, я про него сказал вместо переворота экрана, чтобы подтвердить, что viewmodel хоть иногда живёт дольше активности, сейчас для той же цели я попробовал переворот экрана, viewmodel пережила
Сергій
> сейчас для той же цели я попробовал переворот экрана, viewmodel пережила как и полагается
Сергій
попробуй так)
Mike
попробуй так)
тогда savedInstanceState будет null :)
Ярослав
> сейчас для той же цели я попробовал переворот экрана, viewmodel пережила как и полагается
угу, но смену размера шрифта не переживает, из чего я могу сделать вывод либо я чё-то неправильно делаю, либо ViewModel не справляется со своей задачей как положено
Arsen
угу, но смену размера шрифта не переживает, из чего я могу сделать вывод либо я чё-то неправильно делаю, либо ViewModel не справляется со своей задачей как положено
Все она справляется, это вы не так толкуете ее предназначение. LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
Сергій
LiveData - это просто колбек который умеет в lifecycle
Daniil
И в примерах ты еще в этот же LiveData setter'ом устанавливаешь значение. Дичь
Daniil
Ну у тебя есть класс через который ты можешь получать данные (getValue()) и слушать события. И тут же ты в этот класс можешь устанавливать значение (ну на самом деле это MutableLiveData). Выглядит криво. Типо он тебе нужен ридонли но тут же можешь и значение выставить. Я этого непотребства не выдержал, отнаследовался от LiveData и сдела по-другомк
Ярослав
*долбаный мак с его галимым Enter*
Daniil
*долбаный мак с его галимым Enter*
А что там с энтер не так? Купи человечью клаву
Arsen
механическая клава - топ
Ярослав
можешь сделать метод setValue пакетоприватный
*приватным и вызывать setValue например из презентера или LiveData класса
Daniil
Я там извращался немного. Но это мне всеравно пригодиться
Ярослав
угу, но смену размера шрифта не переживает, из чего я могу сделать вывод либо я чё-то неправильно делаю, либо ViewModel не справляется со своей задачей как положено
я делал кое-что не правильно. в MyFragment.onCreate() ViewModelProviders.of(activity).get(...) вместо activity нужо this, тогда ViewModel переживает смену размера шрифта. однако, если получать мою ViewModel и в фрагменте of(this).get().observe() и в активити of(this).get().observe() (по идее для активити и для фрагмента должны быть свои экземпляры ViewModel), тогда ViewModel опять мрёт как муха
Arsen
Нужно юзать kapt в зависимостях, если на данный момент котлин только для дто юзается?
Arsen
точнее все либы юзаются в .java классах
Arsen
а не .kt
Amir
Есть сервисы где генерируется ссылка, по которой я получаю ответ, который сам забил?
Amir
загугли mock api
спасибо, получилось в пару кликов
Aldres
Глупый вопрос. Пытаюсь запихнуть в ресайклер список, используя хэндлер трэд, но что-то в ресайклере ничего не появляется. Хотя если попытаться в этом Runnable пройтись по элементам полученного списка
Aldres
То все данные есть, которые нужны
Aldres
Данные хранятся в БД, используется Room.
Aldres
Может лучше сразу в Runnable создавать и сэтить адаптер? Или как лучше поступить?
Алексей
Может лучше сразу в Runnable создавать и сэтить адаптер? Или как лучше поступить?
сделать в адаптере метод setData, передавать туда список, сохранять его куда надо, и внутри вызывать notifyDataSetChanged
Ivansuper
Может лучше сразу в Runnable создавать и сэтить адаптер? Или как лучше поступить?
Адаптер можно менять, но это немного ломает весь труд, который гугл вложила в ресайклер для эффективного обновления ресайклера
Ivansuper
Там не фоновый поток
Ivansuper
Главный лупер можно забрать у класса Looper
Сергій
у хендлела лупер с HandlerThread'a
Ivansuper
HandlerThread по умолчанию берет лупер с вызывающего потока
Ivansuper
Если не указан явно
Volodymyr
HandlerThread по умолчанию берет лупер с вызывающего потока
ХандлерТред имеет свой лупер по умолчанию
Ivansuper
Ааа
Volodymyr
не от ЮИ потока
Ivansuper
Я перепутал с хандлером
Ivansuper
Балда, да)
Ivansuper
Ну бывает. Не зря в глаза бросилось, что он не забрал лупер из Looper. Ну да ладно
Ivansuper
Человек, посмотри в сторону LiveData
Сергій
можно просто runOnUiThread
Ivansuper
Можно. Но у него там метод чтения элементов