Dmitry
Crashlytics Beta
а если учетки неизвестны?
Bogdan
Подскажите плиз, возможно ли сделать так чтобы андроид делал что-то в фоне и не прекращал это делать даже если приложение было убито системой (не юзером)?
Mike
а если учетки неизвестны?
На старте спрашивать сервер, не пора ли обновиться.
Anonymous
а если учетки неизвестны?
https://developers.google.com/android-publisher/
Dmitry
На старте спрашивать сервер, не пора ли обновиться.
а как-то можно это обстряпать не заставляя юзера вручную качать арк? In-app update api не завезли еще вроде? Я сам бэкендер, про андроид ничего не знаю, поручили выяснить как лучше всего обновлять, поэтому сорян, если вопросы тупые)
Bogdan
Foreground service самый надежный вариант.
Спасибо погуглю, сейчас юзается JobScheduler, но он отваливается после того как приложение было убито системой.
Dmitry
Ну вот так, как я сказал. Firefox Nightly так делает.
мы хотим сделать чтобы после логина шел запрос с токеном на наше апи и проверялась версия. а как именно сразу обновиться, не давая юзеру ссылку?
Mike
мы хотим сделать чтобы после логина шел запрос с токеном на наше апи и проверялась версия. а как именно сразу обновиться, не давая юзеру ссылку?
Скачать APK, кинуть интент на установку. Пользователю останется только подтвердить. Логин и токен тут не при чём.
Mike
это в коде приложения делается? Дай плиз ссылку на доку или что гуглить?
Да. Скачивается APK, а потом google.com/?q=android+intent+to+install+apk
You
а если учетки неизвестны?
Нужна только почта
Илья
Господа, может быть кто-то сталкивался с подобным - начали сыпаться ошибки после НГ без явных изменений кода. Падает таска kaptDevDebugKotlin на dagger-e. Пробовал обновить/откатить версию dagger, kotlin, gradle... kapt везде прописан, всё работало. Локализовать проблемму не удается. Мб кто знает куда копать?
Andrew
Отбой, дальше по чату вижу требование не качать апк.
Andrew
Вот что значит, размытое ТЗ. Изначально надо было централизованное обновление онли, а в конце ещё и фул-авто и сервер.
Ory
hockeyapp, загружаешь в админке apk и всем кто добавлен приходят пуши, без особого контекста отвечаю если что)
Andrew
hockeyapp, загружаешь в админке apk и всем кто добавлен приходят пуши, без особого контекста отвечаю если что)
Арина, фабрик можно грузить автоматически ) и аппка ихняя поддерживает версионность.
Ory
в хоккей тоже можно вроде, ну я уж не помню, давно это было)
Turalllb
да, такая практика называется «говнокод»
Ооо, а же говорю чувствую что что то не так с этим подходом ) Ну а что у вас получается придумать разные названия интерфейсу и его реализации , особенно если в реализации больше ничего другого и нет
Serhii
Всем привет Может кто сталкивался, как CardView задать радиус углов програмно? Пробую задавать через setRadius() нефига не работает(
Andrew
надо в пикселях
Serhii
та я уже как не пробовал, вообще угол не круглит, квадрат и не вкакую(
Serhii
через xml все ок
Andrew
// Set the CardView corner radius programmatically mCardViewBottom.setRadius(9);
Andrew
ну в электричестве чудес не бывает
Andrew
может не ту нашёл
Andrew
может вообще не нашёл
Andrew
через xml все ок
а попробуй удалить из хмл углы а потом только программно задавать
Serhii
та я вообще всю вьюху прграмно задаю
Serhii
class FrontView : CardView { constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet) : super(context, attrs) init { id = R.id.card_view val lp = FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT) layoutParams = lp setBackgroundColor(context.color(R.color.colorAccent)) cardElevation = 1f radius = 20f } }
Andrew
щас я у себя соберу
Dzianis
может ему requestLayout нужно вызвать
Turalllb
А зачем тогда интерфейс?
Ну репозитория интерфейс. Для каждой фичи сделал отдельную реализацию. Интерфейс чтобы можно был подменить репозиторий. Да в репозитории могут быть и приватные методы которые определяют из сети или из бд качать или как то обрабатывают данные предварительно. (интеракторов выделенных у меня нет)
Serhii
ок
Andrew
какая то фигня именно при создании
Serhii
будем копать
Turalllb
Но название ему придумать тяжко. Этот класс реально чистая реализация интерфейса и поэтому в конце Impl очень смотрится. Назову по другому и потом путаницая, глаза бегаю когда класс нужный ищу, особенно если в разных фичах исправляю ошибку в архитектуре
Turalllb
А зачем?
Каждая фича имеет свои запросы, которые не пересакаются с другими. Ну вообще базовый интерфейс у этих интепфейсов тоже. Соблюдают солид без толстых интерфейсов чтобы
Andrew
Но название ему придумать тяжко. Этот класс реально чистая реализация интерфейса и поэтому в конце Impl очень смотрится. Назову по другому и потом путаницая, глаза бегаю когда класс нужный ищу, особенно если в разных фичах исправляю ошибку в архитектуре
Все, что не является интерфейсом, представляет собой реализацию, даже абстрактные классы, которые являются частичными реализациями. Собираетесь ли вы добавить этот глупый суффикс Impl для каждого имени каждого Class?
Andrew
Единственное, что уместно в наименованиях, это слово Abstract
Andrew
а всякие I, Impl, Interface, Class это тавтология
Andrew
да
Andrew
ну хорошо, можно перефразировать, единственное, что несёт хоть какой то смысл
Turalllb
Интерфейсы зачем если у них по одной реализации?
Для подмены реализации в будущем. На всякий случай. Зачем вьюхи подменяем , то же самое и тут. Репозиторий ведь в чистой архиьектуре на уровне вью лежит
Andrew
не треш а срач
Andrew
)))
Mike
ну хорошо, можно перефразировать, единственное, что несёт хоть какой то смысл
абстракный класс — это уже нарушение SRP и инкапсуляции, он не нужон
Turalllb
Сковывают руки как могут(
Mike
в большинстве языков вообще много говна есть, которое лучше никогда не использовать. Глобальные переменные, рефлексия и т. п.
Andrew
абстракный класс — это уже нарушение SRP и инкапсуляции, он не нужон
Абстрактные классы реализуют на практике один из принципов ООП — полиморфизм.
Turalllb
Абстрактные классы реализуют на практике один из принципов ООП — полиморфизм.
Именно. Кажется тема насчет интерфейса или абрактный класс завершается тем что, если наследование жесткое и не должно меняться, как Круг и квадрат это точки, то абстракция нужна.
Andrew
Интерфейсы справляются с этим не хуже.
В интерфейсах нельзя реализовать методы, которые могут (и должны) быть реализованы всеми потомками.
Andrew
вот гугловские классы
Andrew
http://prntscr.com/m5as22
Andrew
но кто такие гуглы
Mike
вот гугловские классы
в них вообще всё очень плохо
Andrew
да, я так и понял
Andrew
=)
Igor
А возможно ли динамически создать клас со стилями, не в styles.xml , а как бы в рантайме создавать, то что тебе нужно, например брать кастомные наборы стилей из txt файлов или получать джейсоном из сети?
Igor
Спасибо
Turalllb
Все, что не является интерфейсом, представляет собой реализацию, даже абстрактные классы, которые являются частичными реализациями. Собираетесь ли вы добавить этот глупый суффикс Impl для каждого имени каждого Class?
Нет конечно, зачем для каждого. Он нужен только чтобы интерфейс и класс его реалихующий и ничего больше не делающий кроме этой реализации имели не одно и то же название, ибо это невозможно
Turalllb
Есть репозиторий,есть базовый интерфейс который всем фичам нужен. Есть у каждой фичи свой интерфейс. И его реализация должна как то называться и тяжело да и не правильно называть разными именами интерфейс и этот его реализующий класс. Только лишняя нагрузка на голову
Anonymous
ты Бибер?