Общий подход к UI. Flutter все таки про кроссплатформу, а JC чисто android UI. Но, вроде помню интервью, что команды flutter и JC общаются / обмениваются идеями.
По идее интернет может быть нужен для аналитики / отчетов о крашах (хотя не точно). Но вообще самый жирный кусок памяти отъедают всякие ресурсы (картинки, лого и тп, особенно если не в svg хранятся)
Проходил несколько циклов набора/сброса веса. Текущие результаты — 95->75, где-то за 7 месяцев. На начальных этапах просто начинал регулярно бегать / больше ходить. Никогда и ни при каком весе для меня это не было проблемой. Скорее всего тема не для всех, конечно.
Последние 7 кг уже кидал не бегом, «самоизоляция»+ переезд дали свои плоды и убили привычку/желание бегать. Попробовал полный отказ от сладкого и переодическое голодание. Примерно за месяц скинул 6 кг.
Из своего опыта могу посоветовать:
— начать больше двигаться / тренироваться. Потратите калории на тренировке, после тренировки (на восстановление), выбросите в кровь гормонов.
— перестать есть сладкое (и сахоросодержащее). Интернет полон исследований почему сахар это плохо
— изменить образ жизни вместо диет. Похудение это не про быстро сделал и забыл, килограммы с удовольствием возвращаются (я проверял это пару раз на себе и не факт что не проверю вновь)).
Скорее всего комментарий очевидный, но он про «ещё один пример из личного опыта»
Для чего вы указываете @SerializedName(«name») если имя переменной и так name (как минимум в случае с Gson это излишне, или я что-то упускаю)? Если из-за proguard, то проще уже было бы весь класс "@Keep" пометить.
//предварительно сделав 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"
Я бы сделал toast (и большинство ваших функций) как фунцию-расширение для Context, на мой взгляд решение с синглтоном App спорное.
TextWatcherObject не обязательно должен быть классом, в Kotlin доступны интерфейсы с реализацией методов по умолчанию.
SharedPreferences я бы сделал в виде следующего делегата (для всех типов, а не только для строки)
Сбер покупает у вендров установку своих приложений, так что циферка тех кто скачал его по своей воле, а не увидел на своем huawei (и тп) после покупки так же может отличаться
Если кодить на Kotlin, то не особо нужен (может только для байдинга ресурсов, но я бы не тянул его в проект). На Java — хз, наверное вполне можно использовать
Немного не по теме вопрос: как у вас реализовано disposeOnDestroy()? Эта библиотека или вы сами реализовали? (нашел какую-то либу с таким методом, но она не внушает доверия на первый взгляд)
Обратите внимание на эту строку: app:motionDebug=«SHOW_ALL». Она позволяет нам выводить на экран отладочную информацию, траекторию движения объектов, состояния с началом и концом анимации, а также текущий прогресс. Строчка очень помогает при отладке, но не забудьте удалить её, прежде чем отправлять в прод
А нельзя написать
tools:motionDebug="SHOW_ALL"
чтоб потом не париться с удалением для прода, или работать не будет?
Ну и интересно как это новичку показывать свой проект нескольким профессиональным разработчикам. Платить им что ли?
Попробовать написать друзьям (или друзьям друзей и т.д). Думаю через пару рукопожатий можно найти человека, которому будет не в лом немного в чужом коде покопаться (мне вот не в лом, и я не думаю, что я такой один). Плюс мы вот когда искали себе людей в команду просматривали все проекты которые нам присылали, так что опять таки есть вероятность, что в конце концов и на собесах Ваш код будет полезен)
Вообще Гугл обычно везде в своих примерах пишет «что это лишь совет» и вы можете использовать вашу любимую архитектуру, если хотите. У Гугла есть своя реализация архитектуры с view model, вот они и показывают пример на ней) Лично у меня в одном из проектов есть очень похожая структура, где вместо view model идет presenter
Общий подход к UI. Flutter все таки про кроссплатформу, а JC чисто android UI. Но, вроде помню интервью, что команды flutter и JC общаются / обмениваются идеями.
3 месяца из заголовка - это как понимаю реальное время? Если да, то сколько стоил рефакторинг в человеко-часах, если не секрет?)
Последние 7 кг уже кидал не бегом, «самоизоляция»+ переезд дали свои плоды и убили привычку/желание бегать. Попробовал полный отказ от сладкого и переодическое голодание. Примерно за месяц скинул 6 кг.
Из своего опыта могу посоветовать:
— начать больше двигаться / тренироваться. Потратите калории на тренировке, после тренировки (на восстановление), выбросите в кровь гормонов.
— перестать есть сладкое (и сахоросодержащее). Интернет полон исследований почему сахар это плохо
— изменить образ жизни вместо диет. Похудение это не про быстро сделал и забыл, килограммы с удовольствием возвращаются (я проверял это пару раз на себе и не факт что не проверю вновь)).
Скорее всего комментарий очевидный, но он про «ещё один пример из личного опыта»
а вот «поменять хранилище значений» я честно не знаю (да и не могу придумать зачем)
и освободить их от работы с UI
TextWatcherObject не обязательно должен быть классом, в Kotlin доступны интерфейсы с реализацией методов по умолчанию.
SharedPreferences я бы сделал в виде следующего делегата (для всех типов, а не только для строки)
Вызовы будут покрасивше, без передачи класса, да и extension напрашивается)
А нельзя написать чтоб потом не париться с удалением для прода, или работать не будет?
Попробовать написать друзьям (или друзьям друзей и т.д). Думаю через пару рукопожатий можно найти человека, которому будет не в лом немного в чужом коде покопаться (мне вот не в лом, и я не думаю, что я такой один). Плюс мы вот когда искали себе людей в команду просматривали все проекты которые нам присылали, так что опять таки есть вероятность, что в конце концов и на собесах Ваш код будет полезен)