Pull to refresh
4
0
Михаил Панчуков @jericho_code

Программист Android

Send message

Общий подход к UI. Flutter все таки про кроссплатформу, а JC чисто android UI. Но, вроде помню интервью, что команды flutter и JC общаются / обмениваются идеями.

3 месяца из заголовка - это как понимаю реальное время? Если да, то сколько стоил рефакторинг в человеко-часах, если не секрет?)

По идее интернет может быть нужен для аналитики / отчетов о крашах (хотя не точно). Но вообще самый жирный кусок памяти отъедают всякие ресурсы (картинки, лого и тп, особенно если не в svg хранятся)
Меня больше позабавило, что для разработки используется «своя» ide, точь в точь Android Studio, только с другой иконкой
Проходил несколько циклов набора/сброса веса. Текущие результаты — 95->75, где-то за 7 месяцев. На начальных этапах просто начинал регулярно бегать / больше ходить. Никогда и ни при каком весе для меня это не было проблемой. Скорее всего тема не для всех, конечно.

Последние 7 кг уже кидал не бегом, «самоизоляция»+ переезд дали свои плоды и убили привычку/желание бегать. Попробовал полный отказ от сладкого и переодическое голодание. Примерно за месяц скинул 6 кг.

Из своего опыта могу посоветовать:
— начать больше двигаться / тренироваться. Потратите калории на тренировке, после тренировки (на восстановление), выбросите в кровь гормонов.
— перестать есть сладкое (и сахоросодержащее). Интернет полон исследований почему сахар это плохо
— изменить образ жизни вместо диет. Похудение это не про быстро сделал и забыл, килограммы с удовольствием возвращаются (я проверял это пару раз на себе и не факт что не проверю вновь)).

Скорее всего комментарий очевидный, но он про «ещё один пример из личного опыта»
Для чего вы указываете @SerializedName(«name») если имя переменной и так name (как минимум в случае с Gson это излишне, или я что-то упускаю)?  Если из-за proguard, то проще уже было бы весь класс "@Keep" пометить.
Ну про default лучший вариант сделать:

//предварительно сделав Preference open
class IntPreference(
    private val preferences: SharedPreferences,
    private val name: String
) : Preference<Int>(preferences, name, 0)

а вот «поменять хранилище значений» я честно не знаю (да и не могу придумать зачем)
Сильно упрощенный пример использования:
   // "за кадром" получаем ссылку на SharedPreference ( скорее всего инжектим)
    var myValue: String by Preference(
        preference,
        "KEY", // понятное дело, в реальном коде здесь будет ссылка на константу
        "DEFAULT_VALUE"
    )

   // кладем новое значение в shared pref
  myValue = "NEW_VALUE"
В такие классы можно добавить:

var onError = () -> Unit
var onSuccess = () -> Unit

и освободить их от работы с UI
А что за кейсы, когда нужен toast но нет context?
Я бы сделал toast (и большинство ваших функций) как фунцию-расширение для Context, на мой взгляд решение с синглтоном App спорное.
TextWatcherObject не обязательно должен быть классом, в Kotlin доступны интерфейсы с реализацией методов по умолчанию.
SharedPreferences я бы сделал в виде следующего делегата (для всех типов, а не только для строки)
Сбер покупает у вендров установку своих приложений, так что циферка тех кто скачал его по своей воле, а не увидел на своем huawei (и тп) после покупки так же может отличаться
Видео из этого курса от Yandex можно посмотреть на youtube
Если кодить на Kotlin, то не особо нужен (может только для байдинга ресурсов, но я бы не тянул его в проект). На Java — хз, наверное вполне можно использовать
Я бы переписал метод hasSpan вот так:
inline fun <reified T> Spanned.hasSpan() : Boolean 
        = nextSpanTransition(0, length, T::class.java) < length

Вызовы будут покрасивше, без передачи класса, да и extension напрашивается)
О, круто, у нас в проекте почти тоже самое, мы только до екстеншина не докрутили. Спасибо!
Немного не по теме вопрос: как у вас реализовано disposeOnDestroy()? Эта библиотека или вы сами реализовали? (нашел какую-то либу с таким методом, но она не внушает доверия на первый взгляд)
Обратите внимание на эту строку: app:motionDebug=«SHOW_ALL». Она позволяет нам выводить на экран отладочную информацию, траекторию движения объектов, состояния с началом и концом анимации, а также текущий прогресс. Строчка очень помогает при отладке, но не забудьте удалить её, прежде чем отправлять в прод

А нельзя написать
tools:motionDebug="SHOW_ALL"
чтоб потом не париться с удалением для прода, или работать не будет?

Ну и интересно как это новичку показывать свой проект нескольким профессиональным разработчикам. Платить им что ли?

Попробовать написать друзьям (или друзьям друзей и т.д). Думаю через пару рукопожатий можно найти человека, которому будет не в лом немного в чужом коде покопаться (мне вот не в лом, и я не думаю, что я такой один). Плюс мы вот когда искали себе людей в команду просматривали все проекты которые нам присылали, так что опять таки есть вероятность, что в конце концов и на собесах Ваш код будет полезен)
Вообще Гугл обычно везде в своих примерах пишет «что это лишь совет» и вы можете использовать вашу любимую архитектуру, если хотите. У Гугла есть своя реализация архитектуры с view model, вот они и показывают пример на ней) Лично у меня в одном из проектов есть очень похожая структура, где вместо view model идет presenter
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity