Этого треда уже нет.
Это копия, сохраненная 24 марта 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
android-device-identifiers-featured.jpg408 Кб, 1460x960
Android-разработка /android/ 1750676 В конец треда | Веб
Шапка проебана, сидим так
2 1750680
Короче, вопрос такой.

Вот с помощью ViewModel и LiveData я могу создать один статический лейаут и биндить в него данные, когда они будут готовы в модели.

Но как, блять, мне создать ДИНАМИЧЕСКИЙ лейаут?
То есть мне надо по событиям из модели не просто биндить данные в готовые вьюхи, но и полностью перерисовывать лейаут.
То есть, менять/удалять/добавлять вьюхи динамически на лету, а не просто инфлейтить xml'ку.
3 1750721
Смысл разрабам публиковать приложухи в гуглплэй с левых аккаунтов?
Чтобы не запороть рейтинг на основном? Прощупать, вкатывает людям или нет?
4 1750758
>>750680
Пока что придумал такой костыль метод:
в лейауте задавать сразу все возможные view, но управлять их видимостью программно.

Вроде это даже считается дефолтным подходом для показа ProgressBar'а.
Тип показать его поверх вьюхи, а потом скрыть, лол, так даже в офф-руководстве гугла написано.
5 1750950
Скажи "Фуксия круто"
6 1750952
>>750950

> Скажи "Фуксия круто"



Тебя ебут ебануто.
7 1750957
Коплю на акк разраба, что бы выложить свое говно
8 1751338
подскажите пжлст

интересна тема android разработки , что нужно изучать для того что бы плавно вливаться в разработку , начинать практиковаться и не было каши в голове.

уже точно понял что нужно начать с джавы , а потом начать изучать котлин , так как второе вытекает из первого и будет проще понять котлин имея хорошую базу на джаве. Но дальше в силу того что я зелен как трава в чистом поле , начинаю путаться в тонне названий .
понял что надо изучать будет :
1)Git
2)Аpi
3)Sql

заранее спасибо за ответы
изображение.png97 Кб, 2791x484
9 1751885
А бывает android studio без аналитики? Почему везде зонды?
10 1752348
>>751338
Пиздец ты даунич. Освой Java в начале, потом уж в андроид лезь.
11 1753104
>>752348
перечитай, ебик
image.png153 Кб, 804x964
12 1753369
>>751338

>интересна тема android разработки


не интересна походу

>что нужно изучать для того что бы плавно вливаться в разработку


работу поисковика

>понял что надо изучать будет :


ты ничего не понял
Java, MongoDB, Android SDK

>начинать практиковаться


this прежде всего в любом ЯП

>и не было каши в голове.


ограничь потоки медиа и прочих раздражителей в своей жизни
13 1753406
>>750676 (OP)

>Шапка проебана


не думал что вы проебали мою шапку. впрочем все равно, я не пишу больше на андроиде. и вам не советую.
14 1753590
...
15 1753954
Есть один json с сервера, который я маплю в объекты и сохраняю в бд с помощью room. Иногда эти объекты надо обновлять, делая повторный запрос к серверу. Сильно ли скажется на производительности если я буду просто удалять старые объекты из бд и записывать новые? Или лучше взять старые объекты из бд, сравнить с новыми и обновить если есть изменения?
16 1753986
>>753406
На какой стул сел?
17 1755416
>>751338
вкатывайся брат, главное что то делай.
сам учу, сижу кайфую
18 1755587
Тут такая хуйня, RecyclerView рандомно сохраняет части комплексной вьюхи, если они не были перебиндены в onBindViewHolder
Например, если у треда нет изображения, оно там может с нихуя появится из прошлого треда
RecyclerView же переиспользует как-то элементы списка? Выглядит, как будто если я не перебиндил каждый элемент, то он может остаться тем же, что и был до этого
То есть, если в прошлом треде я задал holder.imageViewPostImage, а в этом не задал, то там может остаться изображения с прошлого
Это норма?
19 1755611
Сеньор-архитектор снова в ожившем треде, чтобы ответить на ваши вопросы
Оп, как можно было проебать шапку?
>>750680
Что у тебя за задача? Как ты пришел к идее "перерисовывания"? Не советую заигрываться с лейаутом из кода, только время потратишь, но далеко не факт, что добьешься стабильной работы и решишь задачу. Из-за этого, кстати, Гугл пилит Jetpack Compose.
Какие вьюхи тебе нужны, какой функционал? Что нужно отображать, что изменяется, а что нет? Подробнее напиши.
>>751338
Основы программирования, логические операции -> Джава(базовый синтаксис и особенности языка) -> ООП -> особенности различных версий Джава -> алгоритмы и структуры данных -> многопоточность -> дженерики -> функции высшего порядка -> Котлин -> Android SDK(UI, версии и различия, особенности оси на уровне работы виртуальной машины) -> работа с БД, CRUD(можно и на этапе знакомства с алгоритмами) -> git -> networking/REST API/JSON/сериализация -> актуальные фреймворки(зачем и почему, спойлер: экономия времени ) -> архитектура, зависимости, инверсия контроля -> ?..
Вот примерный флоу, которому я бы следовал, если бы учился сейчас. начал бы сразу с алгоритмов, если честно
В эту же последовательность нужно вставить clean code, SOLID, DRY/DIE, KISS, YAGNI и прочие модные аббревиатуры, которые весьма актуальны. Что-то упустил, но, думаю, этого достаточно.
Читай документацию книги, минимум ютуба и туториалов.
>>753369

>Java, MongoDB, Android SDK


В голос
>>753954

>Сильно ли скажется на производительности


Зависит от количества объектов, лучше апдейтить. Ориентируйся на оправданность использования того или иного подхода. масштабируй
>>755587
о каком треде идёт речь?
RV всего лишь отображает данные, которые байндятся к позиции, так что всё зависит от того, чем и как ты его кормишь.
20 1755795
>>755611

>Что у тебя за задача? Как ты пришел к идее "перерисовывания"?


У меня BLOC-паттерн. Ну или упрощенно - стейт-система по типу Redux в жопаскрипте.
Суть в том, что интерфейс полностью соответствует текущему state.

if (state = LoadingState) рисуем прогресбар
if (state = ErrorState) рисуем ошибку
if (state = SuccessState) рисуем списочек

Сейчас у меня в этом месте несколько костыльно, ибо onCreateView() вызвается лишь 1 раз, а логичнее, чтобы интерфейс перерисовывался для каждого стейта.

Сейчас же у меня тупо progressbar скрыт и появляется поверх пустого списочка, а ошибка показывается снекбаром.
Короче, мне надо полностью перерисовывать интерфейс полсе того, как он был нарисован в onCreateView().
Не обязательно вручную, но надо переинфлейтить xml'ку
21 1755829
>>755795

>У меня BLOC-паттерн


>стейт-система по типу Redux


Если провести аналогию с BLoC, твой стейт должен реагировать поток данных, которые ты получаешь, будь то ViewModel или RX, где ты можешь вызывать коллбэки в зависимости от состояния Observable/Flowable. Соответственно, если ты используешь single activity, в активити у тебя будут оверрайд методы onSuccess, onLoading, onFailure от интерфейса, который она экстендит . В этих методах ты управляешь видимостью прогрессбара(он есть только в главной активити, т.к. она является контейнером с общей логикой отображение) и загружаешь нужный экран фрагмент для пользователя, в зависимости от состояния.
Если источник данных не поймал success, пользователь просто не попадёт во фрагмент со списком.(с RX это делается красиво)
Это общий принцип и важно понимать, что реализация зависит от используемой тобой архитектуры. но он хорошо масштабируется

>onCreateView() вызвается лишь 1 раз, а логичнее, чтобы интерфейс перерисовывался для каждого стейта


Не логичнее, это дорого, да и незачем лишний раз трогать жизненный цикл вьюхи. У тебя есть контейнер, который ожидает данные - он итак пустой, если их нет. Ты должен показать его пользователю, если они есть.
Почитай об MVI.
22 1755851
>>755829

>Если провести аналогию с BLoC, твой стейт должен реагировать поток данных, которые ты получаешь, будь то ViewModel или RX, где ты можешь вызывать коллбэки в зависимости от состояния Observable/Flowable


Вот именно это и происходит. Есть BlocViewModel : ViewModel, где есть метод mapEventToState(event: EventInterface): Flow<StateInterface>
Далее немного магии и преобразований и фрагмент подписывается на LiveData с этими стейтами.
Ну, как ты понимаешь, очень важно, что может быть только 1 актуальный стейт, не может быть сразу двух активных стейтов.

Вот в идеале этот обсервер стейтов должен быть чистой функцией, выдающей интерфейс в ответ на стейт, но пока это нихуя не выходит и приходится скрывать/показывать уже существующие в лейауте вьюхи, например, тот же прогресс-бар.

>загружаешь нужный фрагмент для пользователя, в зависимости от состояния


Вот юзать отдельный фрагмент на каждое состояние выглядит дорого и геморно... Или нет? Надо создать класс для фрагмента, xml для него... Хотя...
С другой стороны, отлично ложиться на чистоту обсервера стейтов - он будет просто высирать по фрагменту на стейт.
23 1755865
>>755851

>очень важно, что может быть только 1 актуальный стейт, не может быть сразу двух активных стейтов.


Ты можешь просто создать observer внутри фрагмента, проинициализировать в нём же интерфейс OnLoadState в onCreateView/onAttach и вызывать state.onSuccess(коллбэк), когда livedata.value не null. (адаптируй под флоу пользователя)

>Вот в идеале этот обсервер стейтов должен быть чистой функцией


Вот смотри, в MVI ты бы создал в активити функцию render(), которая содержала бы в себе when(state: State) и управляла прогрессбаром(один на всё приложение - хорошая практика, если юзаешь стейты, проще управлять), открывала бы фрагмент или показывала бы снекбар.
Ты обозреваешь данные, а не стейты. Стейты отвечают за доступ, а твоя задача - сообщить о том, что вот тут будет такой-то стейт.

>Вот юзать отдельный фрагмент на каждое состояние выглядит дорого и геморно


Ты, похоже, не понял меня.
Пример:
Активити -> фрагмент1 -> клик -> onLoading -> onSuccess -> фрагмент2. Ты мыслишь не в той плоскости, потому что всё то, что не связано с данными, которые могут отсутствовать, или условиями, которые могут не быть соблюдены(как успешная аутентификация), детерминировано.
24 1756076
>>755829
>>755865

>Почитай об MVI.


Почитал, все те же вариации на тему реактивщины под другим соусом, что и в Redux и в BLOC. Никакой новой инфы не узнал.
Суть везде та же.

>в MVI ты бы создал в активити функцию render(), которая содержала бы в себе when(state: State) и управляла прогрессбаром(один на всё приложение - хорошая практика, если юзаешь стейты, проще управлять), открывала бы фрагмент или показывала бы снекбар.


То есть, глобальный обработчик стейтов, один на все приложение?

Вообще, я, да и не только я, разделяю понятие стейта и побочного эффекта. Стейт - это то, что остается после изменения конфигурации. Перевернул экран - списочек все тот же.
Побочный эффект же характерен тем, что возникает только 1 раз, при этом стейт не меняется. К этому относятся показ снекбара, диалога, осуществление навигации на другой фрагмент и т.п.


>Ты обозреваешь данные, а не стейты


Вот тут не понял. Стейт же и есть данные для UI.

Но смотри, с какими проблемами я сталкиваюсь при работе со всей этой реактивщиной и стремлением к максимальной чистоте функций.
1) Если сделать полную перерисовку интерфейса в ответ на стейт (обсервер стейтов идеальная чистая функция), то при изменении конфигурации будет сброшена, например, позиция списка, потому что он фактически перерисован заново. Хотя ее тоже можно сделать частью стейта, но по мне так это больше деталь реализации UI и об этом вообще я думать не должен.
2) Если обсервер стейтов не чистая функция, то возникают непредсказуемые побочные эффекты, теряется контроль над фактическим состоянием UI, он перестает соответствовать объекту стейта.

>Активити -> фрагмент1 -> клик -> onLoading -> onSuccess -> фрагмент2


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

Ну и еще, если создать глобальный обработчик событий и стейтов, то каждое событие и каждый стейт должны быть уникальными.
Сейчас у меня есть универсальные события типа ListItemClicked, которые могут иметь разный смысл в контекте разных BlocViewModel.
24 1756076
>>755829
>>755865

>Почитай об MVI.


Почитал, все те же вариации на тему реактивщины под другим соусом, что и в Redux и в BLOC. Никакой новой инфы не узнал.
Суть везде та же.

>в MVI ты бы создал в активити функцию render(), которая содержала бы в себе when(state: State) и управляла прогрессбаром(один на всё приложение - хорошая практика, если юзаешь стейты, проще управлять), открывала бы фрагмент или показывала бы снекбар.


То есть, глобальный обработчик стейтов, один на все приложение?

Вообще, я, да и не только я, разделяю понятие стейта и побочного эффекта. Стейт - это то, что остается после изменения конфигурации. Перевернул экран - списочек все тот же.
Побочный эффект же характерен тем, что возникает только 1 раз, при этом стейт не меняется. К этому относятся показ снекбара, диалога, осуществление навигации на другой фрагмент и т.п.


>Ты обозреваешь данные, а не стейты


Вот тут не понял. Стейт же и есть данные для UI.

Но смотри, с какими проблемами я сталкиваюсь при работе со всей этой реактивщиной и стремлением к максимальной чистоте функций.
1) Если сделать полную перерисовку интерфейса в ответ на стейт (обсервер стейтов идеальная чистая функция), то при изменении конфигурации будет сброшена, например, позиция списка, потому что он фактически перерисован заново. Хотя ее тоже можно сделать частью стейта, но по мне так это больше деталь реализации UI и об этом вообще я думать не должен.
2) Если обсервер стейтов не чистая функция, то возникают непредсказуемые побочные эффекты, теряется контроль над фактическим состоянием UI, он перестает соответствовать объекту стейта.

>Активити -> фрагмент1 -> клик -> onLoading -> onSuccess -> фрагмент2


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

Ну и еще, если создать глобальный обработчик событий и стейтов, то каждое событие и каждый стейт должны быть уникальными.
Сейчас у меня есть универсальные события типа ListItemClicked, которые могут иметь разный смысл в контекте разных BlocViewModel.
25 1756084
>>755865

>Ты можешь просто создать observer внутри фрагмента, проинициализировать в нём же интерфейс OnLoadState в onCreateView/onAttach и вызывать state.onSuccess(коллбэк), когда livedata.value не null. (адаптируй под флоу пользователя)


Вот про это по-подробнее, плиз.

Еще есть охуенная проблема, как все эти стейты и реактивность положить на жизненный цикл ведра и его особенности.
Например, те же фрагменты
26 1756158
>>756076

>Вообще, я, да и не только я, разделяю понятие стейта и побочного эффекта.


Дело в том, что я придерживаюсь следующего принципа - есть UI стейты(которые не могут изменять объекты и, собственно, конечны в своём выполнении, ответственны только за свою отработку в качестве "ключа", так что сайд эффекты исключаются), которые должны выступать ограничением для пользователя и выстраивать его "флоу"(Простые коллбэки, которые вызываются тогда, когда данные получены(observer livedata). Важные, например, сессионные данные (вроде id и подобного) передаются через бандл), есть состояние самих данных в репозитории, откуда они идут во viewmodel, которые либо есть, либо отсутствуют. Получать данные или состояние данных нужно во вьюмодели/презентере, UI должен только обозревать их и реагировать(обновляться, отображать и т.д.).
>>756084

>Вот про это по-подробнее, плиз.


Например, в onAttach создаешь callback = context as StateListener, хендлишь ClassCastException через try/catch, при нажатии на кнопку вызываешь callback.onLoadList, который либо загружает фрагмент со списком(получая данные из viewmodel), либо делает что-то, что предусмотрено в этом случае.

>как все эти стейты и реактивность положить на жизненный цикл ведра


Делать можно как угодно, хоть создавать compositeDisposables прямо во фрагменте или активити и развлекаться, диспозить в onDetach. не стоит так делать Есть ли в этом необходимость? Логика должна быть разделена, модули должны быть изолированы.
Не до конца понимаю твоих намерений. Чтобы отобразить фрагмент со списком, можно просто чекать value livedata и выбрасывать onError, если данные где-то подкосило, потому что все ивенты в итоге приходят во viewmodel, но никак не в UI слой.
27 1756473
>>756158
Смотри, у меня сейчас точкой входа является фрагмент.

Фрагмент сразу же рисует RecyclerView с пустыми данными и отправляет событие Initialized в модель.
Модель в ответ на это событие начинает грузить данные и эмитит стейт Loading, затем стейт Success со ссылкой на данные (которые все еще в самой моделе).
Фрагмент ловит стейт Success и тупо заменяет тот пустой лист-плейсхолдер на эти данные (по ссылке).

Еще у меня стоят коллбеки на свайпы элементов списка, которые тупо отправляют соответствующие события в модель.
Модель в ответ на них удаляет или изменяет ДАННЫЕ (которые хранятся в самой моделе) и отправляет действие (я так называю побочный эффект) о том, что элемент, допустим удален.
Фрагмент ловит это действие и нотифит адаптер о том, что данные изменились. И интерфейс листа красиво показывает анимацию удаления элемента.
Фишка в том, что стейт-то не изменился. Просто побочный эффект привел к изменению самих данных.
Стейт, способ отображения UI каким был, таким и остался, удали хоть все элементы.

Несмотря на кажущуюся всратость, это оказалось на редкость живучей хуйней, которая позволяет мне лавировать между всеми этими колбеками, адаптерами и побочными эффектами.

Но только прикол в том, что фактически стейт у меня на фрагмент всегда один, хотя их может быть тип много.

Вот в идеале надо бы как-то это в коде обозначить, что стейт = фрагмент, всегда.
Тогда возникает вопрос с точкой входа.
Сейчас это сам этот фрагмент.

Но в идеале точка входа должна быть какой-то другой.
Чтобы некая хуйня обсервила стейты и в ответ на каждый запускала фрагмент.
То есть, чтобы если модель выдала ошибку - сразу и нарисовался фрагмент ошибки, а если норм данные - то сразу запустился фрагмент с норм данными.
НО. Тут еще дело в том, что как именно эти фрагменты запускать.
Потому что иногда мне надо в пределах того же ЭКРАНА полностью перерисовать интерфейс, то есть таки сменить стейт, а иногда мне надо запустить навигацию на новый фрагмент, чтобы он остался в стеке переходов.

