0145
3. сделать две разметки
все равно придется делать ифы, для проверки ориентации. Или я неправильно понял?
Pavel
Друзья, кто нибудь знает какие-нибудь библиотеки с приятными на вид и анимацию вьюшками прогресса, типа как в приложении телеграма - показываем крутящийся кружок, потом он переходит в галочку (если успех) или крест (если неуспех)?
Fearless
ну точнее как, в зависимости от флоу может и придётся, я же кейс не знаю
Nazir
+
Artyom
Ребята, а есть какой-нибудь ресерч по браузерам в дроиде? хром, самсунг, опера, файрфокс и тд они все построены на базовом webview?
Дамир
А конкретнее что?
Приложение будет принимать модельные данные в json от сервера. Плюс хранить в кэше (не суть важно). Приложение может обновиться и в новой версии некоторые поля модели могут поменяться. Нужно уметь поддерживать версии сущностей как старые, так и новые, при возможности заменять в хранилище на последнюю версию
Pavel
Нашёл вот такое: https://github.com/dmytrodanylyk/circular-progress-button Может кто знает есть ли что то похожее?
Дамир
наверное данные с сервера всеже поменяются? Логика как и с базами данных. Узнаешь с какой версией формата работаешь и конвертишь до последней используемой версии
Да. На сервере естественно нужно будет поддерживать последнюю версию модели. Но я пока о веб думаю - нужно локально хотя бы хранилище создать. И если приложение обновится - нужно знать о версии модели, чтобы конвертить. Готовых решений не встречали, как это делать? Я могу завести поле version во все pojo конечно... но как то костыльно, нет?
Alexey
я направления изменения не понимаю, кто главный, а кто должен миграцию поддерживать)
Дамир
Тоесть json на устройстве главней джона на сервере?
Представьте приложение которое стоит у многих пользователей, и может хранить данные как локально, так и обмениваться с сервером... но версии приложений могут быть разные, они работают с разными моделями... значит мой сервер должен знать о всех версиях, а приложение - о своей или обо всех предыдущих тоже
Alexey
кажись архитектура не очень. Сервак должен быть источником истины, он доставляет всем одинаковые версии. Если сервак чето доставил, но приложение не понимает что, то говоришь пользователю чтобы обновился
Дамир
я направления изменения не понимаю, кто главный, а кто должен миграцию поддерживать)
Миграцию должно поддерживать приложение для локальных данных... сервер со своей миграцией разберется сам
Дамир
кажись архитектура не очень. Сервак должен быть источником истины, он доставляет всем одинаковые версии. Если сервак чето доставил, но приложение не понимает что, то говоришь пользователю чтобы обновился
Заставить пользователя обновиться - это идея не очень... и даже когда он обновится - что делать с локальными данными? Отправлять серваку на миграцию? Абсурд
Alexey
Заставить пользователя обновиться - это идея не очень... и даже когда он обновится - что делать с локальными данными? Отправлять серваку на миграцию? Абсурд
Локальные мигрируй уже встроенными средствами БД, это очевидно. А как ты поддержишь новый функционал на старой версии приложения? Вот уж точно где абсурд)
Дамир
Тут просто я неправильно дал понять... на серваке лежат данные, которыми скажем можно поделиться с другими, локально - только свои
Alexey
Обновлением приложения мигрирую на новую - получаю новый функционал...
>Заставить пользователя обновиться - это идея не очень...
Alexey
Хорошо... переделаю вопрос. Какие БД хранят в json и поддерживают миграцию?
у тебя жсон файлы вместо базы данных используются?
Alexey
nosql по сути и есть жсон, фаербэйс например. не смотрел, но миграции там наврятли есть встроенные, свою логику пиши и перелопачивай все данные)
Alexey
Планировалось...
ну идея хреновая, бог дал вам sqlite и realm, а вы велосипед изобретаете
Alexey
json -> POJO -> DB
Дамир
В любом случае - спасибо ))
Igor
Ребят кто-нибудь делал приложение без фрагментов, что-то по этому поводу мало инфы? какие подводные камни могут быть?
Igor
чисто на activity?
ну одна или несколько активити, а дальше программно создаешь нужные лэйауты и аттачишь деаттачишь когда нужно, то есть вместо фрагментов юзаешь вью
Ivan
А в чем резон?
Igor
так в активити почти ничего нет, таб базовая логика, минимум
Igor
А в чем резон?
плюсов много, ФИ
Igor
А в чем резон?
плюсов много, AB тесты делать легко, так как любые лейауты можно подменять, и переделать очень просто и быстро, особенно если юзать фабрику, программное создание как-то дает больше удобства и гибкости, также больше контроля, меньше заморочек с жизненным циклом, ну думаю и другие плюсы есть, вот минусы ищу)
Azret
мне очень нравится "меньше заморочек с жизненным циклом")
Ivan
Вообще нет, viewpager легко на view делается
Azret
а потом все приходят к тому, что во вью свой костыльный аналог ЖЦ пилят
Azret
ну да, так же меньше заморочек
Igor
очень просто, делаешь ресайкл и разные холдеры, вписываешь в кастомный лейаут, добавляешь туда эмптистейты и прогрессы и тд и всё готово, а вьюпейджер как показала жизнь штука глючная и не очень гибкая
Igor
а потом все приходят к тому, что во вью свой костыльный аналог ЖЦ пилят
там все просто есть коллбеки onAttachedToWindow когда вью добавляет и onDetachedFromWindow когда удаляется
Alexey
очень просто, делаешь ресайкл и разные холдеры, вписываешь в кастомный лейаут, добавляешь туда эмптистейты и прогрессы и тд и всё готово, а вьюпейджер как показала жизнь штука глючная и не очень гибкая
https://github.com/bluelinelabs/Conductor вот попытка, вроде бы довольно успешная. Но по отзывам и там и там есть косяки, а современные фрагменты норм себя ведут
Igor
всеравно в конце к своему велосипеду подобному фрагментам придешь
да я не против фрагментов, я просто попробовал пойти другим путем
Igor
https://github.com/bluelinelabs/Conductor вот попытка, вроде бы довольно успешная. Но по отзывам и там и там есть косяки, а современные фрагменты норм себя ведут
меня вопрос с тестами интересует, пока ещё не пробовал делать, будут ли проблемы, надо ещё изучать
Ivan
onDetachedFromWindow вызывается же после onDestroy?
Azret
зачем тратить время на уже решенную задачу?
Igor
onDetachedFromWindow вызывается же после onDestroy?
нее, это когда ты делаешь removeView
Ivan
Я имею ввиду, если брать ЖЦ активити
Igor
зачем тратить время на уже решенную задачу?
так времени одинаково а может и меньше уходит, и верстать значительно меньше
Azret
это как пилить свой хттп клиент, когда есть okhttp или пилить свою либу для загрузки картинок, когда есть picasso/glide или пилить свой DI, когда есть dagger/toothpick/koin
Ivan
Как понять что view сейчас отображается? Активити в onStop, в'юха работает, если данные придут после onSaveInstanceState будет плохо
Ivan
Так все можно решить, вопрос в удобстве)
Azret
и в размере\слаженности команды
Igor
и в размере\слаженности команды
проблема в том, что когда приложение очень быстро меняется MVP(minimum viable product) и очень жестко тестируется и нужен сложный дизайн, то невольно приходишь к таким вещам
Azret
к замене фрагментов на вью?
Azret
или к написанию своих либ?
Kostya
@OxygenVsInformation а что ты будешь делать, если твой дизайнер скажет, братишь, добавь мне тут пиксель тени, там смести, ты полезешь в дебри своего кода - где же там я и при каком условие добавлял этот чертов лэйаут. Я уже не говорю про поддерживаемость такого приложения. Прийдут люди после тебя, а там активити пустые, от заказчика баг пришел - вон там отображается лишний текст и они будут коппться в дебрях твоего проекта в поисках того самого слова лишнего.
Igor
Kostya
Довольно сумбурно изъяснился, но все же
Kostya
ну дизайн менять просто, а подддерживать сложнее тут согласен
Я просто сталкивался с такими проектами в стиле NewspaperListBox extends ListBox extends GeneratedBox extends Box extends BaseBox
Azret
фрагментов на вью
а сколько разработчиков у вас на проекте?
Igor
а сколько разработчиков у вас на проекте?
любую инфу связанную с разработкой и компанией говорить не могу, сорри
Kostya
все не так печально)
Но в итоге до этого длйдет, когда приходят новые люди, не понимают до конца всех тех тонкостей, которые ты вложил в проект и начинают свое дописывать
Igor
Но в итоге до этого длйдет, когда приходят новые люди, не понимают до конца всех тех тонкостей, которые ты вложил в проект и начинают свое дописывать
да есть в это здравое звено, но и при помощи фрагментов такого могут написать, я видел такие приложения, что проще было с чистого листа написать, так как черт голову сломит, тут конечно нет идеального решения, поэтому собственно вот и смотрю на минусы этого варианта
Kostya
Еще один минус
Kostya
Ты проектируешь во фрагменте - видишь ысе что нарисовал
Kostya
У тебя справа дизайнер стоит
Kostya
А программно только путем многочисленных отладок
Dyno
это нормально если один ip адрес приложения может лазить на сервер до 50 раз за ~13 секунд? То есть обычно это 3-10 запросов, но иногда может доходить и до 50 в крайних случаях, если пользователь поставил довольно жесткий фильтр. Просто api сервера не позволяет делать что мне надо, поэтому приходится так изворачиваться. Кажется, другого пути нет, но все-таки меня беспокоит этот вопрос