Глеб
Что там надо делать с тестами? Там же завязано на хэндлер.
ща не у компа, короче там завязано на arcexecutor(да под капотом хэндлер) есть гугловый саппорт-тест екстеншн, его подключаешь и в тесте одно специальное юнит-rule пишешь и всё.
Этот rule внутри - переподставляет archexecotor реализацию на свою тупую линейную(синхронную), и livedata ничего не подозревая)) начинает работать без проблем, тока в прямом....плоском режиме.👍
Глеб
других завязок на андроид там нет, всё работает из jvm
Mike
Глеб
Спасибо.
пожалуйста
https://proandroiddev.com/how-to-unit-test-livedata-and-lifecycle-components-8a0af41c90d9
Sergey
Кто пользуется firebase от google на сколько это удобно и какова производительность?
ROMAN
Мумитроль
Подсесть на иглу называемую firebase
ROMAN
бывают проблемные места но в целом всё отлично.
ROMAN
Баги фиксят допиливают
ROMAN
Если нужно быстро запилить продукт. С минимальным бюджетом самое-то.
ROMAN
По производительности проблем тоже нет меня держал 50.000 пользователей онлайн. Без каких-либо проблем.
ROMAN
В одном проекте тестил Firebase Cloud Firestore
Она сейчас в бете, но тоже работает норм. Если большая вложенность данных то лучше использовать её
Kirill
Kirill
там много всего
ROMAN
Использовал вочти все что есть. Но имел введу реалтайм датабейс
Михаил 🇺🇦
Kirill
Kirill
50к юзеров
ROMAN
Около 350$ за месяц выходило
Kirill
знатно
Kirill
а cloud functions как тебе?
Stas
кто-нибудь юзал Native Ads Advanced? Как там доход и за что вообще капает ?
Ivansuper
Кто-то работал с Toolbar и Action Mode в одном месте? не могу обойти проблему того, что Action Mode вклинивается в верхнюю часть иерархии View и встает над Toolbar
Ivansuper
windowActionBarOverlay=true не предлагать, уже стоит
Ivansuper
Вопрос снимается. Надоело, послал в задницу Toolbar.
Alexander
Кто знает как открывать drawer поверх system barа
Alexander
Чтоб drawer его перекрывал а не наоборот
Valentin
Чтоб drawer его перекрывал а не наоборот
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowTranslucentStatus">true</item>
Добавить в app theme
Alexander
Спасибо
Dyno
я видел, что картинки в drawable-nodpi засовывают, не подскажите почему?
Dyno
почему не в drawable
Dyno
просто
Dyno
или лучше такую папку удалить?
Сергій
почему не в drawable
По умолчанию drawable это mdpi. И если положить туда большую картинку на экранах с высокой плотностью она сильно увеличится и с высокой вероятностью будет оом или просадки производительности
Dyno
Gerc
c пятого андроида тачи юзера тоже в отдельном потоке от главного как и анимации?
Глеб
Не, не всё как было в майне так и осталось.
Фокус с рендер-тредом - по-сути потому и не афишируется, что заюзать его девелоперу особо никак))
Глеб
рендер тред для анимаций запилен не более чем для визуального отклика по кнопкам и контролам
иными словами если ты по клику в листенер поставишь слип
у тебя всё зависнет, как и раньше.....тока теперь ripple-эффект всё таки будет отыгран до конца
Глеб
эээ брат, это другая беда...
Глеб
чисто ресайклеровская
Gerc
и такие краши только с 5ого андроида
Глеб
неконсистентные позиции - это когда ты в момент смены контента, к этому же контенту по индексу ломишься
Ivansuper
Почему ты говоришь "не могу повторить через Handler"? А исходно какой код падает?
Gerc
Почему ты говоришь "не могу повторить через Handler"? А исходно какой код падает?
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5817)
at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:285)
at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:342)
at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:358)
at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:365)
at android.support.v7.widget.GapWorker.run(GapWorker.java:396)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5371)
Ivansuper
Не надо трогать контролы с других потоков, плюс не надо менять контент адаптера напрямую в стеке коллбеков адаптера. И надо не забывать уведомлять адаптер об изменениях контента. В этом случае проблем не будет
Глеб
ну ... типа того))
а как быстрый хак - может поможет, setAnimator(null)
Gerc
с главного потока все меняется
Глеб
там во многом аниматоры создают много-проходность просчётов
Ivansuper
Так не с главного и не надо менять
Глеб
в общем попробуй для начала, вырубить аниматор - что б смена списка - происходила атомарно, за раз. И там уже будет понятнее, где собсно "неконсистентность"
Gerc
без анимации уныло
Глеб
там же шь сто пятсот премудростей в этом ресайклере
предиктивные анимации, пре-лайаут, пост-лэйаут
эт блин целый мир))) со своими понятиями)) своей философией
Ivansuper
Герц, ответь на один вопрос, ты обращаешься к ресайклеру или адаптеру из не UI потока?
Gerc
блять конечно из уи
Глеб
без анимации уныло
так ты баг то хоть пофиксь, пусть ценой унылости))
а дальше уже разбирайся - как красивее решить, вернув анимации
Gerc
Ivansuper
За мат по шапке. А к чему ты тогда говоришь "с главного потока все меняется"?
Глеб
Герц он правду спрашивает - такие фокусы обычно случаются когда из рабочих потоков трогают ресайклер
Gerc
Ivansuper
Тут фигурировал вопрос про RenderThread и фраза "с главного потока все меняется". Поэтому и спрашиваю
Ivansuper
Герц, кхм, ты помощи хочешь или что?
Gerc
хочу, но не для того чтоб элементарные вопросы про главный поток спрашивали
Ivansuper
Если ты пришел к другим за помощью, не посылай их нахер пожалуйста. Ты мог допустить мелочную ошибку, которую сам не видишь. Решение проблемы ищут от простого к сложному
Ivansuper
И я тебя попросил выше код, а не стек ошибки
Глеб
позицию откуда получаешь?
Gerc
вот я и пришел со сложной проблемой, думал не будут справшивать нубские вопросы про изменение не из главного потока, и спросил не из другого потока ли тачи стали, т.к сэмулировать через хандлер не могу этот эксепшен
Ivansuper
Так. Если у тебя ко мне что то личное, тогда решайте. Я ливаю
Глеб
аааа тачи! всё! я понял
Глеб
не не не не так
Глеб
вот именно в этом то и беда
Глеб
ща... сек
Глеб
короче у ресайклера есть два позишна, адаптер позишн и лэйаут позишн
Глеб
ща.... лучше пусть спецы нормально расскажут (где-то было ща скину)
Глеб
https://medium.com/@haydar_ai/better-way-to-get-the-item-position-in-androids-recyclerview-820667d435d4
Anonymous
Что-то при редактировании стринг xml часто эдитор крашится. Это студия тупит или руки кривые?
Глеб