То есть, поменять стейт без перехода в рамках того же "экрана" или же перейти на новый фрагмент-экран...
27 1756473
>>756158
Смотри, у меня сейчас точкой входа является фрагмент.

Фрагмент сразу же рисует RecyclerView с пустыми данными и отправляет событие Initialized в модель.
Модель в ответ на это событие начинает грузить данные и эмитит стейт Loading, затем стейт Success со ссылкой на данные (которые все еще в самой моделе).
Фрагмент ловит стейт Success и тупо заменяет тот пустой лист-плейсхолдер на эти данные (по ссылке).

Еще у меня стоят коллбеки на свайпы элементов списка, которые тупо отправляют соответствующие события в модель.
Модель в ответ на них удаляет или изменяет ДАННЫЕ (которые хранятся в самой моделе) и отправляет действие (я так называю побочный эффект) о том, что элемент, допустим удален.
Фрагмент ловит это действие и нотифит адаптер о том, что данные изменились. И интерфейс листа красиво показывает анимацию удаления элемента.
Фишка в том, что стейт-то не изменился. Просто побочный эффект привел к изменению самих данных.
Стейт, способ отображения UI каким был, таким и остался, удали хоть все элементы.

Несмотря на кажущуюся всратость, это оказалось на редкость живучей хуйней, которая позволяет мне лавировать между всеми этими колбеками, адаптерами и побочными эффектами.

Но только прикол в том, что фактически стейт у меня на фрагмент всегда один, хотя их может быть тип много.

Вот в идеале надо бы как-то это в коде обозначить, что стейт = фрагмент, всегда.
Тогда возникает вопрос с точкой входа.
Сейчас это сам этот фрагмент.

Но в идеале точка входа должна быть какой-то другой.
Чтобы некая хуйня обсервила стейты и в ответ на каждый запускала фрагмент.
То есть, чтобы если модель выдала ошибку - сразу и нарисовался фрагмент ошибки, а если норм данные - то сразу запустился фрагмент с норм данными.
НО. Тут еще дело в том, что как именно эти фрагменты запускать.
Потому что иногда мне надо в пределах того же ЭКРАНА полностью перерисовать интерфейс, то есть таки сменить стейт, а иногда мне надо запустить навигацию на новый фрагмент, чтобы он остался в стеке переходов.

То есть, поменять стейт без перехода в рамках того же "экрана" или же перейти на новый фрагмент-экран...
28 1756492
>>756473
Распишу подход, мб пригодится и что-то применишь.
Если пилить по чистой архитектуре:
Модель должна содержать только описание объектов, репозитория(абстракцию) и юзкейсы для получения данных в презентере/viewmodel. Данными ты манипулируешь(получаешь тем или иным способом, кэшируешь и т.д.) в другом слое(с реализацией абстрактного репозитория), где могут быть мапперы для модели и всё то, что делает модуль максимально изолированным, но нет андроида - он во view слое, где и viewmodel(которая реализует юзкейсы). Всё это позволяет сильно упростить жизнь.
Интересно, как у тебя выглядит фрагмент ошибки? И зачем ей свой фрагмент?
Точка входа - активити, которая ловит коллбэки(loadNameScreen, где тебе прогрессбар/диалог/снэкбар и все остальное) и навигейтит во фрагменты через navhost(тут же легко реализуется бэкстэк и бандл, куда можно что-то передать, к примеру, флаг, который будет влиять на отображение компонентов внутри фрагмента). Сделать god object'ом активити в этом случае очень сложно, если ограничиться навигацией. Работать с таким кодом приятно.
29 1756495
Хотел написать нормально, а получилось как обычно, рейтаните код плиииззз.
https://github.com/Weydile/Shopping-list-android
1595357902414.jpg129 Кб, 1080x2160
30 1757156
>>756492

>Интересно, как у тебя выглядит фрагмент ошибки? И зачем ей свой фрагмент?

31 1757172
Как победить андроид студию
32 1757701
Стоит ли вкатываться в андроид разработку или лучше идти в плюсы или питон?
33 1757779
>>757701
Нет, раз ты задаешь этот вопрос.
34 1757924
Кто что думает по поводу Flutter. Будет ли он востребован в ближайшее время?
35 1757993
>>757779
Ясно все с вами
36 1758694
>>755611
Ебать какое же дерьмо в голове

>сениор


разве что в мобильном геймдеве друк
37 1758810
>>758694

>Ебать какое же дерьмо в голове


Поясняй, вкотя, что не так?
изображение.png113 Кб, 640x1280
38 1758834
>>750676 (OP)
подскажиет, обязательно делать приложение по правилам material дизайна чтобы оно выглядело как нативное андроид приложение, я на qml делаю макет сейчас, и вот делаю дизаин как мне нравится, но набрёл на правила material дизайни и хуй знает, подстраиваться ли, или делать так как в голове вырисовалось.
39 1758835
>>758834
сука вопросительные знаки проебал :<
40 1758881
>>758834
Лучше делай
На пике кривая верстка
41 1759010
>>750676 (OP)
Сап, котаны, есть 2 интеесных вопроса:

1) Если я хочу отображать состояние из Foreground Service в UI через LiveData, то должен ли сервис непосредственно вызывать метод postValue и передавать туда новый экземпляр объекта, который описывает состояние?

2) В чем практический смысл Dependency injection, особенно Dagger 2?
42 1759058
>>750676 (OP)
Привет. Пытаюсь создать в новый build type в gradle. Прописал его в buildTypes, создал директорию в src с AndroidManifest итд. Но он не появился в assemble tasks. Что я делаю не так?
43 1759067
>>758881
да, я это понимаю что слишком тонкий хедер и в футер лучше бы ещё что то добавить чтобы 3 кнопки было, но вопрос у меня стоит в том: нужно ли всем правилам следовать или можно юзать свои иконки вместо material иконок и свои идеи в некоторых местах?
44 1759140
>>759010
1) Ты должен вызывать postValue с состоянием во viewmodel, обозревая livedata в UI.
2) Реализует DI-паттерн, сокращает количество кода, генерируя dagger и hilt, другие же реализуют паттерн service locator и дергают зависимости без подробностей реализации, когда зависимый объект в них нуждается логику создания объектов(фабрики для viewmodel, например) и позволяя создавать новые объекты с помощью аннотаций. создает граф зависимостей Упрощает работу с зависимостями в самом коде и тестах.
>>759067
Нужно или нет - решать тебе, суть material в самой концепции взаимодействия компонентов интерфейса, образующих "материальный дизайн". Он просто предоставляет тебе инструменты и гайдлайны. Я стараюсь придерживаться, если это возможно.
45 1759150
>>759140
спасибо за ответ.
46 1759188
>>758834
Если твой уровень понимания UX на пике - то делай строго по material и не еби мозг пользователям. UX designer - это как бы професия, за это деньги платят и там есть что изучать что бы хуй ложить на метериал.
47 1759206
>>759188
ну у меня уровень понимания UX скорее на хуях чем на пике, ну думаю сделаю макет руководствуясь изредка material, просто я хз они иконки предоставляют, а платные они или фришные я так и не понял, поэтому беру иконки с другого сайта с указанием авторства, потом перевернул телефон, понял что то что на якорях не закреплено, съехало нахуй)) и как оно всё будет себя вести на другом телефоне тож хз, потому что AVD требует 70гб памяти, а у меня на линухе столько нету, и тестирую на своём телефоне, если есть опция запретить поворот, было бы найс. Я просто вот вот пришёл к андроид разработке после qt десктопа на уровне лаб универа (а-ля сделать графический редактор фоток и тд), и понял что вот это наиболее доставляет пока что, поэтому и пытаюсь понять куда двигаться и что делать, и не особо знаком пока со всеми правилами.
48 1759213
>>759188
двачую
>>759206

>просто я хз они иконки предоставляют, а платные они или фришные я так и не понял


Our icons are free for everyone to use. Please don’t try to sell them.
https://material.io/resources/icons/?style=baseline

>AVD требует 70гб памяти


Ты про дефолтный? Я от него отказался ровно в тот момент, когда впервые появилась ошибка конфигурации девайся, связанная с boot-типом и ключами, что либо фиксится на какое-то время, а затем появляется вновь, либо не фиксится. слишком много проблем с ним Использую Genymotion, очень лёгкий и удобный.
49 1759217
>>759213
сенкс!
50 1759373
>>759140
1) Каким образом я это сделаю, если источник этих данных внутри foreground service? Предлагаешь binding и intetns? А почему тогда всякие базы данных и репозитории можно хранить внутри application и вызывать откуда угодно, а здесь так нельзя?
51 1759379
>>759373
Алсо, если только сделать observeForever внутри ViewModel для той ливдаты, через которую данные с сервиса пиздячат.
52 1759413
>>759373
Ранее ты написал, что тебе нужно обозревать состояние, которое относится к данным уровня фреймворка(читай андроида) к этому же уровню относится сам сервис, поэтому не место в слое данных - он должен быть изолирован , так что с репозиторием тут нет ничего общего и ты можешь получать его прямо во viewmodel с помощью LifecycleService.AndroidViewModel нужна как раз для таких случаев, когда нужен доступ к контексту, хотя лучше стараться не использовать её
>>759379

>сделать observeForever внутри ViewModel


Довольно костыльно, но пробуй. Повторюсь, что в идеале ты должен получить данные во viewmodel и положить их в livedata, чтобы они ушли в UI через observe. Пробуй разные подходы и адаптируй под свою архитектуру. А ещё лучше - изначально выбирать подход, исходя из имеющейся архитектуры
Вариантов тут реально много, но для того, чтобы выбрать подходящий, нужно понимать степень изолированности модулей в твоем коде. в большинстве гайдов ты вообще увидишь, что сервис связывают с жц актвити и жонглируют интентами/бандлами
53 1759421
Братишки, как дела с андроид фрилансом? Дохуя ли работы? Нормальные ли рейты? Можно ли с заебавшего тырпрайза вкатиться по бырому? Или нужно пару лет отсидеть в офисе?
54 1759429
>>759413

>сервис связывают с жц актвити и жонглируют интентами/бандлами


Это же ужасно! Для передачи данных в сторону сервиса можно использовать startService с интентом. Но вот в обратную сторону хочется эти данные через репозиторий гонять, который выдает livedata, на обновление которых я подпишусь в observe forever внутри ViewModel.
55 1759461
>>759429
Ужасно, но, как видишь, вариантов реализации много, всё зависит от требований.
К слову, иногда использование бандла позволяет существенно сократить количество кода и убрать лишнюю цепочку вызовов. Например, можно засунуть что-то в бандл, а оттуда в livedata, которая обозревается.
56 1759978
Ну рейтаните, чё вам жалко чтоле?
https://github.com/Weydile/WeatherService-android-application
57 1760024
>>759978
Кто ты ожидаешь что рейтанет? Тут одни вкатоиды.

мимо шел из крестотреда
58 1760032
>>760024
Какой-нибудь мимомидл, очевидно же.
59 1760059
>>759978
бахнул star, сойдёт?)
60 1760105
>>759978
1) presenter не должен пересоздаваться
2) вся логика со свитчем внутри презентера должна быть
3) зачем нужен презентер, когда сейчас вьюмодель в тренде
61 1760170
API возвращает два объекта. Один объект, в котором лежит массив всех входных данных, имеет вид var message: Map(String, List<String>). Мне нужно ключи отоброзить в списке через адаптер. В другом окне при переходе отобразить список значений, списком тоже.
Как мне это распарсить? Что пихать в адаптер? И тут ещё ретрофит и рум. Как сделать так, чтобы POJO и еntity были разными классами?
Спасайте, поцоны.
62 1760384
>>760059
Пасиб)
63 1760385
>>760105

>1) presenter не должен пересоздаваться


А где он там пересоздаётся?
64 1760825
>>760170

> var message: Map(String, List<String>)


val?

Делаешь репозитории с апи и руммом

Для каждого свои дата классы
И DTO для слоя бизнес логики и дальше

Репозитории отдают максимально простые структуры
Список строк там

Пихаешь в адаптер это
65 1761237
>>760385
onCreate в активити
66 1761244
>>761237
А, я понял, правильнее будет передавать его через onSavedInstanceState?
67 1761364
>>761244
Там не остается тот же обьект
68 1761402
>>761364
Ну да, там ссылка на него.
А как тогда?
69 1761633
>>761402
Короч юзай viewmodel из aac, можешь даже свой презентер отнаследовать от него
image.png4 Кб, 494x133
70 1761731
!ХЕЛП!

Есть один сикбар. Так вот если я тавлю ему padding start, то на канвасе проебываются все масштабы при перерисовавывании тогла. КАКОГО ХУЯ. Часов 6 решение ищу.
Пикрандом.
71 1761732
>>761731
С меня 3 бочки нефти
72 1761830
>>761731
Не трогай его вообще, меняй атрибуты его контейнера
73 1761838
Ребята, расскажите как дела с пиратством сейчас на Андроиде? Пиратят ли ваши аппы? Много ли убытков?
74 1761937
>>750957
100/1700
75 1762182
Анон, посоветуй книг для изучения Java. Начал с head first, но чувствую, что меня наебывают и это какое-то говно. Есть книжки с более структурированным изложением?
76 1762274
>>762182
Head First наиболее структурирован, как мне кажется. Начни читать другие книги и продолжай ту, которая зайдет, вот и всё.
77 1762529
>>759421
Не игнорьте мой пост, пожалуйста. Хотя смею предположить, что от подобных тем вас уже тошнит.
78 1762931
Вопрос не по программированию, но я думаю, что вы как разработчики знаете на него ответ.

Значит у меня старый телибон Xperia Ведроид. Оттуда мне надо взять смски и сохранить их на компьютер.

Я пробовал это сделать с помощью программы Xperia Companion, там пытался backup сделать смс сообщений. Но программа все время отваливается и говорит, что backup смс был неудачный. Интуитивно я думаю, что телибон слишком старый, и программа не умеет с ним контактировать.

Вопрос такой - как сохранить на компьютер смс с Андроид телефона так, чтобы можно было потом в будущем в нужный момент наоборот взять с компьютера сохраненные смс и заново вставить в телефон, чтобы эти смс отображались в телефоне.

Заранее спасибо, пожалуйста, ответьте на мой ответ.
79 1763074
Аноны, я мимо макака-бекендер php + nodejs.
Хочу немного окунуться в мир мобильной разработки.

серверную часть на пхп || ноде пишут?

Может начать с какого нибудь фреймворка флатер или реакт нэйтив?
Реакт я знаю немного по вэбу.
80 1763090
>>763074

>серверную часть на пхп || ноде пишут?



Хоть на чем

>Может начать с какого нибудь фреймворка флатер или реакт нэйтив?



Так можно делать только простые приложения
Коммерчески это все почти не используется
81 1763097
>>763090
Хм...
А посредством флатер или реакт нэйтив я смогу понять как вообще работать с системными механизмами в андроид? Или там все это зарыто в абстракции? Или при работе с джавой все тоже зарыто в абстракции?

Попердолиться может с Джавой тогда, говорят современный пхп довольно сильно на нее похож. Может быстро разгребусь. а еще айфоны блядь
82 1763100
>>763097

>>Или там все это зарыто в абстракции?


туплю, они же мультиплатформа. Значит полюбому все - абстракция
83 1764354
Анон, подскажи ньюфагу.
Хочу сделать добавление элементов интерфейса программно. По клику на "ADD" появляется новый столбец в контент-части. Столбец, в идеале, занимает всё пространство контент-части. Когда появляется новый столбец - пространство делится между всеми столбцами поровну.

Задизайнил это в студии.
Если я добавляю элементы вручную в дизайнере, то всё работает как надо, пик 1.
Если я добавляю программно, то всё работает не так как запланировано, пик 2.
Код вставки - пик 3.
Вставляемый XML - https://pastebin.com/yB0a2R5T

Что делать, в чём моя ошибка?
84 1764355
Как в XML Сделать линию с закругленными краями?
85 1764370
>>764354
Решение ужасное
Убирай из xml всё лишнее, оставь только кнопки для управления. Затем создай контейнер(ресайклер, например) во фрагменте и добавляй новый айтем, который будет создавать вьюху. Так ты не просто создашь вьюху, но и сможешь манипулировать айтемом в целом, читай: задавать поведение, управлять жц.
>>764355

>линию с закругленными краями


Это как?
Если ты имеешь в виду края вьюхи, гугли shape, если речь идет о холсте, пикселях и т.д. - гугли сглаживание для своего кейса.
86 1764377
>>764370

>Убирай из xml всё лишнее, оставь только кнопки для управления. Затем создай контейнер(ресайклер, например) во фрагменте и добавляй новый айтем, который будет создавать вьюху. Так ты не просто создашь вьюху, но и сможешь манипулировать айтемом в целом, читай: задавать поведение, управлять жц.


Спасибо, сейчас буду пробовать.
87 1764389
>>764370

>Если ты имеешь в виду края вьюхи, гугли shape


Ну, как оказалось корнерсы можно задать только ректанглу, так что прийдется танцевать с бубном. Канвас не вариант.
88 1764563
Студент 3 курса, знаю на среднем уровне яву, базово кресты, базовые паттерны проектирования, немного питона, линал, матлаб. ХОРОШО РАЗБИРАЮСЬ В UI И MATERIAL DESIGN
Под ведро никогда не прогал. Реально за пару месяцев по гугловским курсам базовые вещи изучить и устроиться на джуна по 10$/h? По удаленке
Спс
89 1764772
>>764563

>базовые паттерны проектирования


Есть сорцы твоих проектов, где ты их применял?
90 1764820
хуявей хочет чтобы я залил туда свою поделку. какие подводные? Все что на гугл сервисах сламается?
91 1764827
>>764772
Зачем тебе мои сырцы, лол? Адаптер, фабрика, че там особо сырцить
92 1765212
>>764563
Нет. Нереально. Ведройд по знаниям сравним с вебом. Без либ ты далеко не уедешь.

Чтобы наслаждаться SDK нужно либо в иос, либо в скалу, либо в ерланг.
93 1765246
>>765212
Т.е. айосу за 2-3 месяца научиться можно?
94 1765359
>>764827
Мне они не нужны. Они нужны работодателю
95 1765444
>>764563

>по гугловским курсам базовые вещи изучить и устроиться на джуна по 10$/h? По удаленке


>2020



Лол))0))
96 1765445
>>765444

>по 1.5$/h? По удаленке


Пофиксил
97 1765447
>>759421

>андроид фрилансом


Ну имхо сейчас с 0 в фриланс вкатиться можно только в вебе. Особенно там не востребована нативная ведроид-разработка на жабе/котлине. Вкатись в реакт, научись быстро клепать говно и под ведро и под айос - перспектив на фрилансе в 10 раз больше.
98 1765449
>>759010

>2) В чем практический смысл Dependency injection, особенно Dagger 2?


В выкачивании бабок с заказчика с аргументом "нужно время на внедрение еба-технологии"
99 1765469
>>765449
Слишком толсто, чересчур.
100 1765497
>>765469
Ну если СИРОЗНЕЕ - то если это
1) проект на год+
2) будут unit/ui-тесты

То да, имеет смысл встраивать в архитектуру di
101 1765513
>>765447
а в чем проблема с фрилансом под андроид? я захожу на апворк, фл.ру и там всегда полно работы
102 1765544
>>765497
Это удобно, тестируемо и масштабируемо, поэтому имеет смысл использовать di в любом случае, будь то маленький или большой проект. И нет разницы в том, делает ли это фреймворк, потому что хорошая архитектура нуждается в ограничениях и изолированности, которые предоставляет di. Говоря о фреймворках, нет смысла отказываться от потенциальной экономии времени и ресурсов, упрощенного сопровождения, потому что накладные расходы внедрения минимальны, говоря о новых проектах. При внедрении в легаси проекты ты тратишь чуть больше ресурсов на старте, но в итоге получаешь плато, которое позволяет расширять проект с минимальными затратами, имея оттестированные компоненты, что также сокращает потенциальные расходы.
103 1765944
>>765544

>тестируемо и масштабируемо


Нууу, т.е. под проект с тестами и определенным масштабом.
104 1765993
>>765944
Любой коммерческий продукт. Понятно, что в своих поделках, можно делать как угодно.
105 1766103
106 1766601
Ананасы, вопрос такой.
Раньше никогда ничего под андроид не писал, но вот решил тут попробовать изучать vulkan апи такое графическое, комп у меня говно.
А вот чип в телефоне вроде как поддерживает, правда как проверить драйвера и прочее - хз.
Так вот, может быть где-то есть где-то туторы и гайды как вести разработку без монструозной андроид студии (пускай даже в блокноте, похер) и создании апкшки?
107 1766662
>>766601
Гугли что-то типа build android from comand line, видел много статьей, если хочешь понять что куда.
Как написал всю хуйню в блокноте можешь в консольке ебнуть ./gradlew :my-super-app:installDebug это соберет и установит апку на подключенный девайс.
108 1766782
Сап, /пр, долбоёб на линии. Нихуя толком не умею и не понимаю, возникла надобность скачать исходники приложения с гитхаба и чутка поправить пару менюшек, чтобы убрать оттуда лишние пункты.
Я скачал android studio, установил её, скачал исходники в zip-файле, распаковал, запустил студию, выбрал "open existing android atudio project". Оно вроде открылося, но дальше янихуянепонел.
Начались всякие проблемы при попытке собрать проект без каких-либо изменений, при попытке создать эмулятор андроида.
Пикрелейтед1 - сразу после открытия и попытки собрать.
Пикрелейтед2 - если нажать на ссылку "Update NDK version to 21.3.6528147 and sync project" в пикрелейтеде1
Пикрелейтед3 - окошко добавления конфигурации, что в нём вообще нужно выбирать? Если я выбираю "android app", мне дальше нужно выбрать какой-то модуль, но в списке нет модулей нихуя. Пикрелейтед4 собственно оно.

Как мне ПРОСТО настроить эту студию и ПРОСТО собирать приложение? Мне надо-то сделать всего несколько правок, ёбана. Автор, точнее тот человек, кто сейчас занимается этим приложением, сказал, что не использует IDE и ничего не может подсказать по этому поводу. Щито мне делать и как добиться желаемого?
109 1768342
Парни, есть у кого база модеров и ботов плей маркета?
110 1770269
Мне 17. !8 будет не скоро. Гугл плей требует паспорт гражданина РФ. Че будет, если скинуть им фейковый скан паспорта?
111 1770274
>>770269
Есть еще студенческий, могу его сейчас попробовать отправить
112 1770390
Я хочу чтобы некоторые языки использовали 1 хмл файл со стрингами. Например, чтобы русский был у тех у кого на телефоне стоит белорусский или казахстанский язык. Как это можно сделать? Не хочется тупо копировать хмл в новые файлы, у меня 25к строк текста. Дефолтный язык - английский.
113 1770394
>>770390
Наверн придется тупо копировать. Почитал что апп бандл не хранит все языки, а скачивает тока тот что нужно. Значит это не скажется на размере приложения.. Если есть лучшие решения, жду ответа.
Довольно популярная проблема, мне кажется, но в сети об этом почти нет инфы.
114 1770413
Есть ли способ сделать полностью полноэкранную активити? Чтобы даже по свайпу у краёв не показывались статусбар и навбар?
Второй вопрос: а сделать полностью прозрачную активити?
115 1770632
>>770390
Ну походу норм никак, только костылить с
Locale current = getResources().getConfiguration().locale
А ваще с 7ого андроида, юзер может выбирать несколько языков. Если белорус не ярый патриот, то наверняка за белорусским будет стоять русский, и потом английский. Ну и дроид будет смотреть что есть в аппе.
116 1770720
>>770274
Студенческий не приняли. Буду в наглую говорить, что мне нет 18 и отошлю пасспорт
117 1770830
>>770413

>полностью полноэкранную активити


>не показывались статусбар и навбар


Через стиль, либо через флаги WIndowManager'а.(Window в 21+) У Навбара свои флаги.

> полностью прозрачную активити


То же самое, только дёргаешь транспарентность.
На кой хер она тебе?
118 1771035
Немного нестандартный вопрос.
Нужен ноутбук для стажировки в компанию.
Какой самый дешевый ноут можно взять для андройд студии?
1596808860022.jpeg963 Кб, 1440x2880
119 1771103
>>770632
Я тестил, все равно показывает инглиш. Поставил языки болгарский и второй русский, в проге же язык все равно инглиш. Буду гуглить что не так.
Юзаю values-b+ коды и все равно нихрена.

Инстукция по этим кодам - 20 страниц непонятного пиздеца.

Кароче, искал и ничего не нашел чтоб работало как надо. Эта хуйня со сменой языков на андроид 7, если их указано несколько, работает не так как хочется, переводит только некоторые из стрингов, например кнопки в боттомнавигейшнвьюв, но все остальное нет. И работает только если указать resConfigs "en", "ru", "ua"... и тд в грандл файле.
Нашел эту подсказку с resConfigs тут: http://developer.alexanderklimov.ru/android/locale.php пикрил. Но эта опция "auto", которую автор говорил юзать, удалена разрабами потому что нестабильно работала и если ее написать выбивает ошибку. Одним словом, трудно разобраться.

Вручную менять локали насильно тоже не хочу, это ультра нестабильно реализовано в ведре, постоянно меняется реализация, много где советуют не вникать в это дерьмо.

Буду копипастить .хмл файлы прост и потестирую сможет ли аппбандл отдавать только необходимые стринги не увеличив размер в плейсторе для закачки на 50 мб. Надеюсь меня гугл не забанит за то что фактический язык не будет соответствать тому что я указал в хмл.
120 1771655
Анон, хелп. Делаю приложение, которое хранит список людей с некоторыми атрибутами и пикчей в SQLite. Пикчи храню ввиде текстовой ссылки, когда достаю их из базы конвертирую в Uri
Суть проблемы:
Когда лью сылку на пикчу в БД, а потом оттуда выгружаю, то все работает хорошо и отображается в imageView. Но если закрыть приложение, а потом открыть, то Uri из БД выгружаются точно такие же, но в imageView почему-то не отображаются
121 1771729
>>771655
Разобрался. При запуске активити с выбором картинки нужно было писать action_open_document, вместо action_open_image
Второй вариант дает права на документ только один раз, первый навсегда
122 1773519
Знаю, вопрос не по программированию, но где еще спросить не знаю.
Подскажите, установятся ли линуксовые драйвера от USB-ишной сетевой карты TP-Link UE200 на смартфон с Android 10? И как это сделать?
123 1773587
>>771035
бамп
124 1773824
>>773587
Какой бюджет? Ноут с 8гб озу и пятым райзеном можно взять за 40к и дешевле, чего вполне достаточно для комфортной работы.
Из бюджетных я бы смотрел в сторону какого-нибудь VivoBook
125 1774693
>>750957
1050/1700
126 1774749
>>773519
поставь линуху, из-под нее запусти
127 1774797
Здравствуйте, андроидобояре, будет ли нормально работать Андроид Студио на процессоре типа Ryzen 2200g, 3200g ?
128 1775015
>>774797
Да, будет.
129 1775210
>>773519
попробуй в termux запустить. или через adb shell
130 1775430
>>773824
Бюджет минимальный. Денег очень мало.
131 1775742
Добавляю событие в календарь гугл из своего приложения андроид следующим образом

Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(CalendarContract.Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, millis)
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, millis + 60 60 1000)
.putExtra(CalendarContract.Events.TITLE, evtext)
.putExtra(CalendarContract.Events.DESCRIPTION, evtext)
.putExtra(CalendarContract.Events.HAS_ALARM, true)
.putExtra(CalendarContract.Reminders.EVENT_ID, CalendarContract.Events._ID)
.putExtra(CalendarContract.Events.ALLOWED_REMINDERS, "METHOD_DEFAULT")
.putExtra(CalendarContract.Reminders.MINUTES, 1)
.putExtra(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT)
.putExtra(CalendarContract.Events.AVAILABILITY, CalendarContract.Events.AVAILABILITY_BUSY);
startActivity(intent);


Все работает вот только уведомление о событии выскакивает за 30 минут до самого события
Как программно указать что я хочу получать уведомление скажем за 1 минуту до события?

.putExtra(CalendarContract.Reminders.MINUTES, 1)

почему то не срабатывает
Android 8.1
132 1777214
Котаны, последнее время испытываю проблемы с градлевыми зависимостями.

Например: google-http-client-1.22.0, который нужен кому-то из инструментов сборки, резолвится в url jcenter.bintray.com/com/google/http-client/google-http-client/1.22.0/google-http-client-1.22.0.jar скачивается только из-под американских проксей, а напрямую d29vzk4ow07wi7.cloudfront.net бросает PR_IO_TIMEOUT_ERROR и хуй че сделаешь. И така хуйня постоянно.

Сижу с tele2 spb.

Было у кого подобное? Смог решить?
133 1777413
А есть ли солюшены для запуска андроид-приложений (.apk) на пк или вебе? И чтобы не сильно висло
134 1777485
>>777413
Виртуалки или anbox
135 1778487
>>775430
Хромбуки поддерживают андроидстудио, если что.
Но это больше для энтузиастов, вдруг там что-то будет работать не так как ты хочешь и ты скажешь что я посоветовал хуйню, но лично я возьму ноут или трансформер на хром ос.
Но гугл рекомендует покупать хромбуки с ай5 процом и 8 гб озу для андроид студио. Но я думаю что и на более слабом железе вытянет.
136 1778489
>>777413
Эмулятор в андроид студио с виртуализацией для быстродействия
137 1778500
>>750676 (OP)
Как-то я завис на многопоточности. Все эти AsyncTask, Handler, Service я еще могу понять. Но в чем смысл корутин и RX ? Нужно ли их изучать и что лучше использовать?

Говорят, что RXJava на все случаи достаточно. Но некоторые говорят, что вообще чисто AsyncTask используют и все. Что вы используете в проектах для многопоточности?
138 1778637
>>778500
сам перекатываюсь в ведроид и тоже в ахуе со всего, особенно с всяких джетпаков андроидкс и прочтих аппкомпат, но насколько я понял, корутины дял котлина, а rx- для джавы. Для себя решил, что надо всё изучать последовательно от джавы и её обвязки на андроиде до котлина с его фичами
139 1778640
ктонить в хуявей делал релиз?
140 1778654
>>778640
я думал, но потом передумал. Они и так почти все ставят гугл сервисы через какую-то хуйню.
141 1778667
Привет. Я начинающий андроид-разработчик и моя мечта - работать на удаленке $10/h.

Заканчиваю гугловский Android Developer Nanodegree, до этого прошел Android Basics Nanodegree. Хочу сделать крутой проект, чтобы показать уважаемому барину-работодателю.

Суть такова. Наше приложение локально анализирует с помощью простой нейросетки интересы пользователя исходя из истории его браузера, парсит великое множество новостных источников в сети и выбирает новости по тем темам и тем персонажам, которые пользователю интересны. Каждый новостной источник из базы имеет рейтинг доверия и рейтинг качества самого контента - защита от желтой прессы, Рен-ТВ и Первого канала. К каждой новости прикреплена система комментариев на основе репутации.

Работа с историей пользователя локально, никаких законов о конфиденциальности не нарушается. Нейросеть, которая вычленяет наиболее частые топики из набора данных на инглише, я уже где-то видел на гитхабе, это прям простейшая штука и ресурсов почти не потребляет.

Какие могут быть проблемы? Ну или предложите другой интересный проект на несколько месяцев. Лично у меня была еще идея сделать современную борду, чисто для андроид-юзеров. Потому что смотришь на все эти макабы, вакабы, на сосач тот же - функционал и ui ужасно устаревшие, зумерам скоро будет нужно что-то поновее, иначе совсем все в ТикТок свалят.
142 1778737
>>778637
Rx нужен в проектах с java или какими-то задачами, которые проще решить с помощью него или они лучше всего вписываются именно в rx-инфраструктуру больше вопрос гибкости, корутины для Котлина, но, опять же, иногда удобнее использовать rx, если он может покрыть потребности и позволить не тянуть лишние зависимости в проект, либо просто сделать его чище.
143 1778934
САП андроидач, вопрос такой, как мне запилить приложение калькулятор типа, что бы я мог считать вещи которые я постоянно считаю на работе на обычном калькуляторе, допустим короткие формулы типа pgh, ПR2H1 - ПR2H2, что бы не запоминать что от чего отнимать и на листке на записывать я хочу сделать себе хуйню на телефон, я это все делаю в екселе, но как перенести на свое ведро? Я мучаюсь, помогите пожалуйста, и еще я далбоёб, я постоянно забываю блокнот перед выходом, а на производстве считать приходится в цехе, и я как еблан запоминаю, и это очень долго все. А так бы я просто вписывал циферки и вылезало решение, только не посылайте нахуй, христом богом молю
144 1778943
кто пилит на флаттере?
145 1778997
>>763090

>Коммерчески это все почти не используется


а что тогда?
image.png58 Кб, 652x374
146 1779738
Аноны, findByViewId VS авто-импорт, кто что предпочитает?

Каждый раз когда надеюсь на авто-иморт у меня СТРАХ что оно повалится к хуям если контекст проебется, поясните где я долбоеб?
147 1779911
>>779738
View Binding для рефов без даты, либо Data Binding, если есть что биндить. Или же fvbi, но точно не синтетика.
148 1780096
Почем котлин затухает?
149 1780097
>>780096
Тебе в другой тред
150 1780107
>>780097
Куда, брат?
151 1780209
>>780107
В тред Котлина, очевидно
152 1780395
>>779911

>, но точно не синтетика.



почему?
153 1780491
>>780395
Сравнительно частые миссы, которые не всегда фиксятся ребилдом.
154 1780612
>>779738
View Binding сейчас стандарт, нул сейфти легкость использования и вообще даже нож для масла в честь его селфдиприкейтнулся.
155 1781977
Аноны, а есть ли альтернативный годный плагин для студии для дебага SQLite - чтобы можно было запросы писать, схему дрочить, етц?

Пробовал stetcho и дебажить с помощью браузера, но там как-то люто неудобно писать запросы.

Посмотрел на sqlscout, выглядит огонь, но 50$ за лицензию ЖАБА ДУШИТ, учитывая что прожект non-profit.

Может я чото упускаю
156 1782075
>>781977
Нативный AS дебаггер в 4.1
157 1782196
>>781977
Почему ты просто не откроешь интерпретатор который с sqlite-tools идет в консольке? Там все есть.
image.png126 Кб, 226x223
158 1782441
>>782196

Нихуя не понял, ты имеешь ввиду качать sqlite'овый файл и отркывать его в любом гуевом вьювере?

Так и делаю, по сути, но это неудобно, т.к. приходится качать фаел с девайса/виртуалки
159 1784100
>>782441
Подними какой-нибудь samba и используй его для хранения - и с компа и с мобилы доступ тогда будет, а дальше в чем хочешь работай с ней.
160 1784729
>>750676 (OP)
Есть задача - отслеживать все нотификации в бекграунде. Есть NotificationListenerService. На чем его запускать? Стандартный Service или же WorkManager?
161 1784864
У меня в приложении есть recyclerView, в нём 350 элементов. Если посмотреть на выделение памяти элементов, то при создании его, не будет выходить за пределы даже 5 МБ,однако сам Fragment, на котором лежит RecyclerView загружается почти половину секунды. Пробовал в тред это закидывать, но RecyclerView же не может в бэкграунде ui переделывать. Чё делать чтобы грузилось быстрее?
162 1784996
>>784864
Я не опытный, но скажу, что есть Android Paging. Его прикрутить попробуй.

Ну и дефолтные советы по оптимизации чекни

https://mobikul.com/how-to-optimize-recyclerview-in-android/

https://blog.usejournal.com/improve-recyclerview-performance-ede5cec6c5bf
163 1784998
Еу программисты, как сделать экран блокировки для андроид? Я гуглил, а там для рукожопов только как включить его в настройках.
164 1785000
>>784864
Откуда приходят данные? Как ты их дёргаешь?
165 1785010
>>784998
Через интент фильтры лока экрана и бродкастрисиверы
Intent.ACTION_SCREEN_ON
Intent.ACTION_SCREEN_OFF
Intent.ACTION_USER_PRESENT

и флаги типа WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED:
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
166 1785187
>>782441
Сделай грэлд таск на adb pull файла бд
167 1785443
>>784996
О, класс. Стояла анимация перехода от одного фрагмента к другому, раньше из-за полсекундного лага её не было видно,хотя полсекундный лаг и остался, но зато теперь анимация видна, так что теперь этовыглядит нормально, спасибо
>>785000
Данные из SQLite в массив грузятся,но это происходит быстро, там проблема именно с отрисовкой RecyclerView была, но тот человек уже скинул инфу, так что в принципе всё в порядке уже
168 1787063
>>750721
Страховка от бана аккаунта
169 1788330
Сколько уйдет времени на изучение ведра, чтобы можно было пойти устраиваться ждуном при условии, что имеются базовые университетские знания (кресты, высшая математика, алгоритмы и все такое)?
170 1788336
>>788330
Тебе лет 10 и то шансы на вкат у тебя малы, ведь ты спрашиваешь полную хуйню.
171 1788341
>>788336
Почему хуйню?
172 1788663
>>788330

> Сколько уйдет времени на изучение ведра, чтобы можно было пойти устраиваться ждуном при условии, что имеются базовые университетские знания (кресты, высшая математика, алгоритмы и все такое)?



На ведре кресты практически не используются - прикладуха на жяве и котлине, игорь - безальтернативные юнити и сисярп.

Есть разве что ниша в лице УЕ4 (10% от рынка геймдева, остальное - юнити), но там в связи с последними скандалами от эпик геймс похоже всё тухло.
173 1789215
>>755587
Такое случается если делать всякие if и прочее дерьмо. Ресайклервью работает нормально только если он все данные получает со списка. Хотя там есть некоторые ухищрения, чтобы сделать например expandable вью холдер, чтоб его нажал и показало больше данные в нем, например. И для этого есть гайдлайн гугл, погугли. Они делают через setActive и прочую дичь.

Кароче, чтоб работало норм - никаких if и все данные обезательно переназначать в каждом вьюхолдере. Хотя бы if else, чтобы засетать как null или как-то так.
174 1789218
>>778500
Писос, сначала пойми для чего все это нужно, понимание придет. Советую вообще забыть что такое асинктаски и лоадеры, корутины наше фсе, реактивщина - флоу, в пизду РхЖабу.
175 1789224
>>757924
>>778943
Про флаттер лучше всего читать тут:
https://apps.apple.com/ru/app/meduza-x/id1483980563#see-all/reviews

Кратко: пускать эту технологию в продакшн нельзя
176 1789255
>>789218

>в пизду РхЖабу


Зря. Это наиболее близкая к идеальной реализация реактивного подхода, которая избавляет от костылей во многих случаях читай: имеет больше юзкейсов + способствует пониманию концепции как таковой. В настоящее время она выигрывает, а там как покажут релизы. надеюсь, что скоро
177 1789288
>>788663
Спасибо, я в курсе. Сколько у тебя времени ушло на вкат?
178 1789366
>>789288
да буквально пару недель
furryboybypaperjam2001dd4hizf-fullview.png135 Кб, 400x487
179 1789769
>>750676 (OP)
Пытаюсь собрать проект: https://github.com/MobiSciLab/Baresip-DemoAudioCall
Получаю ошибку:

2020-08-27 13:41:59,434 [ 45390] WARN - e.project.sync.GradleSyncState - Gradle sync failed: Collection contains no element matching the predicate.

Подробностей больше нет. Что это может быть?
180 1790229
Сап. Околоджун на андроиде. Эмуляторы во время разработки нормально юзать или без настоящих девайсов не обойтись? Если говорить о профессиональной разработке
181 1790260
>>790229
Да, но лучше тестить на девайсе. нескольких, если говорить о профессиональной разработке
182 1791812
>>789255
есть гайд по переходу с риксжабы на корутины?
183 1791869
>>790229
Хуево неудобно нужен девайс сталин-3000. Для разработки очка пойдет б/у девайс
184 1791872
>>791869
Конечно ниже 4 ондроед не бери и то только за копейки
185 1791911
>>791812
на медиуме почитай, там есть гайды по миграции
186 1791942
>>791911
а есть профиты в переходе? кроме того, что модно молодежно
разве корутины могут полностью заменить рх с их операторами (фильтрами, таймерами, мапами и проч проч)
187 1792037
>>791942
Флоу может заменить большую часть функционала, но не весь, как я уже писал ранее. Ты получишь функционал, который проще внедрять, но не будешь уверен в том, будет ли он достаточен.
такова текущая картина для средне-сложных проектов С rx таких проблем не возникнет. Профиты ты получишь только в том случае, если он на 100% покрывает твои задачи в контексте сложности и ты уверен в том, что не придется ломать ноги. Если нет, лучше использовать rx.
188 1792255
>>750676 (OP)
Нужен хороший гайд по работе с Retrofit2 и okhttp по типу

https://www.youtube.com/watch?v=bcSVh9Jz3qE&list=PLuVP0-nOPzMx9SA-2lD_a1wtqrBTZ_pEn

Пожалуйста.
189 1792636
как вы шапку то проебали нахуй...
вот мне гайд по вкатыванию из пхп макаки нужен, че терь делать то а
190 1792645
>>792636
Вот тебе гайд;
Читаешь оф доки
Делаешь тудушку
191 1792809
Приветствую
Я уже разбираюсь в теории андроид разработки, знаю всякие полезные библиотеки современные по типу RecyclerView, Retrofit и тд. Теперь следующим этапом хочу начать уже собственно разрабатывать. Как и куда податься? Какие сайты фриланса лучше выбирать именно под тему андроид разработки? Может быть какие советы дадите еще. Буду крайне признателен.
192 1793040
>>792809
Нихуясе. А ты с яйцами. Выучил как делать базовый адаптер для RecyclerView и готов уже с Кумарами по $5 тягаться. Мне бы так.
193 1793083
>>792809

> Может быть какие советы дадите еще


Делать свои проги, а не для дяди.
194 1794945
>>793083
Ну и сколько ты на этом заработал, швабодный?
195 1795131
>>794945
в августе всего 20к $
Стикер255 Кб, 484x512
196 1795211
>>795131
Верю
2020-09-0211-15-14.png7 Кб, 644x459
197 1795315
>>795211
правильно делаешь
198 1795350
>>795315
все мы умеем дивы изменять.

Видео показывай, с обновлением страницы.
199 1795362
>>795315
Ну нихуя. Сорри что не верил.
Игоры делаешь?
200 1795385
В анроидах 8.0+ выпилили старый конструктор метода requestFocusAudio(...) (который принимал листнер, стримТайм и durationHint, ну вы поняли) и вместо него теперь в конструктор посылается всего один объект AudioFocusRequest.
Я правильно понимаю, что если у меня minimum SDK стоит ниже 26, то по-хорошему для воспроизведения аудио в моей приложухе я должен реализовать сразу два метода: один для старых андроидов, другой для новых? И пометить каждый аннотацией, для новых или старых сдк оно создано? Или че вообще делать?
Спс
201 1795388
>>795385
requestAudioFocus и стримТайп*, конечно
фикс
202 1795479
203 1795889
Хуй знает куда писать, спрошу тут, только не стукайте.
Есть рабочий apk, который как я понимаю работает с конкретными ссылками, грубо говоря берет с определенных 3rd party источников инфу и выдает тебе.
Вопрос, можно ли каким-то образом сделать декомпайл? разобрать приложение и поменять ссылки на свои, из которых оно берет информацию и скомпилировать по новой имя только apk файл?
204 1795999
>>795889
Можно
205 1796762
>>795999
Спасибо.
206 1796966
>>795385
if (Build.VERSION.SDK_INT > 26) {
...
} else {
...
}
207 1797391
>>796966
А покруче никак нельзя?
208 1797411
Привет двач. Я не особо ярый пользователь андроид студии, поэтому мб слегка даунский вопрос.
Вообщем, есть файл (.pb). И есть либа (OpenCV), которая знает что с ним делать. Есть метод
Net model = Dnn.readNetFromTensorflow(String modelFile);
И там нужно выбрать каким-то неведомым мне образом в параметр путь к этому файлу. И у меня вопрос. Куда положить в проект этот файл, что бы он был в апкшнике, и как прописывать путь к нему?
209 1797440
>>797391
Можешь создать утилитку для проверки.
fun checkSdk(version: Int) = Build.VERSION.SDK_INT > version

var a = if (checkSdk(26)) 0 else 1
210 1797451
Вы лучше скажите как вы свои говноприложения пиарите
211 1797460
йоу, не могу сделать обычный fetch запрос к публичному апи, он прост не выполняется в эмуляторе, ошибок никакхи нет, такое чувство будто android emulator блокирует все интернет запросы в main/AndroidManifest.xml есть <uses-permission android:name="android.permission.INTERNET" />

что я делаю не так?
212 1797483
>>797460
Как ты билдишь его?
213 1797486
>>797483
`react-native run-android`
214 1797492
>>797411

> String modelFile


Да, это срань еще та, либа могла бы файловый дескриптор или инпут стрим жрать.
Клади в raw и попробуй https://stackoverflow.com/a/5861108/1454571

>>797486
Толсто
215 1797494
>>797486
Действительно годно, оценил
216 1797567
>>797492
>>797494
Что не так? react native треда нет, вот тут и спросил
217 1797611
>>797567
Дідько, ну почему в твою смышленую и светлую голову не прошло еще понимание того что описание проблемы равно пропорционально шансам что тебе кто нибудь да и поможет.
218 1797619
>>791942
Есть и не мало, вот возьми и погугли. Практически весь функционал с рхЖавы существует, но неосиляторы и старые пердуны которые нихуя не хотят учить хрюкают что бы не напрягаться.
219 1799401
>>794945
200-500 баксов в месяц от оче популярной проги 2к закачек в день. Игры не делаю.
200 баксов сча получаю, во время коронавируса. Мне кажется пенсионеры в Украине больше получают))0
Хорошо что живу в доме родаков и трачусь тока на еду немного.

Прланирую вкатиться в игры.

Все зависит от удачи и от необходимости продукта, внимания в деталям, красоты и тд. .. .. попробовать стоит, кароче.
220 1799428
Андройд
221 1799430
>>799428
Как я вас затролел, а?
222 1799449
ФУКСИЯ БЛИЗКО
>>799430
Вот как надо
223 1799456
>>799449
Как?
224 1799484
Как называется подвид Master Detail Flow, при котором элемент списка, чтобы показать детали, просто расширяется, оставаясь на том же месте? Не могу нагуглить как это правильно делать
Спс
225 1799745
>>799484
скорее всего ты имеешь ввиду transission между скринами
226 1800200
/
227 1800788
Учу джавакор какое-то время на изичах. Месяца через 2 добью учебник.
Думаю поучить дальше андроид. Вопросики:
1. С чего начать изучение на джаве? Тут раньше вроде кидали на какой-то сайт англоязычный.
2. Под новые андроиды тоже на джаве можно писать? Для начала учебы не хотелось бы вообще лезть в котлин.
3. Какая версия джавы нужна(разные сдк разные версии джавы ведь поддерживают)? Джавы 8 нигде нет без десахаризации? Думаю минапи - 23.
4. У меня сейчас древнее устройство на 6-ке. Думаю купить еще бюджетку на 10ке. Норм будет такие два устройства, чтобы смотреть, как работает?
228 1801044
>>800788
1) С туториалов
2) Можно
3) 6 - дефолт, 8 - подруб под новые фичи
4) Вполне
229 1801148
>>801044

>1) С туториалов


>3) 6 - дефолт, 8 - подруб под новые фичи


Можешь раскрыть немного поподробнее? Какие конкретно туториалы и ситуация с версиями джавы.
По джаве месяца полтора убил на перебор учебников/видеокурсов/текстовых туториалов, чтобы мне хоть немного заходило.
230 1801179
Уметь с нуля писать master detail flow - это хороший левел для джуна?
231 1801255
>>801148

>Какие конкретно туториалы


Какие зайдут, тут уж пробуй. Можешь посмотреть курсы, либо прочесть книгу, можешь последовательно изучать доку и проходить гугловские туторы. советую читать medium Любой из этих вариантов может дать тебе хороший результат.

>ситуация с версиями джавы


Не вижу смысла расписывать особенности версий, об этом много инфы. Ставь минапи 21 и пиши код - по ходу дела столкнешься с необходимостью добавить 1.8, чтобы реализовать те или иные фичи. к примеру, это необходимо фреймворкам с кодогенерацией с помощью аннотаций
Вообще, читай инфу по мере возникновения вопросов в написании кода, иначе ничего толкового не выйдет, если застрянешь на теории. я не знаю твой уровень владения программированием как таковым, поэтому даю новичковый совет
232 1801284
а как же главный совет ньюфагу?
Всегда открывай две студии, пока первая не упала, вторая будет запускаться
233 1801286
Есть ли смысл юзать findViewById, если есть няшный viewBinding?
234 1801291
>>801286
Нет смысла.
235 1801515
>>801286
Всегда юзаю файнбайайди. Новомодный вьюбайдинг не юзал ещё. Погуглил, что-то слишком сложно и заебисто. Буду юзать православный файд бай айди.
236 1801722
Кстати, как я понимаю findViewById(R.id.x) будет искать x прежде всего в лайаоте текущей активити, но если не найдет, то пойдет искать вообще во всех лайотах пакета. И иногда он так находит что-то совершенно из другого места
С viewBinding же сразу видишь, из какого лайота идет айдишник
237 1802036
Фрилансеры на месте? Пилите стори как начинали. Пиздец как стремно заказы брать
.png1,5 Мб, 998x650
238 1802053
>>801722

> findViewById(R.id.x) будет искать x прежде всего в лайаоте текущей активити, но если не найдет, то пойдет искать вообще во всех лайотах пакета

239 1802166
>>802053
А что не так?
240 1802254
>>750676 (OP)
Как узнавать точные названия зависимостей для градла?
Например, мне нужно заимпортить CardView, а анроидстудио автоимпорта не предлагает (особенно если работаешь в .xml)
241 1802279
Какие плюсы и минусы разработки под Android?
Как с рынком дела?
React Native или сайты адаптивные не убивают рынок нативных приложений?
242 1802312
Че там в новом андроиде интересного, шарит кто-нибудь?
243 1802577
>>802279
Ну вот я беру андроид студио последнюю. создаю там проект выбираю меню навдрейер и все - больше ничего не делают
запускаю его в эмуляторе - а меню не работает
запускаю на планшете - а меню не работает

норма. это ж андроид разработка
244 1802901
блять, хотел узнать как быстро вкатиться в андроид разработку на котлине, если уже хорошо шаришь в программировании, а у вас даже нормальной шапки нет, ну нахуй
245 1803041
Поясните за синглактивити приложения
там же 1 активити и куча фрагментов
вопросы:
1 а как вьюмодели соотносятся к фрагментам? не делать же одну вьюмодель
2 а если мне внутри фрагмента нужны еще фрагменты допустм переключать как в основной активити основные фрагменты то тут как делается?
246 1803057
>>803041
1. во-первых ты путаешь понятия: вьюха и модель - разные вещи. модель вообще по-хорошему одна должна быть, которая полностью соответствует табличке в БД, но одной модели может соответствовать несколько бизнес-сущностей
2. слушай ну тут либо if + else, либо switch case, либо EventHandler (ну делегаты там и прочие штуки, по другому никак)
247 1803059
>>803057
1 это ты что то напутал. я говорью про ВЬЮмодели, те которые ViewModel. https://developer.android.com/topic/libraries/architecture/viewmodel
и их еще используют как средства шаринга данных между фрагментами и создаю я их в активити
модели и база данных вообще из другой области
2 Я не про это. есть 1 активити и там навигатионхост который и переключает фрагменты
вот боковое меню и контент тому пример. Но если мне точно так же нужно сделать чтобы уже фрагмент выступал как хост для подобного же переклчения
248 1803195
>>803041
1) У каждого фрагмента должна быть собственная вьюмодель, которая реализует только те юзкейсы, за взаимодействие с которыми он отвечает. Это нужно, это правильно, это создаёт позитивные ограничения.
2) Никакого фрагмента внутри фрагмента быть не может. У тебя есть активити, которая является "энтри поинтом" и контейнером для фрагментов, которые друг друга заменяют, либо накладываются друг на друга(зависит от заданного поведения). Она может содержать логику управления общими UI-компонентами например, прогрессбаром или меню и фрагментами их жц и ограничениями, которые необходимы при работе с навхостом, всевозможные коллбэки или сессионные данные, которые необходимы для правильного поведения фрагментовбандл с маркером для навигации, например.
>>803059

>и создаю я их в активити


Вот этого не понял. ViewModel должна быть отдельным классом/файлом

>Но если мне точно так же нужно сделать чтобы уже фрагмент выступал как хост


Навхост нужен для того, чтобы создать чёткую последовательность действий, которую пользователь не сможет нарушить и зайти "не туда". "Переключать" должна активити - navController должна видеть только она, но ты можешь вызывать её методы через интерфейс, методы которого она реализует.
249 1803216
Тут вообще есть люди, которые реально вкатились в какую-нибудь студию? Или чисто по фану свои говноприложения делаете?
250 1803253
>>803195
А что по производительности? Смысл вообще бзать всего одну активити на всю приложуху?
251 1803254
>>803195
2) ну вот стандартное навигатион дрейер приложение пустое. там одна активити с навхостом и несколько фрагментов страниц
ну вот мы открываем страницу - и внутри же нам нужно мудрить содержимое. А это фрагменты. В обычном приложении у нас есть активити и в нем мы юзаем фрагменты. А мы уже во фрагменте (который в навхосте)

1) кто создает вьюмодель для фрагмента? сам фрагмент?

>и создаю я их в активити


примеры в инете создают вьюмодели в активити и даже если лезут к ним в фрагменте, то снова
pageViewModel = ViewModelProviders.of(requireActivity()).get(PageViewModel.class);

3) и что будет если я захочу сделать подобие навхоста на уровень ниже
то есть мы имеем основную активити и навхост. навхост уводит нас во фрагмент страницы
а внутри страницы у нас слева список, который справа сменяет контент. Причем по тому же принципу что и навхост. Навхост больше неьлзя да? руками пилить обработчики переходов?
есть же какой то "Move to Nested Graph > New Graph". это что?
252 1803258
>>803253
ну лично я задрался рисовать левое меню на каждой странице с активити
только так я смог подружить с датабиндингом
253 1803300
>>803253
Всё нормально. Проблемы могут возникнуть в исключительных случаях, но такого рода ошибки очевидны и быстро фиксятся. Смысл юзать? Фрагменты гибче, активити становится своеобразным контроллером, куда можно вынести общую логику. Наибольшее удобство заключается в разделении presentation слоя на отдельные модули, архитектура выглядит стройнее.
>>803254

>В обычном приложении у нас есть активити и в нем мы юзаем фрагменты. А мы уже во фрагменте (который в навхосте)


Вот во фрагменте мы и пишем код.
Представь, что каждый фрагмент - отдельная активити, которую ты запускаешь из одного класса, в котором содержится метод startActivity для каждой из них.

>кто создает вьюмодель для фрагмента? сам фрагмент?


Ты создаешь ViewModel для фрагмента, а затем получаешь реф во фрагменте. Тут нечего выдумывать.

>то есть мы имеем основную активити и навхост. навхост уводит нас во фрагмент страницы


а внутри страницы у нас слева список, который справа сменяет контент. Причем по тому же принципу что и навхост.
Проще всего задать правила, при которых список будет изменять поведение согласно состоянию и использовать отдельный граф.внутри того же навхоста, где может быть много графов, ведь он содержит инфу обо всей навигации, которая у тебя имеется
254 1803307
Почему андроид-тред такой дохлый и в рф мало вакансий на андроиде? Ведь андроид очень быстро развивающаяся платформа и по пользователям и по трафику.
255 1803326
>>803307

>рф мало вакансий на андроиде



А каких много тогда?
256 1803475
>>802036
взял 2 заказа у стремного филлипинца, декомпилял и хакал какое-то местное приложение для такси. Худший экпириентс, но 2 отзыва в карму
Получил 3й фикс заказ за 200 бачей ради отзыва у какого еврея. Перелопатил тонны говнокогда, постоянно делал правки, как он меня заебал, доделай еще то, и это. Чуть его уже нахуй не послал, но он раздобрился, и написал отзыв (на 4 вроде, пидор)
Потом мне повезло и схватил норм контракт на 20$ в час (тоже говнокод индусский, но мне заебись было), сидел несколько лет на нем. это было пиздец давно, потом все фриланс площадки скурвились
257 1803476
Блин я полный нуб в Андроиде, у меня приложение на РН. Когда билдаю аппку получаю Failed to transform lifecycle-common-java8-2.2.0.jar
Default interface methods are only supported starting with Android N (--min-api 24): void androidx.lifecycle.DefaultLifecycleObserver.onCreate
Мне надо что бы Sdk осталось каким есть, меньше 21, это реально вообще сделать?
258 1803480
лучший фреймворк для написания простых 2д игор?
259 1803501
>>803300

>Ты создаешь ViewModel для фрагмента, а затем получаешь реф во фрагменте. Тут нечего выдумывать.


где создаю? не в активити же. Слово реф намекает что вьюмодель создана уровнем выше. А уровнем выше активити. И если она одна на все приложение то получаем вечноживущую активити, что неправильно.

>что каждый фрагмент - отдельная активити


если воспринимать фрагмент как активити в которой еще будут фрагменты, то тогда все нормально - если это правильный подход конечно (что я и выясняю)
260 1803621
>>803501

>где создаю?


Создаешь класс NameViewModel, который экстендит ViewModel. Инжектишь его, а затем получаешь ссылку внутри фрагмента через nameViewModel by viewModels(), например. Это отдельный класс, который ты связываешь с фрагментом.

>Слово реф намекает что вьюмодель создана уровнем выше


Уровнем ниже, т.к. vm: 1) ничего не знает о фрагменте(и не имеет доступа к контексту, что является best practice), 2) реализует юзкейсы.

>если воспринимать фрагмент как активити в которой еще будут фрагменты


Есть видос с докладом о фрагментах на официальной конференциина канале AndroidDevelopers, попробуй посмотреть его.
261 1803851
Сеньеры, че делать, если мне в аппбаре одновременно нужен и navigation drawer, и кнопка "Back"?
262 1803880
Почему вы выбрали андройд а не айос? Если исключать отсутствие макбука. ГОворят зарплаты выше
263 1803942
>>803216
Есть. В аутсорс.
Пошел на собес будучи штудентом. Прошел. Принял оффер. Вот уже 3.5 года полет ОК.
264 1803944
>>803880
Та хз, так получилось. Изначально думал в жову штырьпрайз идти. Но как-то довелось попробовать писать под Ондроед - оказалось, ничего так. Так и пошло-поехало.
265 1803947
>>802279

> минусы разработки под Android


разработка под Android))))))))))))))))))))) ололо

> рынком


Ну, судя по рынку вакансий ин Юкрэйн, неплохо, весьма неплохо. Да, и сорока напела, что хорошо все с проектами сейчас.

> React Native или сайты адаптивные


Нээээ, ты шо. Не убивают. Пока это остается нишей несмотря на то, что большинство приложений смузятина ебаная это, по сути, тонкие клиенты. Кстати, за все эти реакт нэйтив слышал не очень лестные отзывы, на самом деле - поговаривают, раз на раз да глюк херовый вылезет.
266 1803949
>>797451
niqaque, пускай клиенты пиарят
267 1803998
Собираюсь потратить кровные 1800 рублей на разрешение заливать свое говно в гугол, подводные?
268 1804081
В приложухе есть 5 длинных статей и требуется добавить возможность прослушать их
Ясно, что озвучивать никто ниче не собирается и придется юзать бота
Преобразование текста в речь лучше сделать в рантайме или просто тупо сэкономить ресы проца и залить заранее готовые raw для каждой статьи? спс
269 1804084
>>804081
Фикс, там 50 статей, не 5
270 1804271
>>803880
Изначально выбор был ограничен тем что мне предложил братишка и тем, что был только Windows ПК. На этом этапе знания про iOS разработку были на уровне пары статей из интернета. Затем пока готовился к вкату, работая на другой работе накопил на Macbook Air 2015 и даже тогда не посмотрел в сторону iOS разработки. А потом когда устроился на первую работу Android-разрабом, то там вообще как-то не до изучения новой платформы было.
Зарплаты там и правда выше по сравнению Android, потому что специалистов гораздо меньше на рынке труда, а толковых тем более.
271 1804273
>>804081
Хранить локально все эти статьи не очень хорошо, потому-что твое приложение будет весить необоснованно дохуя. Сейчас есть технологии которые могут тебе позволить все сделать в рантайме.
272 1804340
>>804273
А может просто из интернета их выкачивать при необходимости? Я думаю это будет оптимально
273 1804358
>>804340
Да, как вариант. Но тут уже нужно заморачиваться с воспроизведением аудио по ссылке.
274 1804485
Сап
Есть спиннер на вьюхе, значение для которого пользователь обязан выбрать. Если ниче не выбрано - вывести предупреждение
Я правильно понимаю, что предупреждение нужно выводить с помощью каллбэка спиннера OnNothingSelected? Спс
275 1804658
Вопрос оче легкий, прошу помочь, прям оче важно
Короче, есть активити. Она запускает новую активити по прошествии некоторого времени, при этом новая активити должна получить некоторые данные с нашей первой активити
Как лучше передать эти данные?
1. Через putExtra или
2. Сделать поля с данными первой активити статическими и считать их содержимое уже в новой активити
Плз. Спасибо!
276 1804760
>>804658
При открытии второго активити у тебя данные уже доступны в первом активити?
277 1804762
278 1804768
>>804760
Да, первая активити уже не нужна становится
279 1804773
>>804768
Можно в intent которым ты открываешь вторую активити из первой, положить нужные данные в Bundle, во втором активити эти данные получить.
Либо sharedViewModel, но если данные какие-нибудь примитивы, тогда проще первый вариант использовать.
Еще можно создать singleton репозиторий и к нему обращаться из любого места в приложении, но боюсь не осилишь этот вариант.
280 1804817
>>804773
Спасибо, буду юзать Bundle

Кстати, а как бы сделал сеньор?
281 1804847
>>804658
Никаких статических полей, только бандл.
>>804773

>singleton репозиторий и к нему обращаться из любого места в приложении


Если тебе нужен репозиторий, чтобы передать данные из одной активити в другую, значит ты уже сделал что-то не так. перемудрил
>>804817

>как бы сделал сеньор?


Делал бы всё в одной активити
юзал бы бандл
3b71272ac21b4f9c90c002e5712eafc2[1].jpg73 Кб, 900x880
282 1805153
Подскажите, а нормально для управления состоянием UI использовать такой подход внутри ViewModel?

private MutableLiveData<UIState> uiStateLiveData = new MutableLiveData<>();
private UIState uistate = new UIState();

private void someLogic(){
uistate.show_progress_bar = true;
uistate.button_exit_enabled = false;
uiStateLiveData.postValue(uistate);
}
Снимок.PNG7 Кб, 610x137
283 1805156
284 1805253
Здарова, мужики. Есть тут кто зарабатывает на андройд приложухах? Как вообще сейчас на этом рынке дела? Помню в 12 году анон платил по сотке баксов за одну только идею игры/приложения под андройд.
285 1805259
>>805156
>>805153
Ты только что половину MVI.
unkw.png13 Кб, 679x119
286 1805266
287 1805370
Лол, а что, Navigation Drawer позволяет юзать только фрагменты в качестве назначений?
288 1805382
>>805370
нет. активити тоже
289 1805448
>>805156
Как по мне тут излишне держать глобальную переменную для модели. Если ты так делаешь, то скорее всего у тебя поля в модели изменяемые.
290 1805557
>>805448
Тогда придется на каждый чих заводить свой observer
291 1805640
>>805557
Зачем? У тебя итак состояние модели хранится в LiveData обертке.
292 1805659
>>805153
Нет. ViewModel не должна вообще чем-либо управлять, тем более UI, она может только провайдить что-то. Ты можешь создать LiveData и засовывать туда что-либо, а затем изменять состояние внутри активити/фрагмента, исходя из тех данных, которые туда приходят, либо их наличия как такового, но все методы, которые влияют на состояние, либо объекты, которые содержат в себе информацию о нём, должны быть созданы в a/f.
293 1805854
>>805659
Тогда какой толк от ViewModel, если там нельзя разместить всю логику?
Где её тогда размещать и как тестировать?
Мне нужно отобразить 3 снекбара и 1 диалог, в зависимости от настроек системы.
294 1805858
>>805640
>>805448
Как тогда вызвать обсервер, когда изменю поле ui_state.show_progressbar = true?
295 1805895
>>805854
Читай про Clean Architecture
296 1805931
>>805854

>Тогда какой толк от ViewModel, если там нельзя разместить всю логику?


Уже отвечал, что там можно размещать только данные, в т.ч. и о состоянии. Почитай о шаблонах и компонентах

>где размещать


В активити

>как тестировать


Отдельно тестировать UI и VM

>Мне нужно отобразить 3 снекбара и 1 диалог, в зависимости от настроек системы


В singleactivity это пишется в активити. VM может хранить данные о состоянии, т.к. находится в presentation слое, но не может содержать логику управления.
image.png136 Кб, 300x300
297 1805934
>>750676 (OP)
Привет, анонимы. Есть вопрос. Знает ли тут кто-нибудь как сильно ебёт модерация Гугла при опубликовании приложения в Google Play? Проверяют ли они по какой лицензии распространяются картинки, используемые в приложении или в каком стиле оформлен дизайн приложения? Можете обрисовать подводные камни при публикации, если не сложно? Был бы очень признателен :3
298 1806011
как вы боретесь с засильем xml в res/layout? там же невозможно ориентироваться.
299 1806139
>>805931
Всю логику внутри View?
А если View слишком большой?
300 1806147
>>806011
Создают же рядом layout файлы и потом include их в основной.

>>805854
В Entities бизнес логика
В UseCases логика приложения.

Но если экран маленький то и во вью модели офк делать можно.

>>804817
не клал бы в бандл. Хотя, спорно. Но лучше не завязываться на такое говнецо. Ох вспоминанию эти бандлы при открытии новых окон в ведройде...

>>803880
На начальном этапе. Потом одинаковы, как и у всех. Я накопил денег а потом в айос перебежал. Здесь лайтовей, приятней, без костылей. Без вот этих
>>795385

>В анроидах 8.0+ выпилили старый конструктор метода requestFocusAudio(...)


>minimum SDK стоит ниже 26,



мимоиосник. вспомнил молодость.
301 1806153
>>806147

>Создают же рядом layout файлы и потом include их в основной.


я как раз про количество файлов. там же одноуровневый список файлов разметки.
302 1806194
А если юзать Navigation Components, то там есть специальный аргумент для передачи данных с одного экрана на другой. Правда придется юзать всего одно активити на всю приложуху

>>804658-кун
303 1806281
Я правильно понимаю, что по рекомендациям гугла ЛЮБАЯ приложуха должна юзать navigation component?
304 1806285
Cука, гавна неудобная. Как эту ебаную рекламу встраивать
305 1806292
>>806281

> рекомендациям гугла


буэ

>>806147

> без костылей. Без вот этих


> if #available(iOS 9, *) {}


А с такими?
306 1806386
>>806139

>внутри View


Внутри активити. активити - не вью
Активити не должна быть слишком большой god object'ом с таким подходом, потому что ты создаешь и переиспользуешь все необходимые компоненты, которые тебе нужны(всевозможные бары и менюшки). Реализацию она содержит только в том случае, если её невозможно запилить в другом месте во фрагменте. Всю остальную юайную логику, которую ты можешь реализовать "на месте"во фрагменте, ты пилишь именно там. Любая реализация должна быть уместна, тогда не будет никаких проблем.
307 1806737
Раз шапки нет - вопрос.
С чего, собственно начать? Писал что-то буквально 15-20 лет назад последний раз и то на ассемблере, паскале и т.п. так что нулевой в общем.
Что читать, куда смотреть, за что хвататься? Цель довольно прозаична - нужны бывают приложения которых нет, простые довольно (калькулятор по техкартам, калькулятор растворов, расчет параметров продукта по температуре времени процесса и т.п.), мелочи, которые чуть ли не в бейсике можно реализовать в принципе, но нужно в телефоне и удобно, потому что для тупых. В перспективе, конечно, хотелось бы все калькуляторы вместе свести, техкарты сделать интерактивные и т.п. Но пока хотя бы азы.
308 1806739
>>806737
Java, сайт StartAndroid - чтобы быстро начать делать хоть что-то(для твоих целей сойдет, судя по всему)
Более серьезно - лучше найди шапку старых тредов
309 1806893
>>806739

>Java,


А вы садист однако
310 1807024
>>806893
Котлин требует знания JDK поскольку сам обладает довольно скудной стдлибой.
311 1807102
>>806737
>>806739
Двачую, можно вообще ограничиться Java, если хочется иногда пилить приложения для себя. Она даст тебе возможность "просто сделать то, что будет работать". Котлин больше для проданшна, так как экономит приличное количество времени.
312 1807111
Сап. Есть какая-нибудь вменяемая реализация Backdrop из Material Design? Спс
313 1807193
>>806147

>В Entities бизнес логика


>В UseCases логика приложения.


Такой воды полно везде. Говори конкретно.
Clean architecture читал - вода водой, очевидные вещи.
Единственное что полезно из этой дискуссии:
- viewmodel только для сохранения состояния
- вся логика текущего экрана внутри fragment/activity
314 1807203
Здравствуйте, хочу делать свои приложения для андройд пока на определенную тематику.

Погуглил, что для этого нужно, но не совсем понял, какие инструменты уже легаси и их не нужно смотреть и на что нужно смотреть как сегодняшние инструменты с перспективой.

Я так понел, сразу в Котлин вкатываться и пропустить яву?

мимо всю жизнь кое что делал на питоне
315 1807218
>>807203

>Я так понел, сразу в Котлин вкатываться и пропустить яву?


да. жава выучится в ходе гугления "а как сделать это".

>и на что нужно смотреть как сегодняшние инструменты с перспективой.


сразу aac (навигация, биндинг, вьюмодели, обсервабле бла бла)
нет смысла изучать то что устарело
туда же нафиг не нужны всякие убогие средства с многопотоком, когда есть корутины.

лишь бы от котлина не тошнило
и от андроида )
316 1807236
>>807218

Ну в следующие 10 лет андройд юзеров будет более 5 миллиардов, так, что я думаю найти себя в области с наибольшим количеством юзеров так сказать.

>сразу aac (навигация, биндинг, вьюмодели, обсервабле бла бла)



Гугл выдает непонятное про кодеки, можно транслейт

https://kotlinlang.org/

Вообще меня тут обучат так я понел? и нужно ли делать приложухи вместе с индусами с ютуба для оптимального обучения?
317 1807256
>>807236
aac- Android Architecture Components
это они посидели подумали и наконец выдали что-то удобоваримое. И стало сильно лучше.

>Вообще меня тут обучат так я понел?


в шапке есть ссылка котлин для питонистов. почитай ужаснись
318 1807257
>>807236

>Вообще меня тут обучат так я понел?


упс. в шапке темы про котлин )
319 1807335
Ребята, есть ли в андройде ремоут? Можно ли с нуля джава мидлу вкатиться и получить работу в приземленные сроки, ибо в моей мухосрани андройдом даже не пахнет?
320 1807378
>>807218
А тошнит обычно?
321 1807416
>>807378
меня да

в андроиде вся та канитель с вьюхами, инфлатерами, адаптерами
а в котлине они решили улучшить жаву, да переборщили с синтаксисом. Сложно распарсивать глазами и собирать суть.

меня в итоге выбесило и я ушел на хамарин с его каким никаким, но xaml
322 1807461
>>807416
На Котлине синглтон делается за бОльшее кол-во строк кода, чем в джаве.
323 1807467
>>807461
не больше
но куда более эзотерически
324 1808176
Если я юзаю viewBinding, нужно ли объявлять приватные поля с вьюхами для класса активити (private TextView mTextView и т.д.)? Или будет норм напрямую к вьюшкам обращаться через binding.myTextView? Спс
325 1808237
>>808176
Лучше объявлять, так чище и понятнее
32bb3ad41f40a6682093688ee7de39fb.jpg22 Кб, 222x300
326 1808371
>>750676 (OP)
Сюп. Не знаю, туда ли зашел, но может сориентируете? Сколько примерно стоит разработка приложения по моему ТЗ? Приложение, допустим, нечто вроде простого агрегатора такси: карта города, на ней видны водилы/пассажиры, прикручена оплата. Описал просто примерно для оценки, на самом деле суть приложения будет другая. Профессиональная разработка не нужна, нужна просто заглушка в гугл-плэй для теста ниши, сойдет любой говнокод, лишь бы хоть как-то работал. Сколько за такое просить и где вообще искать разрабов?
327 1808463
>>808371

>Сколько за такое просить


лучше предлагать.
328 1808468
Как забиндить MutableLiveData<Long> на TextView android:text

не может найти сеттер
пишу конвертер

@BindingConversion
fun convertNullableLongToString(value: Long?): String? {
return value?.toString()
}

работает, но подчеркнуто красным. мол в сеттер лезет MutableLiveData<Long>
329 1808470
работает, но в студии подчеркнуто красным. мол в сеттер лезет MutableLiveData<Long>
ну думаю может ему трансформацию. нужно
делаю трансформацию

@BindingConversion
fun convertMuttableLiveDataLongToString(liveData: MutableLiveData<Long>): LiveData<String> {
return Transformations.map(liveData) { uiii -> uiii.toString() }
}

(сука ебучий спам лист бестолковый)

красное подчеркивание исчезает и все работает.
Но удаляю первый конвертер convertNullableLongToString и он не собирается
"Cannot find a setter for \u003candroid.widget.TextView android:text\u003e that accepts parameter type \u0027androidx.lifecycle.MutableLiveData\u003cjava.lang.Long\u003e\u0027\n\nIf a binding adapter provides the setter"

да ну бред пит какой то. Как правильно то прописать?
330 1809222
>>808371
80 тр, делал такое и заказчика тоже здесь нашел.
Сроки 2 недели, дольше там нечем заниматься. При условии, что серверная часть готова.
Не возьмусь, дел много.
331 1810042
Аноны, есть ли возможность использовать firebase(db, storage) для десктопного клиента? (котлин/торнадо) Если нет, какой сервис посоветуете?
332 1810084
Часто заказчики просят заделать еще и виджет для приложухи?
333 1810209
>>810084
Не часто. Ничего сложного.
334 1810631
androidx, сентябрь 2020

опять приходится писать костыли для EditTextPreference, потому что android:inputType="number" или android:inputType="numberDecimal" бесполезны ибо вылезает полная клавиатура, а также сохраняется в преференсес строка, а не Int

Это я какую то доку не прочитал или все так и осталось как и было раньше через жопу?
335 1811148
>>810084
если ты с 2013 то часто
336 1812342
Аноны, у меня приложение выкачивает музыку. Подскажите, куда ее складировать? В папку приложения, на съемную sd карту или на внутреннее хранилище?
337 1812358
>>812342
Если есть sd-карта - на неё, если нет - во внутреннее.
338 1812527
>>812358
а как sd карта относится к постоянной записи на нее файлов? Нет ли какой-либо деградации?
339 1812555
>>812527
лучше уж пусть она помрет чем внутренняя память телефона
340 1812603
>>812555
т.е. получается, что мне предпочтительней писать временные логи именно на sd?
341 1812632
>>812603
флеш память есть флешпамять. если ты ее мучаешь - она изнашивается
342 1812799
>>812632
А если читать? Как в Андроиде узнать какая память флеш, а какая внутренняя.
image.png128 Кб, 630x335
343 1812900
Анон, имеющий богатой ебли с базами под андроидом, скажи, как тебе Android Room?

Я впервые разрабатываю приложение на андроид, где нужна база, и по старой бекендовской привычке решил что это должен быть СКУЭЛЬ и официально(с) рекомендуемая(с) ОРМ(или вроде того) от Гугла.

Однако я вдоволь наебался уже на данном этапе (имея порядка 15 таблиц) с сохранением связанных структур и ограничениями Room'а, который в целом смахивает не на ОРМ, а на тонкую прослойку-помощник.

Вопрос простой - есть ли у анона действительно приятный ОПЫТ работы с какими-либо еще ОРМ-ками? Возможно, более БОГАТЫМИ в плане функционала. Возможно не SQL, хоть и не желательно.
344 1813000
>>812799
Сначала чекаешь возможность записи. Если её нет - просишь разрешение.
Затем чекаешь наличие sd-карты(secondary external storage), иначе пишешь в primary.
fun checkSecondExternal() = getExternalStorageState() == MEDIA_MOUNTED && isExternalStorageRemovable() импорт из android.os.Environment, но можно делать такое и через контекст
Флаг MEDIA_MOUNTED - смонтрован ли external, isRemovable - является ли он sd-картой.
Далее получаешь путь и используешь.
345 1813003
>>812900

>Room


Если нужно сделать что-то простое или на скорую руку, то норм. Для чего-то более сложного выберу скорее SqLiteгибче, но, опять же, зависит от задачи.

>Room'a, который в целом смахивает не на ОРМ, а на тонкую прослойку-помощник


Так и есть, это сахарный слой. Гугл рекомендует юзать именно Рум, дабы была возможность ловить ошибки, а не щёлкать клювом, когда у тебя что-то ломается.
Есть ещё Realm, он вполне себе хорош, ничего плохого не скажу. не помню, на самом деле, но проблем с ним точно никогда не было
346 1813014
>>812900
Все ОРМ говно по определению, потому-что:
1) Ограничивают тебя в написании SQL(тьюринг полного языка, между прочим).
2) Код превращается в кашу из аннотаций с SQL'ем внутри них, когда у тебя более-менее сложная модель и кастомные SQL запросы

Попробуй SQLDelight.
347 1813032
Android Basics на udacity еще актуален для первого знакоства с андроидом?
348 1813106
Андроны, мне нужно сделать фоновую загрузку файлов с Ftp, пока я просто хуйнул активити и еще создал класс где в asyncTask веду загрузку. Подскажите это норм тема? Или надо как-то там через некие механизмы андроида вроде сервисов все это организовывать?
349 1813109
>>813003

>SqLite гибче



Но ведь room не запрещает разработчику использовать SQL напрямую?

>была возможность ловить ошибки



То верно, это очень годно, но цена тому весьма раздутый слой логики работы с бд, он чуть меньше, чем если бы писать везде сырой sql, но намного больше, чем на бекенде с полноценными ORMками и прочими activerecord'ами.

>>813014
1-2 - все так, да.
Посмотрю SQLDelight, спасибо
350 1813187
>>813109

>Но ведь room не запрещает разработчику использовать SQL напрямую?


Да, но смысл в том, что я бы не стал тащить Room в проект, где уже используется SqLite.
351 1813234
>>813000
спасибо! потратил время на меня, привел кусок кода. Мое увожение. Благодраствую от души. Приятно с такими людьми на борде одной находиться!
352 1813250
>>812900

>а на тонкую прослойку-помощник.


А оно это и есть. Схему создает, миграции может, CUВ простой и R маппинг на POKO объекты.
Необходимый минимум без оверхедов. Самое оно для андроида
353 1813498
>>813106
Workers
354 1813866
>>813498
Использую их для фоновых задач, но почему они прекращают работу после закрытия приложения (свайпом из недавних)? Я уже что только не пробовал (BroadcastReceiver, Service, Worker, и.т.д), из всего работу не прекращает только Foreground Service, но уведомление висит ненужное. Ебал я эту политику энергосбережения
Подозреваю сейчас Xamarin в этом, может, следовало на жабе писать
355 1813917
>>813866

>Подозреваю сейчас Xamarin


А он тут причем? Это политика андроида, начиная с oreo
Если нужно работать постоянно, то юзать нужно Foreground Service с иконкой
Как хак можно собрать под более раннюю версию SDK - тогда андрюша будет считать что приложуха не знает про новые правила анальных ограничений и не ограничивать их, имхо. (в моем случае это помогло, а так то я нихера не знаю)
356 1814991
Зачем нужен DI на Андроиде?
357 1815073
>>814991
Затем зачем и везде.
Другое дело, что он на андроиде кошмарен
358 1815119
>>814991
Уже отвечал в этом треде.
>>815073

>он на андроиде кошмарен


Чем же?
359 1815143
>>814991
Ну, вообще, потому что так модно. Серьезно. В принципе, пользователь не узнает что там "под капотом". Да ему и пофиг что там. Но дань моде - это дань моде, ей нужно следовать безпрекословно. Чтобы было все прогрессивно, cutting edge, так сказать.

Это как есть отсталые реднеки прошлого века со своей маскулинностью и вот этим своим "КАКМУЖЫК", а есть современные толерантные прогрессивные молодые люди, которые поддерживают идеи феминизма, BLM, экологической борьбы и так далее. Это, в принципе, одна из главных определяющих характеристик не только отрасли мобильной разработки, но и человека в принципе.
360 1815150
>>814991

> Зачем нужен DI на Андроиде?


Та он в принципе не нужен.
361 1815171
>>815119

>Чем же?


мы щас о чем говорим? я про конкретную реализацию даггер2
А так DI понятно зачем нужен. это ж DI.

>Ну, вообще, потому что так модно. Серьезно. В принципе, пользователь не узнает что там "под капотом". Да ему и пофиг что там. Но дань моде - это дань моде, ей нужно следовать безпрекословно. Чтобы было все прогрессивно, cutting edge, так сказать.


гуморыст
362 1815206
>>815143
Если ты пишешь "зеркало" или просто размазываешь код в одной активити, то да - можно вообще не запариваться. Если же ты пилишь что-то более сложное и имеющее намёк на структуру, di сэкономит время. надеюсь, что телега про определяющие характеристики - рофл, потому что это действительно забавно
>>815171

>мы щас о чем говорим?


Об этом:

>он на андроиде кошмарен


Почему он кошмарен?
Окей, что именно тебя не устраивает в реализации даггера? di-утилиток много, так-то. Не можешь в даггер - бери то, что попроще, либо просто больше нравится
363 1815223
>>815206
А какие еще di с кодогенерацией не в рантайм?
364 1815351
Вы что, реально шапку проебали или демпингуете рынок вкатунов?
365 1815457
Посоны, хотел захпилить приложение, и встал вопрос, щас делают стандалон или клиент сервер? Где б почитать про плюсы минусы?

мимо си девелопен
366 1815458

>девелопер

367 1815461
А, ну забыл написать конечно, что приложение без мощных вычислений и всякой такой залупы, то есть полностью реализуемое локально.
368 1815738
>>815457
А что тебе от приложения надо-то? Уже несколько лет даже нейронки и обработку фото/видео гоняют полностью на клиенте, мощностей для такого хватают.

>Где б почитать про плюсы минусы?


Плюсы и минусы для какого приложения?
Тут вопрос вообще-то к тебе — нужен ли сервер для работы твоего приложения (оно клиент-серверное, нужна синхронизация, пользователи должны авторизоваться в твоём сервисе, тебе надо рассылать пуши/прочий спам и тд). А даже если нужен, то можешь взять какой нибудь BaaS типо Firebase и шлёпнуть на нём за пару дней весь функционал.

А если не нужен — из плюсов: работа оффлайн, прайваси.
Из минусов: твой рокетсаенс будет жрать батарейку и греть телефон как тварь, конкретно на андроиде куча девайсов за 5000р, пользователи которых будут отгружать тебе в стор тонны говна в виде комментов "нихуя ни работаит разраб кривой аптимизируй сука(9".
369 1815739
>>815461
Короче, блядь, напиши что именно ты хочешь сделать, так консультировать — это как помогать искать сегфолт без кода, лол.
370 1815744
>>799401
Доход типо чисто на рекламе?
PROG.png35 Кб, 232x601
371 1815863
Сап. Вкатываюсь в анроид с июля, прошел курс на Udacity Android Basics. Курс понравился, но следующий (Android Developer) уже устаревший, не юзает Jetpack. Попутно написал пару своих простых приложений.

Теперь я изучаю официальные гайды от гугла. Планирую пройти все эти 20 секций на пикриле к январю, за эти две недели изучил все по Activity - каждая страница была мною прочитана раз по 5 + воспроизводил на память все самплы кода, которые они там приводят. Конечно, там дофига инфы и я уже что-то забыл, но процентов 70-80 в памяти осталось.

Как вам такая стратегия изучения? К середине зимы хочу писать код, юзая все компоненты джетпака, что-то вроде такого: https://github.com/android/sunflower

Мечтаю вкатиться на удаленку.
372 1815883
>>815863

>К середине зимы хочу писать код


чего тянуть. уже пиши
373 1815899
>>815883
Так я пишу небольшие приложухи + все их самплы. Вижу, например, что они советуют оверрайдить onBackPressed только в случае создания confirm quit диалога, и при этом все равно вызывать родительскую имплементацию внутри, - пишу пустую приложуху с этим confirm quit.

Типа к зиме-весне теоретических знаний у меня будет как у милда, опыта - как у джуна++, я думаю (надеюсь), с этим можно на удаленку или даже фриланс идти.
+ хорошие знания в material design, я типа дизайнер вообще
374 1815904
>>815899
так ты пиши большую приложуху
конечно будешь тупить на каждом шагу ну и что
так и учатся.
и сразу котлин лучше
375 1815914
>>815904
Ну хз, я в начале сентября как раз сел писать большое приложение - и это пиздос, просто постоянный гуглеж + слабое понимание того, что нагуглить все-таки получилось. Тот же гугловский гайд Navigation components ты слабо поймешь, не прочитав их Activity и Architecture components, а ведь это основа
ИМХО будет быстрее поступательно двигаться, 100 мелких-мелких приложух, а потом уже писать большие

Но я слышал стори, что не каждый джун способен внятно рассказать, что такое активити, например. И их все равно на работу берут. Это правда? Мб я тогда рили оверкиллингом занимаюсь, хз
376 1815930
>>815914
Ну-ка, что такое активити? Без подглядывания.
377 1816017
>>815930
Экран, занимающийся отрисовкой UI. Более общно, это основной компонент любой приложухи; активити работают сообща внутри приложения, но при этом слабо связаны между собой. Использование приложений на десктопах и мобилках отличается тем, что на мобилках юзеру часто нужен конкретный функционал в приложении, а не его стартовый экран и т.п. - и ввиду того, что активити слабо связаны между собой, из приложения А мы без особых проблем можем запустить нужное нам активити приложения Б. Активити может находиться в состояниях Resumed (foreground), Paused (потеряло фокус, может быть частично видно или полупрозрачно), Stopped (не видно совсем), причем реализовывать поведение компонентов, зависящих от текущего стейта жизненного цикла, лучше с использованием API LifecycleObserver, а не в callback-методах onCreate, onStart, onResume, onPause, onStop, onDestroy. С помощью lifecycle-aware компонентов мы должны сохранять стейт, очищать инициализированные ресурсы (но но увлекаться этим в ходе Stopped стейта, потому что он очень короткий), переходить к меньшему потреблению мощностей (например, не так часто обновлять местоположение пользователя).

Если нужны ресурсы, то система никогда не разрушает напрямую активити, а только процесс, хостящий активити, причем стейт процесса соответствует жизненному стейту активити, в порядке убывания важности: Resumed, Paused, Stopped. При этом даже после того, как система вызвала onDestroy, она сохраняет визуальный стейт активити в Bundle instanceState; реуомендуется не держать в визуале больше 50KB инфы. Можно положить в этот бандл и другие свои данные с помощью onSaveInstance, но не рекомендуется увлекаться, чтобы избежать лишних затрат на сериализацию и десериализацию. Если данных много, то их нужно хранить с помощью ViewModel. Сам ViewModel мы должны очищать только в случае, если юзер эксплицитно клозает активити (нажимая на Back Button, например), мы не должны трогать вьюмодель, если чел просто перешел в multiwindow режим или перевернул девайс - определить че происходит можно с помощью isFinishing(), если все-таки экспилицтное завершение, то очистить вьюмодель с помощью onCleared(). Вьюмодель никогда не должна юзать Context, никогда не должна генерировать данные (только запрашивать).

Вместе активити составляют Task - задачу по реюзабилити различных активити (не обязательно одного приложения) в целях пользователя. На уровне абстракции Task, активити хранятся в back stack и не могут перемещаться внутри него - только удаляться или добавляться (last in, first out). Начало любого таска происходит в app launcher'е

Не принимал во внимание, что в приложухе должна быть скорее одна активити, суть ясна.

Норм если такое на собесе выдам? За милда сойду?

БЛЯТЬ ХОЧУ НА ФРИЛАНС
377 1816017
>>815930
Экран, занимающийся отрисовкой UI. Более общно, это основной компонент любой приложухи; активити работают сообща внутри приложения, но при этом слабо связаны между собой. Использование приложений на десктопах и мобилках отличается тем, что на мобилках юзеру часто нужен конкретный функционал в приложении, а не его стартовый экран и т.п. - и ввиду того, что активити слабо связаны между собой, из приложения А мы без особых проблем можем запустить нужное нам активити приложения Б. Активити может находиться в состояниях Resumed (foreground), Paused (потеряло фокус, может быть частично видно или полупрозрачно), Stopped (не видно совсем), причем реализовывать поведение компонентов, зависящих от текущего стейта жизненного цикла, лучше с использованием API LifecycleObserver, а не в callback-методах onCreate, onStart, onResume, onPause, onStop, onDestroy. С помощью lifecycle-aware компонентов мы должны сохранять стейт, очищать инициализированные ресурсы (но но увлекаться этим в ходе Stopped стейта, потому что он очень короткий), переходить к меньшему потреблению мощностей (например, не так часто обновлять местоположение пользователя).

Если нужны ресурсы, то система никогда не разрушает напрямую активити, а только процесс, хостящий активити, причем стейт процесса соответствует жизненному стейту активити, в порядке убывания важности: Resumed, Paused, Stopped. При этом даже после того, как система вызвала onDestroy, она сохраняет визуальный стейт активити в Bundle instanceState; реуомендуется не держать в визуале больше 50KB инфы. Можно положить в этот бандл и другие свои данные с помощью onSaveInstance, но не рекомендуется увлекаться, чтобы избежать лишних затрат на сериализацию и десериализацию. Если данных много, то их нужно хранить с помощью ViewModel. Сам ViewModel мы должны очищать только в случае, если юзер эксплицитно клозает активити (нажимая на Back Button, например), мы не должны трогать вьюмодель, если чел просто перешел в multiwindow режим или перевернул девайс - определить че происходит можно с помощью isFinishing(), если все-таки экспилицтное завершение, то очистить вьюмодель с помощью onCleared(). Вьюмодель никогда не должна юзать Context, никогда не должна генерировать данные (только запрашивать).

Вместе активити составляют Task - задачу по реюзабилити различных активити (не обязательно одного приложения) в целях пользователя. На уровне абстракции Task, активити хранятся в back stack и не могут перемещаться внутри него - только удаляться или добавляться (last in, first out). Начало любого таска происходит в app launcher'е

Не принимал во внимание, что в приложухе должна быть скорее одна активити, суть ясна.

Норм если такое на собесе выдам? За милда сойду?

БЛЯТЬ ХОЧУ НА ФРИЛАНС
378 1816027
>>816017
брррр. просто брррр. ох и нагрузил
379 1816042
>>816027
Лол, а хули еще делать, хочется типа хорошо знать сразу
380 1816053
>>816042
можешь ты знать как угодно
но вот такое вывалить - и будет казаться что джун по верхам почитал там по бырому и воду наливает. Вроде инфы много, а кажется что знания пытаешься водой залить
381 1816065
>>816053

>и будет казаться что джун


Ура, мама, я уже джун!
382 1816072
>>816065
джун. конечно джун. мама подтвердит
а вот джун-разработчик ли - это хз

Но по написанному впечатление что у тебя в голове просто каша. То есть ты явно читал, но не видно того, что ты понимаешь само устройство что да как
383 1816131
>>816017

>Вьюмодель никогда не должна юзать Context, никогда не должна генерировать данные (только запрашивать).


Молодец, я об этом постоянно говорю карликам, а они всё равно продолжают спрашивать о том, как закостылить контекстно-зависимую фичу внутри vm.

>Не принимал во внимание, что в приложухе должна быть скорее одна активити, суть ясна.


Изучай фрагменты в контексте single activity и сопряженных с подходом ограничений и требований которые, в свою очередь, непосредственным образом связаны с архитектурой. Это в набольшей степени актуально и очень качественно тебя забустит.

>Норм если такое на собесе выдам? За милда сойду?


Как тебе сказать. Кто-то оценит, кого-то это не заинтересует, тут уж зависит от предпочтения собеседующего и того, на чем строится его механизм оценивания. Говоря о собеседовании, первостепенная задача - показать, что твои знания покрывают весь цикл разработки и структурированы в достаточной мере, чтобы иметь четкое представление о каждом этапе построения приложения как системы. Сюда же относится знание используемых технологий, подходов и принципов, которые направлены на построение максимально эффективного рабочего процесса. Важна не столько "площадь покрытия" теории, сколько способность работать в контексте недетерминированности алгоритма построения многокомпонентной системы, включая возможность качественно анализировать и соотносить достоинства и недостатки потенциального способа решения задачи, а ещё сроки, возможности и другие плюшки. Но если говорить проще, ты должен показать, что уровень твоей квалификации достаточен для того, чтобы самостоятельно принимать те или иные решения. это особенно актуально для удаленки Фриланс же отличается тем, что тебя оценивает только твой клиент, поэтому и требования несколько иные, так как ты имеешь возможность адаптировать рабочий процесс под себя, игнорируя чужие требованиялида/команды, формалистского подхода как такового, хотя сделать это не так просто, как может показаться, имея дело с заказчиком, которому просто нужен готовый продукт.
383 1816131
>>816017

>Вьюмодель никогда не должна юзать Context, никогда не должна генерировать данные (только запрашивать).


Молодец, я об этом постоянно говорю карликам, а они всё равно продолжают спрашивать о том, как закостылить контекстно-зависимую фичу внутри vm.

>Не принимал во внимание, что в приложухе должна быть скорее одна активити, суть ясна.


Изучай фрагменты в контексте single activity и сопряженных с подходом ограничений и требований которые, в свою очередь, непосредственным образом связаны с архитектурой. Это в набольшей степени актуально и очень качественно тебя забустит.

>Норм если такое на собесе выдам? За милда сойду?


Как тебе сказать. Кто-то оценит, кого-то это не заинтересует, тут уж зависит от предпочтения собеседующего и того, на чем строится его механизм оценивания. Говоря о собеседовании, первостепенная задача - показать, что твои знания покрывают весь цикл разработки и структурированы в достаточной мере, чтобы иметь четкое представление о каждом этапе построения приложения как системы. Сюда же относится знание используемых технологий, подходов и принципов, которые направлены на построение максимально эффективного рабочего процесса. Важна не столько "площадь покрытия" теории, сколько способность работать в контексте недетерминированности алгоритма построения многокомпонентной системы, включая возможность качественно анализировать и соотносить достоинства и недостатки потенциального способа решения задачи, а ещё сроки, возможности и другие плюшки. Но если говорить проще, ты должен показать, что уровень твоей квалификации достаточен для того, чтобы самостоятельно принимать те или иные решения. это особенно актуально для удаленки Фриланс же отличается тем, что тебя оценивает только твой клиент, поэтому и требования несколько иные, так как ты имеешь возможность адаптировать рабочий процесс под себя, игнорируя чужие требованиялида/команды, формалистского подхода как такового, хотя сделать это не так просто, как может показаться, имея дело с заказчиком, которому просто нужен готовый продукт.
384 1816164
>>816131
Спасибо
385 1816186
>>816131

>как закостылить контекстно-зависимую фичу внутри vm.


Вопрос как вопрос. ну не должна вьюмодель знать про контекст. Она должна знать тех, кто имеет право знать про контекст. И это не костыли, а норма как бэ
386 1816201
>>816186
Как закостылить - читай: как передать контекст в vm
387 1816368
Правда что в сборки андроид от васянов с XDA могут щашивать любой код и собирать потом с руткитами и прочим дерьмом?
388 1816504
>>815863
спасибо анону за линк
наконец то удалось прикрутить этот ебучий hilt как надо
389 1817998
Сап. В сторону каких марок смартфонов недорогих лучше глянуть со свежей системой?
Нужно для тестирования относительно легковесных приложений. Думаю, что одним эмулятором обойтись не получится, а сам пользуюсь яблоком.
Глянул цены на сяоми, охуел. Думал, что раза в два дешевле.
390 1818000
>>817998

>Глянул цены на сяоми, охуел. Думал, что раза в два дешевле.


и при этом цена на яблоко тебя не смущает. гм.
391 1818002
>>818000
Пока писал пост, самому смешно с этого было.
image.png30 Кб, 603x236
392 1818319
Товарищи, помогите. Веб-вьюха выбрасывает html, в котором есть что-то из Vue.js, т.е. не хавает почему-то этот вьюжс.
С меня 1000 бочек нефти
393 1818504
Как с вакансиями обстоят дела?
андроид.webm5,8 Мб, webm,
960x533, 1:37
394 1818507
Чет давно не заходил в тред, потому что додик оп бесил. Щапку проебали, молодцы, она была гавно все равно.
Вкатывальщиков в этом треде дохуя, поэтому освящаю тред
395 1818538
Тупой вопрос : как из второй активити вызвать notifydatasetchanged у адаптера первой активити без извращений?
396 1818897
>>750676 (OP)
Всем привет
Бля, шапка проебана, а я как раз вкатывальщик
Нужно для своих нужд написать андроид-приложение, по функционалу похожее на навороченную записную книжку, которая в себя будет аккуратно упаковывать данные, ну и проводить с данными всякие там действия, нужные мне.
Потенциально было бы здорово синхронизировать данные с Гугл аккаунтом, но это уже потом, сильно потом
Остановимся на записной книжке
Но я вообще хз, на чем писать это самое приложение
Есть какой-то признанный хотя бы парой анонов туториал степ-бай-степ гайд? Ну, какие-то основы, базовые вещи для приложения, чтобы познакомиться с языком / языками / спецификой?
Короче, авторитеты, посоветуйте, с чего начать ньюфагу?
В программировании е
397 1818959
>>818897
что значит "на чем писать"?
на том что знаешь конечно.

под андроид можно на многих языках писать
398 1818991
Объясните глупому новичку: программы на Android следует писать с помощью Java или можно работать с JavaScript?
Игры например?
Или приложения?
Или под Андроид можно писать на многих языках, как сообщил анон выше?
А на Питоне можно работать?
399 1818998
>>818991
жава просто нативный (ну теперь и котлин)
так что если знаешь жава или котлин то на нем и пиши
если дарт то flutter
если шарп то хамарин
если питон то kivy
если жс то там свой набор говна
400 1819009
>>818998

>если жс то там свой набор говна


Анонче, а почему так грубо про JS?
Что в нем плохого?
401 1819021
>>819009
всё. это ж жс. а уж электрон софт я себе даже не ставлю. не заслуживает это говно чтобы я на него ресурсы системы тратил
402 1819025
>>819021
Я сейчас учу Питон, и насколько я понял - это язык BackEnd.
Мне нужно изучать JavaScript для FrontEnd?
403 1819027
>>819025
а ты хочешь фронтенд? ты мазохист?
404 1819028
>>819027
Я хочу быть ФуллСтек разрабом сайтов.
Это правильно? Или я не того хочу?
405 1819032
>>819028
тогда придется есть это дерьмо
правда это уже не про андроид
а вообще если есть возможность не трогать фронт лучше не трогать.
406 1819034
>>819032
А ты бы что посоветовал изучать и в каком направлении двигаться?
407 1819037
>>819034
не знаю. ты не в тот тред с этими вопросами.
408 1819038
>>819037
Точно.
Ладно, крайний вопрос: если я буду создавать игру с открытым миром на Андроиде, Python Kiwi позволит мне реализовать это максимально хорошо?
Или лучше юзать Java и Kothlin?
409 1819052
>>819038

>Или лучше юзать Java и Kothlin?


Kotlin
Лучше юзать Unity
410 1819127
>>818897
>>818998
Такой вопрос: а kivy норм?
Я просто имею некий (именно некий) бэкграунд в питоне, так что на бумаге киви будет вполне себе хорошим выходом, тем более, что мне не нужно пилить какое-то хитровыебанное шустроработаюшщщее приложение

Но kivy (судя по видосам) показался мне каким-то суперхитровыебанным, то ли приложение упаковывалось хуй пойми как, то ли что-то ещё, короче, что-то меня смутило.
Так kivy норм?

И если не kivy, что из этого попроще?

>жава просто нативный (ну теперь и котлин)


>так что если знаешь жава или котлин то на нем и пиши


Это проще, с учетом того, что я язык не знаю? Хотя и питон я не знаю, так, костыли умею хуячить...
411 1819135
>>819127
Бля, с первого раза kivy не установился. И почему я не удивлен?
412 1819138
>>819127
все что не нативное - априори шаманство. Даже нативное это шаманство, но проще найти решение
413 1819140
>>819127
Бери Джаву или Котлин что понятнее, ищи тутор по созданию записной книжки, затем пытайся запилить все те фичи, которые тебе нужны, имея какую-то основу. Думаю, это самый простой вариант. да и задача простая
На Kivy ты далеко не уедешь, имея "некий" бэкграунд, так что лучше не трать время.
image.png5 Кб, 395x119
414 1819175
Наверное платина. Пытаюсь вкатиться, поясните как в андроид студио нормально сделать билд для SDK < 30. Скачал сдк 19, поменял в пикрил, билдится с ошибками всё.
415 1819182
>>819138
Так есть варианты успеха для написания приложения уровня записной книги на питоне, или лучше (как советует анон ниже) взять что-то javakotlin?
>>819140
А все непонятно
Тут мы возвращаемся к тому, за чем я пришел в тред
А есть какой-то окологодный тутор, который можно использовать как отправную точку? Мало ли есть что-то, что признано аксакалами треда. Что-то, что даст большее понимание, чем какой-то видос уровня "на котлин за 30 минут без знания языка!"
416 1819183
>>819182
чем нативнее язык тем удобнее средства разработки и возможности и гугление
и с выходом котлин и aac стало более менее приятно кодить на андроид (до этого был лютый ад для мазохистов)

сам я шарпист, но предпочитаю котлин, а не хамарин просто потому что намного меньше костылить нужно

если ты питонист то поможет это чтиво
https://github.com/Khan/kotlin-for-python-developers
417 1819188
>>819182

>тутор


Codelabs туториалы + поищи на ютубе видосы, где пилят записную книгу.
418 1819219
хотел вкатиться, но шапки нету. придется в ios
419 1819225
Здарова
Пытаюсь отправлять данные из одного фрагмента в другой без использования viewmodel с использованием fragment manager. По необъяснимой причине не получается проставить листнер в принимающий данные фрагмент

по гайдам гугла, чтобы засеттить такой лиснер, нужно вызвать getParentFragmentManager().setOnFragmentResultListener( ... ), но, бля, оно не вызывается! тупо у фрагмента даже нет метода getParentFragmentManager()

пробовал через getParentFragment().getFragmentManager(), но у этой хуйни все равно нет сеттера setOnFragmentResultListener( ... )

че это вообще такое? как это понимать? минимальная сдк проставлена 21, все норм. гайд от гугла, в котором они все это каким-то образом делают: https://developer.android.com/training/basics/fragments/pass-data-between
420 1819229
>>819225
все, разобрался
эта фигня в альфа версии, нужно импортить androidx.fragment:fragment:1.3.0-alpha08
421 1819253
вообще, насколько быстро можно будет начать писать на котлине, если хорошо умеешь кодить на джаве под ведроид?
422 1819254
>>819188
Как-то ничего околонормального не могу найти
Разве что
https://www.youtube.com/watch?v=pjsADVZh45I&list=PLyfVjOYzujuj20Y-3kVhT3Zro9CrMNgNS&index=3&ab_channel=StartAndroid
Насколько это нормально?
423 1819255
>>819188
>>819254
это речь про видосы с приложениями, коделапс - с этим все понятно.
424 1819258
>>819254
По каким критериям ты определяешь нормальность? Ознакомься с разными, а далее смотри те, что зайдут.
425 1819599
Есть ли более-менее достойные аналоги ARCore со схожим функционалом (например, motion tracking, plane detection и всё такое), но чтоб работало всё это на большинстве устройств (хотя бы с 5-ым ведром), а не на 3,5 топовых флагманах?
426 1819605
>>819253
1-2 недели
427 1819833
как происходит sql иньекция на аднроиде с апкешках?
428 1819904
>>813187
Ну и лох значит. Простой sqllite должен выпиливаться

Легаси должно разгребаться
429 1819910
>>819904

>Простой sqllite должен выпиливаться


Ты либо юзаешь sqlite, либо полностью его выпиливаешь и переходишь на room. Иначе тебе придется разгребать ещё больше.
430 1820054
Ребят, есть ли разница между 1) прописанным ключом и кредами в build.gradle и нажатием Build APK(s) на релизном варианте и 2) нажатием Generate signed APK. Вроде и там, и там всё подписано, но я вижу, что файлы различаются по весу.
Маркету пофигу, а вот одна MDM ругается, что в первом варианте приложение не подписано.
image.png168 Кб, 1273x750
431 1820273
Бляяяяяяять
Я нихуя не понимаю, что не так с моим кодом пикрил
Вызываю интенты, но они НИХУЯ не запускают соответствующие активити, вызывается только диалог "Share", содержащий вообще какие-то левые хуйни
mindsk 30, на эмуляторе стоит API 30
Спс за помощь
432 1820274
>>820273
minsdk 21 конечно
433 1820285
>>820273
ебать я сука брейки забыл добавить
434 1820286
кто эту хуйню вообще придумал
435 1820329
>>820273
Разбей на методы, используй разные лисенеры
436 1820412
>>820286
это java
она такая
437 1820530
>>750676 (OP)

Я тоже не понимаю, что может нравится в банальном формошллёпстве под андроид. Не Энтерпрайза, не бизнес логики, ничего. Какой то джаваскрипт под телефон. Взял данные с апи и отобразил, скукота для школьников. Вот и спрашиваю, как может нравится писать под андроид, посколько не особо понимаю, что в этом может нравится
image.png18 Кб, 495x199
438 1820664
БЛЯЯЯЯ
интенты это самое уебищное что есть в андроиде
вот почему нахуй сука интент пикрил без проверки запускается, а с ней - хуй там? КАК ТАК БЛЯТЬ ПОЧЕМУ СУКА RESOLVEACTIVITY ВОЗВРАЩАЕТ НОЛЬ КОГДА СУКА У НАС ЕСТЬ ЕСТЬ НАХУЙ АКТИВИТИ ДЛЯ ОБРАБОТКИ АКШНА КАК БЛЯТЬ КАК НАХУЙ ТАКОЕ ВОЗМОЖНО

проверка через packageManager.queryIntentActivities(...) тоже дает ноль (пустой список)
ну как
ебана
image.png36 Кб, 303x315
439 1820696
ТГ конфа есть? Расшарьте, пожалуйста
440 1820750
>>820664
Пукич свой остуди. С 30 апи теперь нельзя просто взять и палить список установленных приложений.

https://developer.android.com/training/basics/intents/package-visibility
441 1820810
Поясните за RecyclerView (GridLayoutManager) с картинками из инета.
RecyclerView знает ширину себя и количество колонок. но он не может же знать конечную высоту картинки. И если используя scaleType и adjustViewBounds картинка впишется не теряя соотношение сторон, то высота строки будет куда больше.

я не нашел способа задать ему начальные ширину высоту от которой бы он вел отсчет при скалинге.

Я решил тем, что вычисляю высоту строки при создании холдера, но блин это ж не дело.
442 1821227
Аноны, привет! Я бэкенд-макака. Умею в пхп и нодеjs.
В данный момент возникла необходимость сделать несложное мобильное приложение, человеку будет выводиться карточка с информацией.
В мобильной разработке я нолевой ноль.
Масштаб времени - месяца три.
На какой стул мне сесть? Флаттер? Или реактНатив на обычном реакте могу немношко писать?
И вообще возможно за три месяца изучения по паре часов в день что то адекватное запилить? Или больше ремени уйдет?
image.png273 Кб, 1280x720
443 1821393
Аноны, подскажите, может есть годная альтернатива AutoCompleteTextView?

Чтобы было более ГИБКО и кастомизируемо.
Например, выводить все элементы по дефолту, когда поиск пустой, или чтоб выделять наматченную подстроку.

Погуглел библиотеки, но годноты не нашел
444 1822060
>>750676 (OP)
Приветствую аноны. Подскажите вкатывальщику - решил вкатываться в андроид. Стоит ли сразу учить котлин или же для начала изучить джаву?

Почему спрашиваю? Опять же если начинать с джавы это займёт N-e количество времени, а моя цель скорейший вкат.

Решил спросить у знающих людей, вместого того что бы слушать водянистые ролики на ютюбе или ответы из гугла в стиле >пук >кок.

Добра.
445 1822069
>>795315
Что пилешь анон? Игры? По какой модели дейстуешь?

Тупей и проще или качественно и дороха?
3d/2d ? Если 3д в блендере модельки делаешь? Лоу поли?
446 1822072
>>821227

>И вообще возможно за три месяца изучения по паре часов в день что то адекватное запилить? Или больше ремени уйдет?



Если твоя цель только одна мелкая приложуха то быстрей, намного быстрей.

>На какой стул мне сесть? Флаттер? Или реактНатив на обычном реакте могу немношко писать?



Флатер офкорс

>В данный момент возникла необходимость сделать несложное мобильное приложение, человеку будет выводиться карточка с информацией.



Если правильно понял твою цель, то за 2 недели на изи состряпаешь.
447 1822082
>>815914

>Но я слышал стори, что не каждый джун способен внятно рассказать, что такое активити



Ты бы видел меня как я начал маня-маневры делать 3 года назад на собесе при подобном вопросе и очень удачно сменил тему. В итоге устроился на галеру с первого же собеса, оче повезло что интервьеру понравился нет не пидор , суть заключается не в том знаешь или не знаешь , а как ты это подаешь.
448 1822085
>>822072

>>если правильно понял твою цель, то за 2 недели на изи состряпаешь.


Думаю правильно, на сервере есть данные, человек на приложение через api сервера должен получать json с данными.
Сервер на пхп делают? Или сразу лучше nodejs?

>>Если твоя цель только одна мелкая приложуха то быстрей, намного быстрей.


Спасибо обнадежил. Значит буду изучать флаттер.
449 1822087
>>805934

>каком стиле оформлен дизайн приложения


Проверяют

>Проверяют ли они по какой лицензии распространяются картинки


Если владелец картинки пожалуется на тебя, то тебе пиздец. Минимум попросят удалить картинку из приложения, максимум забанят аккаунт. Если владелец кабанчик, может и в суд подать, но это из разряда раз на миллион.
450 1822089
>>803326
Джава-бэк например
451 1822093
>>822085

>Сервер на пхп делают? Или сразу лучше nodejs?


firebase потести. А так ноду если знаешь, не критично от слова вообще.

>Спасибо обнадежил. Значит буду изучать флаттер.


А так ты незнаешь его, попробуй лучше java core и котлин потом.
452 1822111
>>822093

>>А так ты не знаешь его


Вообще ноль.

>> А так ноду если знаешь


Значит пилить на ноде. Я понял.

>>попробуй лучше java core и котлин потом.


А ты тот анон что мне ранее ответил?
Просто моя задача с горизонтом месяца в три запилить на иос и андроиде оч простое приложение. Фактически просто вывести json от сервера. Небольшое такое дополнение к основному вэб-приложению.
И мне нужно что то типа "http-режима", постоянный сокет я хз как мобильный клиент обменивается данными с сервером, онлайн игры очевидно на сокетах висят мне по идее не нужен.

В общем мне нужно что то попроще и побыстрее условно конечно
В джаву/котлин я боюсь въезжать буду долго.
453 1822113
>>822111

>А ты тот анон что мне ранее ответил?



Про флаттер я писал, думал ты его знаешь. Нет смысла ебать мозги с флаттером если твоя цель приложение, джава кор и котлин легче зайдут + туториалов море.

>В джаву/котлин я боюсь въезжать буду долго.



Думаю если с утчетом изучения языка, тогда в 3 месяца уложишься легче, если хуй не забивать и учить плотно в плане информации. Да и вообще если приложения простое, то много ума и кода, там не нужно, тем более можешь спиздить уже готовый код и переиначить под себя, поищи в телег слитые курсы по изготовлению приложений.
454 1822141
>>822113
Я думал о джаве, тем более что современный пхп это считай ее форк в плане ооп.

Но мне еще потенциально айфон-приложение нужно. То есть кроссплатформа.
Хотя теоретически изучать джаву/котлин надежнее наверно.
Короче я пока в сомнениях.

А кстати, читал что для грядущей фуксии флаттер - пока что единственная возможность пилить приложения. А вдруг для фуксии отвалится поддержка котлина и джавы? Это я как совсем профан говою конечно
455 1822151
>>822141

>Но мне еще потенциально айфон-приложение нужно. То есть кроссплатформа.



Xamarin - но костыль еще тот.
456 1822152
>>822141

>А кстати, читал что для грядущей фуксии флаттер - пока что единственная возможность пилить приложения. А вдруг для фуксии отвалится поддержка котлина и джавы? Это я как совсем профан говою конечно



В первый раз слышу, но думаю что пиздеж, котлин точно не умрёт для андроида.
458 1822169
>>822159
В любом случае ждать пока выйдет фуксия нет смысла. Твоё дело конечно, но я бы изучал java core + kotlin, да и в любом случае думаю что переходит будет плавный и перейти во флаттер не составит труда.
459 1822200
>>820530
Лучше формошлёпствовать под андроид, чем формошлепствовать на заводе где платят 20к.
460 1822231
>>822169
Ну с учетом моего текущего контекста проблемы, это не так актуально.
Мне нужно простенькое приложение на ios и android сделать, и видимо буду вкатываться во дарт + флаттер.
В принципе конечно больше импонирует вкат в более глубокие и нативные технологии, но моя задача требует компромиссов.
Поэтому попробую оценить по сложность реализацию через изучения дарт + флаттер, и уже от этого буду плясать.
461 1822239
>>820530

> не бизнес логики


> Взял данные с апи и отобразил



Чем не бизнес-логика? Если нужно взять данные с нескольких апишек и как-то их скомпоновать, то задача не самая тривиальная.
462 1822362
>>822069
2д. Уже не пилю. Новых идей нет, да и запал пропал, словил депресняк. Сделал тупо и проще, почему-то выстрелело, сейчас в стагнации. Доходы падают каждый месяц.
463 1822365
Ананасы, джуна (меня) которого все уже почти полгода почему-то считают мидлом посадили впервые не вносить правки в готовый проект, а писать самому с 0, еще в одну морду. Немного сомневаюсь в выбранной схеме для ui cлоя:

Проект - простенький интернет магаз, в силу того как выглядит макет ui сейчас пишу эрзац-сингл активити (одна активити для всего связанного с авторизацией, вторая - основная часть приложухи)

Основная часть апки на всех экранах имеет боттом нав бар, для того чтоб не проебывать все что юзер нащелкал, при переходам по навбару - фрагменты я тупо скрываю/отображаю, т.е по сути у меня висит 6 фрагментов на одном id активити, из которых 1 отображается юзеру - а остальные тупо скрыты.

Если говорить чуть более конкретно - то это не просто фрагменты, а фрагменты держащие бэкстек других фрагментов (т.к каждая вкладка навбара это целая цепочка разных экранов + мелкие дополнительные примочки, сделал через абстрактный класс от которого все эти топ-лвл фрагменты наследуются).

Вопрос в том насколько такая концепция жизнеспособна? Не посыпеться ли все от высокого жора памяти? Мельком посмотрел другие приложухи с навбаром - похоже многие делают что-то похожее.

Пока работает все ок, кроме пары мелких моментов (например после восстановления активити, восстановленные фрагменты не восстанавливают значение своей видимости (насколько я понял потому что в стейте такого поля тупо нет, буду сохранять ручками)
2fb0e0593a6a0a07de957de7bf14fe3b.jpg46 Кб, 500x417
464 1822368
>>822362

>Сделал тупо и проще



Всегда работает.
465 1822372
>>822362

>словил депресняк



Почему? Могу советов дать, сам когда то поборол эту хворь.
466 1822381
>>822365

>Вопрос в том насколько такая концепция жизнеспособна? Не посыпеться ли все от высокого жора памяти? Мельком посмотрел другие приложухи с навбаром - похоже многие делают что-то похожее.



Прогоняй тесты сразу же, смотри сколько памяти жрёт, все зависит от толстоты приложухи, судя по тому что ты описал ебануть не должно.
467 1822390
>>822381

>Прогоняй тесты сразу же, смотри сколько памяти жрёт, все зависит от толстоты приложухи, судя по тому что ты описал ебануть не должно.


Спасибо, идея неплохая, с профайлером посижу - посмотрю.
У меня вообщем сходные мысли, приложуха простая, ничего сверхтяжелого нет - да и на практике OutOfMemory я видел только у коллеги на проекте, где в рантайме на превью с камеры мутная либа с гитхаба накладывала OpenGl фильтры (и то, крашило только на некродевайсах)
468 1822396
>>822390

>OpenGl



Хуево дружит со старьём. В бородатые времена, встречал такую же проблему.
469 1822437
>>822372
Давай
другой анон
470 1822442
>>822437
Не воспринимай это как бред или тупой совет, реально помог.

Записываешься в бассейн, ежедневно. Потом спорт зал, тоже ежедневно, исключаешь весь сёрфинг в интернете, спать ложишься в 9 вечера, просыпаешься в 5.

Исключаешь алкоголь и фастфуд, он офицально вызывает депру по исследованиям.

На ютюбе смотришь только видосики про отдых и угар, никаких новостей и прочей хуйни, максимально абстрагируйся от этого, за 20+ депра пройдет, но один хуй все персонально, мне помогло.
471 1822446
>>822442
20+ дней

быстрафикс
472 1822452
>>822442
Также совет, дома не сидеть от слова совсем, просто шляйся по улице, ходи в парк, мб с кем познакомишься.
473 1822482
>>822060
Ну смотри, ситуация такая: Если проект новый, то 99.9% это котлин. Если старый - вероятно солидная его часть написана на жабе, новое могут как и дописывать на жабе так и писать на котлине, проблем на их стыке не слишком много и они не критичны.

На собесах скорее будут спрашивать по котлину, чем по джаве - но опять же, тут скорее зависит от проекта.

Ну и главное, котлин JVM язык и с джавой очень и очень похож.
Я как человек который вначале подробно учил джаву - а потом вообще без какой либо подготовки стал писать на котлине по большей части воспринимаю его как жирный синтаксический сахар для джавы, правда корутины немного поломали этот концепт (до сих пор нормально в них не разобрался, лол)

По итогу - если цель прямо быстрейший вкат, то учи котлин.
Но перед этим все таки разберись даже не в самой джаве, а в самой JVM. Хотя бы мельком, что это такое, как работает, что такое JDK, JRE, что такое .class файлы, что такое .java, memory model (heap/stack, GC, shallow copy/deep copy).
474 1822499
>>822482
Благодарю за подробный ответ анон
475 1822641
>>822482

>Но перед этим все таки разберись даже не в самой джаве, а в самой JVM. Хотя бы мельком, что это такое, как работает, что такое JDK, JRE, что такое .class файлы, что такое .java, memory model (heap/stack, GC, shallow copy/deep copy).


ну для написания приложух в андроиде это не очень надо. Можно смело пропустить и выучить по необходимости (которой 99% не будет)
476 1822681
>>822641
С JDK/JRE мб перегибаю, хотя у меня на джуновских собесах и за classpath / classloaders просили пояснить.

А насчет остального - использование .class в коде может попасться, memory model тоже нужно понимать - хотя бы то что все объекты передаются по значению, и для примитивов это будет просто значение, а для ссылочных типов данных это будет ссылка и что если даже ее скопируем - у нас будут 2 ссылки на один и тот же объект (видал вкатывальщиков которые этого не понимали).
Heap/stack - тоже имхо нужно понимать, чтоб не сильно удивиться от вида StackOverFlow/OutOfMemory + для многопотока нужно знать что у каждого потока свой стек + что делает volatile и т.д...

GC - ну это на минималках тоже нужно понимать, иначе как понять что такое мемори лик и как с ним бороться
477 1822683
>>822681
На джуновских собесах по ЯП гоняют? Или чисто по андроиду? Я пока только начал разбираться, код еще толком не писал. Когда джаву изучал делал свой проект, игру получилось хуево, но технологий кучу освоил и разобрался с фундаментальными вещами детально.

А под андроид смотрел некоторые видео по созданию приложений, мне показалось кода там мало или я ошибаюсь?
478 1822684
>>822681

>Heap/stack - тоже имхо нужно понимать, чтоб не сильно удивиться от вида StackOverFlow/OutOfMemory + для многопотока нужно знать что у каждого потока свой стек


>GC - ну это на минималках тоже нужно понимать


мы точно в треде про андроид сидим?
479 1822689
>>822684

>мы точно в треде про андроид сидим?



Ну джава все таки преобладает в большинстве проектов под андроид пока что. А heap/stack это начала теории в джаве.

другой-анон
480 1822691
>>822683
И по языку и по андроиду. Джунов гоняют по технике как правило от и до (опыта у тебя нет, говорить о нем не получится, вот и гоняют по технике), это уже дальше, чем ближе к сеньоро-архитекторам тем меньше разговоров о голой технике и больше разговоров за жизнь на прошлых проектах и архитектурах.
481 1822692
>>822689
начало*

быстрафикс
482 1822693
>>822691

>опыта у тебя нет



А если делал свои проекты, они есть на гите и если некоторые залить в плей маркет, это считается полноценным опытом?
483 1822694
>>822684
Конечно, нахрена jvm разрабу знать за gc - переменные на жабараше показали как создать - этого достаточно, вперед педалить.
484 1822696
>>822694
Кстати жабараш, параша же, не?
485 1822697
>>822693
Ну для меня маркер примерно такой - если у твоего проекта есть реальные юзеры (хотя бы ты сам) то это круто, если же нет - то код и проект посмотреть можно, но это не сильно серьезно. Хотя конечно все равно это идет в +.
Скорее если сильно захотят посмотреть как именно ты код пишешь тебе тестовое задание дадут.
486 1822698
>>822696
В целом да, в жаба-треде насколько помню над ним вечно стебутся. Можешь вначале немного офк посидеть, но надолго там зависать точно не стоит.
487 1822699
>>822697

>Скорее если сильно захотят посмотреть как именно ты код пишешь тебе тестовое задание дадут.



Тестовое же домой дают? Бывает такое что сразу на собесе нужно писать? Или это для мидло-синёров?

>>822698
Ну я как то пытался, когда читал книгу по джаве, мне показалось что задания слишком ебанутые. Поэтому придумывал сам себе задания.
488 1822702
>>822699
Тестовое естественно дома, как правило это небольшое приложение, типичное задание это получить данные с апи, сохранить, засунуть их в какой-то ресайкл и что-то сверху по мелочи накрутить.

Код на собесе тоже могут попросить пописать, (редко, но бывает), но естественно тебя никто не будет просить писать приложение на бумажке, это будет просто задача - начиная от fizz buzz test заканчивая задачами с leetcode/hackerank или чем-то собственного сочинения.
489 1822704
>>822699

>Тестовое же домой дают? Бывает такое что сразу на собесе нужно писать? Или это для мидло-синёров?



И еще в дополнение, если у тебя реально в резюме будет проект на гитхабе - то вполне вероятно что даже где хотели тебе дать тестовое - его не дадут, а откроют твой проект и быстро посмотрят его. Если ссылок на гитхаб нет - то вероятность нарваться на тестовое растет.
490 1822705
>>822702
Спс, добавлю себе в сохранёнки, прочту снова когда буду на собесы ходить. Кстати есть примеры сроки вката в андроид, вроде же уровень пониже чем на джаву бэк?

В джаву судя по опыту до джунового опыта год вката, если по 3 часа в день на протяжении года учить/кодить.
491 1822707
>>822705

>Кстати есть примеры сроки вката в андроид, вроде же уровень пониже чем на джаву бэк?


Хз, я шел по пути просиживания жеппы в профильном вузе, соответственно мой опыт и опыт ближайших знакомых это не вкат с 0 за 3 месяца занятия по вечерам, а годы неспешной учебы.

Если взять мой поток - то несколько чуваков уже работало когда только поступали, дальше самые шарящие и работящие уже начали работать к концу второго курса, основная масса рассосалась по галерам примерно в середине 3-го, мой срок вката оказался одним из худших - первая работа спустя 2 недели после получения диплома.
492 1822708
>>822707

>первая работа спустя 2 недели после получения диплома.



Не так уж и плохо, наработаться успеешь за жизнь, а чилить в универе получится только единожды если ты обычный человек.

Я вот когда вузик окончил мне предложили зарплату в 15к, с тех пор ни дня по спецальности не работал, хотя защита диплома 5/5 , у единственного из группы сука.
493 1822710
Вот раньше была такая вещь, как RoboVM - нечто, позволяющее писать аппсы под iOS на жаве. Но потом её купили мелкомягкие, и оно потухло. Хотя, вроде, есть живой форк (https://github.com/MobiVM/robovm) и ещё BugVM (тоже, вроде, форк, но полудохлый). Ещё есть Multi-OS Engine от Интела и нечто под названием Gluon Client Plugin, использующее GraalVM от Оракла. Может, что-то из этого кто-то из анонов уже использовал? Как оно? Насколько оно надёжное и беспроблемное? Отпишитесь, плиз.
494 1822711
>>822710
Я использовал только Xamarin и это очень ебанутая хуйня вплане стабильности. Самый простой нет совет это задрочить айосовских язык.
495 1822714
>>822694
пишу на котлин под андроид
знание GC и прочего упомянутого было нужно аж 0 раз.
если бы этого не знал - результат был бы тот же.
496 1822718
>>822714
Перед котлином java учил?
497 1822720
>>822718
нет. Я шарпист. А жава...ну разве что в процессе гугления на so ответы на жаве и так с жавой знаком.
498 1822722
>>822714
Как минимум на собесах через раз спрашивают
499 1822729
>>822711
Ну не знаю про стабильность
она просто сырая еще и долгий запуск апликухи раздражает
500 1822730
>>822720
На шарпе пробовал что нибудь делать под андроид?
502 1825166
Бля, какого хуя нихуя нет удаленок для джунов
Только сеньоры. Рили вообще джуну ремоут найти?
503 1828901
>>762931
MyPhoneExplorer
504 1833682
не уверен что это подходящее место для такого, поэтому перенаправьте если знаете куда:
мобила побывала у мусоров, хочу узнать что с ним там происходило сняв логи, нагуглил logcat и способ через Android Studio, но насколько я понял эти способы показывают логи в текущий момент. ведутся ли вообще логи системы? если да, то как их достать?
505 1839079
>>825166
Джунов никогда не берут на ремоут
506 1839566
>>833682
Там копеечный кеш. Буквально мегабайты. В настойках устройства можно настроить
507 1859336
Что надо знать джуну? Понимаю что для кажой компании надо что-то свое, но какой нибудь минимум я думаю у всех одинаковый.
508 1888026
Пацаны, поясните, я еблан или лыжи не едут?
Можно ли в ретрофите при ошибке десериализовалки получить ответ в виде строки?
А то получается, тебе либо прилетает валидный жсон и десериализуется, либо request.execute выбрасывает ошибку гдето у себя внутри конвертера, и ты не получаешь вообще никакого ответа :\
509 1891677
>>888026
Можешь как вариант ResponseBody юзать, а далее поймешь
510 1891679
>>839079

>Джунов никогда не берут на ремоут


Доказываю своим существованием обратное
Тред утонул или удален.
Это копия, сохраненная 24 марта 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски