Двач.hk не отвечает.
Вы видите копию треда, сохраненную 15 октября 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
509 Кб, 1000x970
Android Development Thread 2.0 # OP #838598 В конец треда | Веб
Android Development Thread 2.0

Обсуждаем разработку под Android, ждём выхода новых Нексусов, смеёмся над седьмым гейфоном.

FAQ

> Хочу вкатиться в разработку под Android!


Большинство приложений написано на Java, выучить её на хорошем уровне — это первое, что необходимо сделать. Рекомендуемую литературу см. в Java-треде.
После этого можно открыть официальную документацию http://developer.android.com/training/index.html и попробовать создать по туториалам своё первое приложение.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.

> IDE и инструменты?


Android Studio — основной инструмент разработчика. Кроме неё потребуется Android SDK (устанавливается вместе со студией).

> Мануалы?


- Официальная документация: http://developer.android.com/
- Полезный гайд для начинающих и продвинутых: http://guides.thecodepath.com/android
- Бесплатный видеокурс от Google для новичков: https://www.udacity.com/course/android-development-for-beginners--ud837
- Два ресурса, главный (и единственный) плюс которых — русский язык: http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
- Классика, способная дать ответ на почти любой вопрос "Как сделать xyz?": http://stackoverflow.com/

> Альтернативы Java?


- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. Можно использовать в проекте вместе с кодом на Java.
- Xamarin — кросс-платформенный фремворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия.
- PhoneGap/Ionic/Titanium/ReactNative — имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.

Предыдущий тред: https://2ch.hk/pr/res/829054.html (М)
#3 #838627
>>838621
это джун?
>>838630
#4 #838630
>>838627
Да. Вернее, даже пред-джун, ибо тестовое задание для стажировки.
>>838673>>843087
#5 #838655
>>838621

>отсутствие крашей


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

>code-style от Google


Какой бля code-style от Google? Тем более оно, сука, всё равно в одинаковый байт-код соберётся, лишь бы читать можно было.
Напридумают хуйни всякой, а потом ебут друг друга в жопы.
>>842153>>842169
#6 #838673
>>838630
ну норм, дефолтное задание, только вот адаптация под планешты че то дохуя
>>838674
#7 #838674
>>838673
Удвою, планшеты на андроиде нахуй не сдались, это рынок винды и iOS.
#8 #838748
>>838598 (OP)
Ты старый ОП?
>>838796
#9 #838770
>>838621

> Тестовое задание на стажера судя по сложности сразу в Google


> Kotlin


А ха ха наконец-то
#10 #838791
>>838490
Зочем?
Ну ладно может таки переведу и на хабр выложу.
#11 #838793
>>838598 (OP)
Ты что с шапкой сделал уебан?
>>838795
#12 #838795
>>838793
Хорошая красивая шапка, вместо прошлого уебища.
>>838797
#13 #838796
>>838748
Нет, я старый оп.
Проебали нумерацию, какое-то говно в шапке на три строки.

>Альтернатива джаве


>Xamarin


>PhoneGap/Ionic/Titanium/ReactNative


Какой даун.
>>838801
#14 #838797
>>838795
Да хуя с два. В ебало вам плюнул, больше не дам шапки делать.
#15 #838801
>>838796

>Нет, я старый оп.


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

Старперам вроде тебя с ~1.5 годом опыта пора на пенсию, даешь дорогу молодым.
Думаю через пару тредов вообще шапку перекатим на Kotlin.
>>838811
#16 #838811
>>838801
Понятно, школота заселила тред.
#17 #838823
gson или jackson ?
>>838843>>838882
#18 #838843
>>838823

>gson или jackson ?


ProtoBuf

Как говорит Робер М.: "лучшее техническое решение - это отложенное решение".

Какая нах## разница какую брать бибилиотеку, это все third-party components.
Вынеси сериализацию в отдельный модуль, так что ее можно было менять в будущем.
>>838895
#19 #838882
>>838823
org.json
>>838895
#20 #838895
>>838843
>>838882
подойдите к ответу на вопрос более ответственно.
вы на собеседовании как никак
>>838921
#21 #838910
Блять, я в рот ебал это назначение цветов аппкомпат контролам.
У меня блядский AppCompatEditText, мне нужно поменять цвет подчеркивания.

colorControlNormal/Activated/Highlight в стиле темы - хуй
colorControlNorma/Activated/Highlightl в отдельно стиле для theme элемента - хуй
colorPrimary и др - хуй

В итоге сижу любуюсь охуенной белой линией едиттекста на белом фоне.
#23 #838913
>>838912
Я в посте уже это указал.
>>838915
#24 #838914
>>838910
И проблема только на 21+. Ниже цвета применяются нормально.
#25 #838915
>>838913
Хз, у меня всё работает. Старая версия support library?
>>838918
#26 #838918
>>838915
Последняя.
#27 #838921
>>838895
Сынок, это я тебя буду собеседовать, раз уж ты с такими тупыми вопросами приходишь.

Шесть-лет-в-андроид-деве
#28 #838922
>>838921
Поссал на новичка.

Пятнадцать-лет-в-андроид-деве
>>838928
#29 #838928
>>838922
>>838921

>Шесть-лет-в-андроид-деве


>Пятнадцать-лет-в-андроид-деве


Поссал на вас обоих.
70 лет в андроид деве
>>838930
#30 #838930
>>838928
Насрал тебе на голову.

мимо-Райан-Гослинг
#31 #838946
Прочитал head first java. Теперь могу вкатываться в андройд и читать документацию?
>>838969>>838987
#32 #838969
>>838946
Прочитал одну книгу != умею хорошо программировать на Java
>>838987
#33 #838975
>>838921
ахах, мне этот вопрос на собесе как раз задал чел, который начал разрабатывать с самых первых ведроидов
>>838985
#34 #838979
Привет андроиданам из энтерпрайза опять.
>>838984
#35 #838984
>>838979
Как на галере, брат?
>>838986
#36 #838985
>>838975
Помню, когда то это и для меня было действительно важно.

Мы гоняли огромные JSON на телефоны с 16 MB оперативы.
GSON тогда был версии (по моему) 1.X и как-то неудачно написан что проигрывал Jaskon в разы.
Немного посже вышла весрия 2.0 в которой они сильно проапргредили скропрость парсинга.

Сейчас, после стольких лет оптимизаций этих библиотек и появления 4-х ядерных смартфонов,
я бы скорее выбирал парсер по критерию "может ли он работать с иммутабельными объектами".

6-лет в разработке
#37 #838986
>>838984
Норм. Сегодня офигенный стрим написал для пробега по дереву.
Всё хочу освоить андроид, а времени нет.
Сейчас уже выбрал в магистратуру кафедру веб проги, а там для поступленя нужен матан, так что изучение андроида опять откладывается.

А у тебя?
>>839011>>839016
#38 #838987
>>838969
>>838946
жыза, я так понял нужно создать какое-нибудь первое приложение
только идеи нет
>>839017
1292 Кб, 2000x1517
#39 #838999
Запилите нормальную версию R https://cran.r-project.org/ под андроид. Есть только обрезанная по самые помидоры коммандная строка, без намека на выдающиеся графические возможности этого замечательного языка обработки данных.
>>839002>>839019
#40 #839002
>>838999
эр говно, бери юляшу и не вуёбывайся
>>839006
#41 #839006
>>839002

>юляшу


Там 0,01% от реализованных на R алгоритмов нет. инб4 сам и напиши
#42 #839011
>>838986
Все горит, нужно натянуть текстурки в игре, а они не натягиваются, движок говнона самом деле проблемы во мне. Нужно подтереть сопли джунам, что бы делали заебись, а не говно. Нужно вправить мозг бекендщику, короче завал.
>>839027
#43 #839016
>>838986

> магистратуру кафедру веб проги


Пиздец.
>>839027
#44 #839017
>>838987
- Клиент для Двача. Все профессионалы с этого начинали.

- Или >>838621
#45 #839019
>>838999
Нахуй тебе R на смартфоне? Ты ебанутый?
>>839021
#46 #839021
>>839019
На планшетике жи.
>>839023
#47 #839023
>>839021
То же самое. В общем, да, ебанутый.
#48 #839027
>>839011
Оо, удачи тебе. У меня такой кастомер, которому сроки почти никогда не горят.

>>839016
Почему?
17 Кб, 681x298
#49 #839071
Сап, это опять я с SQLite. Короче, как вывести отдельную строку, а не выводить все столбцы?
#50 #839079
>>839071
Так строку или столбцы? Если строку, то selection, если столбцы, то projection.

И причём тут Android? Тебе в sql-тред с такими вопросами.
2104 Кб, 1440x498
sage #52 #839126
Из Гугл-плея убрали раздел new apps/new games
>>839136
#53 #839136
>>839126
Неча всякое индиговно рекламировать за бесплатно.
#54 #839154
>>839071
Хули ты такой? Ты задал аргументы для квери. Тебе выплюнуло курсор. На каждой позиции курсора ты можешь достать имя котика по индексу 0, номер на 1 и возраст на 2. Очень вероятно что котик по твоим критериям в базе не один, значит там несколько строк. У тебя не аппендится в текствью потому что ты мудаксама идея туда апендить пока ты идешь по курсору тупа до невозможности. Если ты хочешь ток одного кота, ну блять возьми и верни из этого метода new Cat(name, phone, age), после первой итерации цикла, только курсор закрой. Если твоя блядская проблема в том, что ничего не выводится, так это вероятно потому что курсор пустой, тебе так сложно логнуть его размер?
#55 #839174
Для чего и где используется CancellationListener из CancellationSignal?
Для собственно завершения некой операции?
#56 #839192
Стоит ли перекатываться к вам из разработки под винфон?
#57 #839193
>>839192

>винфон


Ты живой?
>>839194
#58 #839194
>>839193
Немного.
>>839205
#59 #839205
>>839194
Ну если не войдешь в айос то войдешь сюда.
>>839229
#60 #839229
>>839205

> Ну если не войдешь в айос,


то сюда у него тем более не получится "войти", если он даже айос не осилит
>>839238
#61 #839231
>>839192

>Стоит ли перекатываться к вам из разработки под винфон?


Однозначно стоит перекатываться в кросплатформу.
Попробуй Xamarin.Form будешь как дома (C# + XAML).
#62 #839234
>>839231
От шарпа уже подташнивать начинает, наебался я с ним.
>>839240
#63 #839238
>>839229
На иос денег нет.
#64 #839240
>>839234

>От шарпа уже подташнивать начинает, наебался я с ним.


В принципе я тебя понимаю, сам сижу на Kotlin, он даже по сравнению с C# местами по круче
primary constructor, flow-sensitive typing, var для полей, функции без классов, более удобные extension методы (ну бомба: адекватные переносы для { и методы с мал. буквы).

Но ты еще Java не пробовал, это как C# 2.0 (особенно учитывая что надо юзать 1.6 или с костылями мятся)
#65 #839242
>>839240
Да, котлин я пробовал, понравился. Вот думаю в ведро вкатиться и сразу на нем писать.
#66 #839246
>>839240
P.S.
> (ну бомба: адекватные переносы для { и методы с мал. буквы)
Дико двачую, бесит паскаль кейс и фигурные скобки на новой строке в шарпе.
#67 #839254
>>839231

> Попробуй Xamarin.Form будешь как дома (C# + XAML).


Я даже не знаю, что вообще есть хуже связки Xamarin + C#. Меня даже от js не так сильно воротит, как от неё.

другой анон
>>839256>>839445
sage #68 #839256
>>839254

> динамико-дрисня


спасибо нам очень важно ваше мнение, оставайтесь на линии
>>839262
#69 #839262
>>839256
Ты жопой читаешь, даун мелкобуквенный? Я js для сравнения привёл.
>>839268>>839270
sage #70 #839268
>>839262

>Ты жопой читаешь, даун мелкобуквенный? Я js для сравнения привёл.


ты червь-пидар, запомни нет ничего хуже JS
#71 #839270
>>839268
>>839262
А зачем вы вообще на js пишете? Что вас сподвигло на это?
>>839279
#72 #839279
>>839270
Да никто на нём не пишет. Сказал же: я его для сравнения привёл.
>>839268
Ты явно хуже.
#73 #839283
>>839268

>Гонит на язык будущего



>Пишет с сажей в тематики



Ясно понятно
>>839284
#74 #839284
>>839283
в тематике

фикс
#75 #839291
>>839240

> адекватные переносы для {


А какая с этим проблема на шарпе?
#76 #839295
Аноны, на каких маках вы кодите? Какой стоит брать?
#77 #839302
>>839071
Null null null дерни себя, пес, за анал.
#78 #839304
>>838910
Сделай стиль для 21 и туда пихни android:colorControlNormal
#79 #839305
>>839295
Не на маках. Мы же не ёбнутые.
#80 #839328
>>839295
>>837254 да и вообще иди почитай тот тред
#81 #839358
>>839295
Я на прошел 13года, нормально себя чувствую. Джунгли на эре 15го, там 4 гига, а не 8, но ему тоже норм если пользоваться девайсом, а не эмулятором.
>>839359>>839360
#82 #839359
>>839358
Прошке*
#83 #839360
>>839358
Блять, ебаная автозамена.
Я на прошке 13года, нормально себя чувствую. Джун на эйре 15го, там 4 гига, а не 8, но ему тоже норм, если пользоваться девайсом, а не эмулятором
>>839364>>839367
#84 #839364
>>839360
У тебя видимо мак недавно, все мои знакомые отключали автозамену в первые месяцы.
>>839446
#85 #839367
>>839360
Главное SSD, 4 гб для mac os мало.
#86 #839432
>>839192
Решил вкатиться, иду по туториалу, пока все нравится больше, чем в увп.
#87 #839445
>>839254
Java+RX - вот оно дно. Благо есть Котлин.
#88 #839446
>>839364
Я с ведра писал.
#89 #839447
>>839445
Что ж вам так от rx печет-то?
>>839448
#90 #839448
>>839447
Ничего не печет. Печет от того, как он вписывается с жабу.
>>839450
#91 #839450
>>839448
И в чем проблема вписывания в джаву? Куча мелких объектов для сборщика?
#92 #839459
>>838598 (OP)
что требуют от джуна на ведре? сколько приложений в портфолио и какой сложности?
>>839508
#93 #839507
>>839445
Ёбнутый?
>>839509
# OP #94 #839508
>>839459
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library, shared preferences, SQLite), знание популярных библиотек типа Retrofit + Glide/Picasso.

Чем больше портфолио — тем лучше. Для начала хватит чего-то типа этого >>838621
>>839515
sage #95 #839509
>>839507
А вот и больной подъехал. Куда же мы без твоих однословных постов.
>>839511
#96 #839511
>>839509
Хорошая аргументация, молодец. Иди пиши AsyncTask'и дальше, тебе некогда в треде сидеть.
#97 #839515
>>839508

> Для начала хватит чего-то типа этого >>838621


Не хватит. Это максимум стажёрское задание.
>>839877
#98 #839877
>>839515
Говно какое-то, а не задание. В чём смысл дрочева на материал десигн? А трёхстрочных анимаций переходов между двумя (!!!) активити, и появления аж трёх элементов на экране? Что вообще они хотят проверить этой околодизайнерской поеботой?

Вангую мухосранскую студию с охуенными требованиями и раздутым ЧСВ.
>>839991
#99 #839883
Есть некоторые объекты классов из VK api. Мне нужно сохранять их в базе. Физически StorIO позволит это сделать.
Как считаете, стоит их напрямую сохранять, как прямые сущности для базы? Или лучше пилить отдельные сущности, которые будут идентичны?
>>839907
#100 #839905
>>839445
Котлин + рх лучше?
Или ты про лямбды на джаве не слышал?
>>840056
#101 #839907
>>839883
Если ты потом будешь использовать их с методами vksdk, или тебе нужны прям все их поля то сохраняй их. Но если тебе потребуется потом только часть инфы, нет смысла хранить их целиком. Тем более свои объекты для абстракции могут быть лучше.
Что за объекты-то?
#102 #839991
>>839877
А вот и ретрограды-говноеды подъехали. Нахуй дизайн, нахуй UX, а потом плачут в треде, что у них полтора скачивания в месяц.

Ты вообще понимаешь, что такое тестовое задание? Ты должен показать, что ты умеешь и можешь. Если ты анимации между двумя объектами сделать не в состоянии, то и более сложные сценарии тебе не по зубам будут.
#103 #840056
>>839905

> ты про лямбды на джаве не слышал


Не, не слышал на 7 жабе. Только костыли. И как будто лямбды спасут это уебище.
>>840061>>840063
#104 #840060
Котлинобоги, как float сконвертировать в массив байтов? И как потом ставить эти байты в нужное место другого массива?
>>840064
#105 #840061
>>840056
Нормальные костыли. То что котлин это костыли на 6 джаве тебя видимо не смущает?
#106 #840063
>>840056
>>840056

>Самый востребованный и широкоприменяемый язык



>Спасет



От чего спасет-то? Альтернатив джаве нет, нормальных альтернатив, а не хипстерского говна, которое сегодня есть, а завтра все забыли о нем.
>>840079
#107 #840064
>>840060

>float -> byte[]


ByteBuffer.allocate(4).putFloat(value).array();

>insert byte[] into byte[]


void insert(byte[] where, byte[] what, int pos) {
____System.arraycopy(what, 0, where, pos, what.length);
}
>>840078>>840119
#108 #840078
>>840064
Пиздец.
>>840086
#109 #840079
>>840063
Уж не из-за этого ли гениального языка ведро хоронит сам Гугл?
#110 #840081
>>840079
как хоронит?
>>840082
#111 #840082
>>840081
Ты в танке? Седьмое ведро - последнее.
#112 #840083
>>840079

Оставайтесь на линии, свежие новости из манямирка
>>840085
#113 #840085
>>840083
Такой манямирок, что уже сами Гугл сливают новости о новой ОС? Ради фана пилят там что-то?
#114 #840086
>>840082
Ссылочку пожалста.давно пора эту парашу закрыть
>>840078
А хули ты хотел, принцесса? Можно первую чатсь и по другому, но не будет учтен порядок байтов и вся хуйня. А второй способ лучший если ты хочешь скопировать откуда-нибудь куда-нибудь.
>>840097
#115 #840087
>>840082
даже не знаю, стоит ли просить пруф
>>840097
#116 #840094
Хули с тредом, последние посты недоступны.
#117 #840097
>>840086
>>840087
Вбейте в гугл "fuchsia google" что ли. Миллион статей про новую ОС от гугла.
#118 #840101
>>840097
Она не позиционируется как замена ведру.
>>840103
#119 #840102
>>840097
Как же вы заебали, долбоебы.
#120 #840103
>>840101
Пруфы?
>>840106>>840107
#121 #840105
>>840097

И как это сигнализирует о смерти андроида? Там вообще еще ничего не ясно, даже если прямо сейчас Гугл заявит о новой оси, еще сто лет пройдет пока все переедут с андроида на новую ось и вообще не факт, что это ось для смартфонов.
#122 #840106
>>840103
>>840103
Пруфы обратного
#123 #840107
>>840103
Сначала принеси пруфы что она позиционируется как замена, в статьях сказано что она просто есть.
#124 #840108
>>840079
Ведро на C написано, даун.
>>840110>>840111
#125 #840109
Гугл занял 80% рынка ведром и сейчас просто возьмёт и откажется от него? Вы ебнутые?
#126 #840110
>>840108
А мы кодим на еще более уёбищном говне. Гугл вообще думает что-нибудь выкатить против Свифта?
#127 #840111
>>840108
Ядро линукса на С, а проблемы в структуре приложений с бесконечным количеством колбеков и хуков.
>>840123
#128 #840112
>>840110
Нахуя? Ты можешь писать на джаве, на котлине, на свифте, в чем проблема?
>>840119
#129 #840115
>>840110
Чем джава плоха?
#130 #840118
>>840110

Свифт вообще говно без задач под анальным контролем педиков, а на базе jvm ты можешь писать на чем угодно, если тебе не нравится джава, хоть на скале, хоть на кложуре, а под гейось только свифт
#131 #840119
>>840112

> в чем проблема?


В JVM и всем, что она тянет за собой. Вот такая вот хуйня, например - >>840064
В 2016 году должно быть стыдно за такое.
>>840121>>840124
#132 #840121
>>840119
Плюсов от jvm больше мамкин максималист.
>>840125>>840132
#133 #840123
>>840111
https://github.com/android
Сравни кол-во хуиток на си и плюсах с явовыми. А лучше ещё выкинь оттуда все встроенные гуевые приложульки. Спойлер: соотношение 50:1 не в пользу явы.
#134 #840124
>>840119
Тебе не хватает инструментов для байтоебства в джаве? Ну извини это не ее задачи.
>>840142
#135 #840125
>>840121
Ни одного, кроме кроссплатформенности. Даже таскать JRE за собой - уже говно хуже дотнета.
>>840131>>840133
#136 #840131
>>840125
У нас тут любитель сигфолтов подкатил. Иди дрочи NativeActivity.
#137 #840132
>>840121
И поэтому разработчики борятся с наследием легасиговна с самой первой версии. ПОэтому появились dalvik и art. Блять, знай разработчики андроида что их купит гугл и проблем со спонсированием не будет - сделали бы собственную вм без родовых травм.
>>840134
#138 #840133
>>840125
А свифт охуенный да?
>>840135
#139 #840134
>>840132

>сделали бы


сразу*
#140 #840135
>>840133
Сейчас не язык обсуждали. Но в сравнении с явой даже говно собаки хорошее и не пахнет.
>>840136
#141 #840136
>>840135
А аргументы будут?
>>840141>>840329
#142 #840141
>>840136
Ну что тебе именно написать? Задавай наводящие вопросы, лень расписывать все сотый раз.

Наброшу - ява многословное говнишко, тянущее кучу кривых абстракций, с бесполезной системой типов и синтаксисом для любителей лапши на 4 экрана в ширину. Про уёбищность реализации дженериков и пр фишки из "новинок" писать смысла нет - сюда их еще не завезли.
>>840143>>840148
#143 #840142
>>840124
Мне не хватает инструментов для комфортного кодинга. Или это тоже не её задачи? Если исключить еблю с памятью, то кодинг на жабе и крестах - дрочево одного уровня. Причем в C++14 уже даже комфортнее будет.
>>840146>>840153
#144 #840143
>>840141
Ладно минусы есть базара нет, какие альтернативы? Си шарп на голову лучше или кресты? Что сейчас есть, чем можно заменить джаву и , что не будет иметь всех этих недостатков?
>>840153
#145 #840146
>>840142

>кодинг на жабе и крестах - дрочево одного уровня



Наркоман или дальше хелоувордов не заходил?
>>840150>>840153
#146 #840148
>>840141
Что значит кривые абстракции и бесполезная система типов? Как ты предлагаешь сократить синтаксис? Что не так с дженереками? Такое ощущение, что у тебя какие-то личные комплексы, которые ты проецируешь на язык.
>>840149>>840158
#147 #840149
>>840148

> Как ты предлагаешь сократить синтаксис?


Ебучие свойства.
#148 #840150
>>840146
Как раз таки заходил. Когда пришел на жабу7, подумал не попал ли в прошлое лет так на 10. Простейшие задачи из крестов выполняются в столько же или даже больше ебли.
>>840152
#149 #840152
>>840150
Хуй знает, как ты программируешь, что у тебя джава = кресты по ебле. Вообще-то это не так.
#150 #840153
>>840146
Он тебе вроде как ясно написал >>840142

>Если исключить еблю с памятью


То да, кресты уже давно обогнали яву по фичастости синтаксиса еще в 11 стандарте что не отменяет того факта, что наговнокодить на них легче, не отрицаю.
>>840143
Любой современный жвм язык инб4: КОКОКО ХИПСТАПАРАША, хотя в таком случае уткнёмся в изначальную проблему что по прежнему тащим с собой убогую жвм, а на поприще нативных языков - ты сам знаешь что есть.
>>840157
#151 #840157
>>840153
Ну то есть альтернатив (среди не нативных языков) нет, чтд
>>840169
#152 #840158
>>840148

> Как ты предлагаешь сократить синтаксис?


В жабе: Кококо кудах = new Кококо();
В котлине: кудах = Кококо()
#153 #840160
>>840158
Зато в джаве сразу видно тип объекта. Это все вкусовщина на самом деле, реальных проблем у языка нет, таких, что вот пиздец нужен новый, это все нытье.
>>840169>>840187
#154 #840164
>>840158
Точнее val кудах = Кококо()
#155 #840169
>>840160
Его тип видно в любом случае, а так же она позволяет много где сокращать код кроме объявления переменных (хотя бы при итерации по коллекции и тд).
Добавили вывод типов в шарпе - все писались от радости.
Добавили вывод типов в плюсах - все писались от радости.
Хотят добавить его в яве - явиндусы начали пронзитель визжать "НЕ УБИВАИТИ МАЙУ УТИНУЙУ ТИПЕЗАЦЕЮ!!!". Я ахуеваю - насколько же люди готовы жрать говно. Тут вообще стоило пошутить о том, нахуя вам знать этот самый тим - жвм всё равно потрет))) все це Object)))))
>>840157
Хуй знает как у тебя голова вообще работает.
#156 #840179
>>840169

И зачем нужен вывод типов?
#157 #840180
>>840158
Val и var в девятой джаве появятся
#158 #840182
>>840169

>Добавили вывод типов в шарпе - все жрали говно и причмокивали



>Добавили вывод типов в плюсах - все жрали говно и причмокивали



>Хотят добавить его в яве - яваиндусы не захотели жрать говно



Ну хз
#159 #840186
>>840169
Вывод типов появится в 9
>>840225
#160 #840187
>>840160

>Зато в джаве сразу видно тип объекта


Всегда можно сделать: val кудах: Кококо = Кококо()
#161 #840189
>>840182

> вывод типов


> говно


Лолблять
#162 #840192
>>840182
То есть тебе норм писать например:
Collection<Pair<Bitmap, BitmapFactory.Options>>
>>840195>>840196
#163 #840195
>>840192
Я вообще на 5 уроке джавараша
>>840198
#164 #840196
>>840192
Точнее Collection<Pair<Bitmap, BitmapFactory.Options>> bitmaps = new Collection<Pair<Bitmap, BitmapFactory.Options>>();
#165 #840197
>>840182
Взял наугад пару имен классов из спринга:

>AbstractSingletonProxyFactoryBean abstractSingletonProxyFactoryBean1 = AbstractSingletonProxyFactoryBean<AbstractServiceLoaderBasedFactoryBean>( abstractServiceLoaderBasedFactoryBean1);



Ну да. Нинужна. инб4: выйдет ява9 и ты будешь тоже причмокивать))

Алсо, я ещё порофлю если в 9-ке не введут дедукцию как в плюсах и такой код получится уменьшить только на 20 буковок))).
>>840200
#166 #840198
>>840195
Ну так хуле кукарекаешь говно или не говно var/val?
#167 #840200
>>840197
Ладно это пиздец.
#168 #840225
>>840186
Ну-ка быстро кинул пруф на JEP или пиздабол.

В java 9 давно уже фичафриз произошел, ничего, кроме того что там уже сделано, не добавится.
>>840242>>840266
#169 #840242
>>840225
Кинул тебе за щеку. Проверяй.
#171 #840274
>>840266
В 9 не войдет, но в 10 можно ждать
http://openjdk.java.net/projects/jdk9/
#172 #840290
>>840082
Господи, какие дауны в треде.
>>840339
#173 #840317
ф
ф
*
#174 #840326
>>839231

Попробовал тебе за щеку, проверяй
>>840331
#175 #840327
>>839295

Кодил у тебя за щекой, проверяй
>>840331
#176 #840329
>>840136

аргументировал тебе за щеку, проверяй
>>840331
#178 #840339
>>840290
А вот и еще одна манька.
>>840341
#179 #840341
>>840339
Да-да, джава говно, гугл прекращает разработку Андроида. Съеби уже из треда "мёртвой платформы".
#180 #840407
Аноны, мне нужно сделать элемент списка, у которого можно будет вставить иконку рядом с границей так, чтобы граница была выпуклой.
Это можно делать с помощью задания бордера? Или только пилить кастомную вьюху?
>>840469
#181 #840441
Кто-нибудь упоролся дополненной реальностью? Что используете в разработке?
#182 #840469
>>840407
Нарисуй схематично. Если я правильно понял, можно просто поверх итем слева наложить drawable с впуклой границей, а картинку поверх него.
#183 #840593
аноны, есть тут кто кодит под линексом?
в чем преймущества и какой дистрибутив юзаете?
>>840599>>841420
#184 #840599
>>840593
Manjaro. Полёт нормальный
#185 #840621
Пытаюсь сделать реконнект при разрыве соединения на стороне сервера (Connection reset - выключаю и включаю сервер), однако после реконнекта при попытке чтения из inputStream всегда получаю -1. При разрыве соединения сокет закрываю socket.close(), при подключении создаю через new Socket(...); Пробовал так же закрывать input и output стримы, делать флаши, ресеты (кидает эксепшон) - нихуя не помогает. Не могу понять как это пофиксить.
#186 #840709
1. Хочу угореть по нормальному структурированию кода, типа MVP, clean architecture, или что там самое модное сейчас, но не могу найти нормальных гайдов. Везде используется куча параши, которой я не знаю, даггеры хуяггеры, реактивные джавы итд.
Хотел бы попробовать сделать вменяемую архитектуру без всяких библиотек и костылей, чтобы знать хотя бы какие проблемы эти библиотеки решают и как без них обходиться. Тем более что приложения у меня очень простые.
Просмотрел testing guide от google codelabs, но там уже всё за тебя написано и объяняется мало, я так нихуя и не понял как организовать уровень Model.
Есть ли ещё какие-то годные гайды и стоит ли вообще с этим заморачиваться?
Один хуй написал на форуме, что не нужно слишком выёбываться библиотеками когда делаешь проекты для показа работодателям, и лучше всё писать на голой джаве + SDK хотя бы в одном проекте, чтобы было видно что ты владеешь базой.
2. Есть ли места где можно скинуть свой проект чтобы его покритиковали другие разработчики?
#android-dev похож больше на чат с вопросами, в /r/androiddev ни разу не видел чтобы спрашивали такое, да и вообще всратое место, codereview на stackexchange для объемных проектов с кучей файлов не подходит, там надо код сразу постить в тело поста.
#187 #840743
>>840709
https://github.com/googlesamples/android-architecture

там куча вариантов от plain MVP и Clean Architecture до Rx и прочего
#188 #840744
>>840709
Паттерны с голой SDK почти не совместимы.
У тебя Android API использует God Object - Context. Его нужно как-то внедрять в различные части архитектуры. И это только начало проблем.

Можешь сделать какой-нибудь MVP, но только ради разделения логики.

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


Посмотри по вакансиям, в половине случаев будут нужны сторонние либы. На собесе можно наверное и на словах пояснить роль некоторых компонентов SDK, их преимущества и недостатки
#189 #841052
>>838598 (OP)
Анончики мне тут письмо счастья от гугля пришло - has been removed from Google Play because it violates our device and network abuse policy and section 4.4 of the Developer Distribution Agreement

И я нихуя не могу понять в чем тут дело т.к. это простая покупалка за рекламу вконтактовских голосов. Ну не делает оно ничего из расстрельного списка гугла. В их техподдержку тикет уже отправил но может быть тут кто-то с подобной хуетой сталкивался?
>>841062
#190 #841062
>>841052
У меня было приложение, которое не проигрывало музыку из вк напрямую на смартфоне - забанили за мимикрию под оф. приложение.
>>841070
#191 #841070
>>841062
Но я то ни по до что не мимикрирую. Ни одного логотипа, вообще ничего
>>841071
#192 #841071
>>841070
Я вижу 2 проблемы
1) Ты накручиваешь рекламу, заставляя пользователей просматривать рекламу
2) Ты "продаешь" товары других магазинов
>>841074
#193 #841074
>>841071
Нет, на оба варианта. Реклама у меня одна - от тапджоя. Это такая сеть мотивированного трафика. Грубо говоря пользователи имеют офферволл с задачами типа просмотра видео и получают за их выполнения фантики. На эти фантики они могут заиметь себе голосов. Там нечего накручивать и я ничего не продаю тащемта. Плюс подобных приложений(с голосами и не только) в маркете хуева гора, некоторые очень старые

Да и мотивация в этом самом пункте соглашения тоже не связана с контентом или продажами:
4.4 Запрещенные действия. Вы обязуетесь не совершать в Магазине действий (включая разработку и распространение Продуктов), которые нарушают или прерывают работу устройств, серверов, сетей и других объектов и сервисов третьих сторон, включая пользователей Android, компанию Google и операторов мобильной связи, а также наносят им другой ущерб. Запрещается использовать информацию о покупателях, полученную в Магазине, для продажи или распространения Продуктов вне Магазина.
>>841126
#194 #841093
Как-бы мне высрать такую игру, чтоб она и на ведре, и в браузере работала? Только юнити?
#195 #841102
>>841093
Алсо меня возьмут каким-нибудь джуном в гугл после этого?
>>841105
#196 #841103
>>841093
Есть еще libGdx, но вообще в /gd.
>>841124>>841128
#197 #841105
>>841102
Совсем не факт. Игры и ынтерпрайз - накрестлежащие вещи.
>>841106
#198 #841106
>>841105
А бля какой интерпрайз, перепутал треды. Но вчера вновь вряд ли.
>>841124
#199 #841124
>>841103
Точно, спасибо, пару лет назад немного юзал её.
>>841106
Ну лишним все равно не будет, надеюсь.
#200 #841126
>>841074

>некоторые очень старые


Это не аргумент, мое личное приложение пролежало 2 года, а дропнули его после того как я инфу о нем обновил.

> Продажа офферов


Не знаю как др. приложения попали в GP, но моя компания занималась перепродажей офферов профессионально.
Для этого мы просто сделали мобильный сайт без приложения, что бы сразу на Android/iOS.

Налили рекламу, развивали пол год и выкинул это нахуй, тк денег приносит меньше чем затраты на рекламу.
>>841165
#201 #841128
>>841103

> libgdx


К сожалению, он HTML5 поддерживает только для Java.
Kotlin, при том что он сам может конвертироваться в JS, юзать пока нельзя.
>>841129>>841140
#202 #841129
>>841128
А то там с kotlin?
>>841131>>841139
#203 #841131
>>841129
*что
#204 #841139
>>841129

>А то там с kotlin?


Да норм все, под android/ios/destop можешь уже сейчас писать на libGDX + Kotlin
Но если хочешь еще на HTML5, то только Java.

Компилятор Kotlin(1.0.3)->JS уже рабочий, сейчас добавляют поддержку Kotlin 1.1
Так же работают над компилятором Kotlin->LLVM, возможно через год можно уже будет писать нативные приложения без JVM.
>>841142
#205 #841140
>>841128
GWT всеравно говно.
#206 #841142
>>841139
Я чего-то не понимаю, если есть компиляция в js, то почему бы не пихнуть полученный js на сайт?
>>841144
#207 #841144
>>841142
Потому что есть еще библиотеки фреймворка, которые должны быть написаны под каждую конкретную реализацию (бэкенд).

Никто не хочет сам писать всю нативную часть (WebGL, HTML5 Canvas, IO, события, асинхронность).
>>841150
#208 #841150
>>841144
Спасибо, анончик, откуда ты все вообще все это знаете.
#209 #841165
>>841126
Ну я-то без рекламы и на коленке, ничего не скажу. Просто приятная прибавка к зп, надеюсь не была
#210 #841187
Сап, котаны. Сабж - есть таймер обратного отсчета, который я благополучно прикрутил к Observable.interval в презентере. Ну и все классно работает, до того как появляется б-гомерзкий lifecycle фрагментов. Проблема заключается в том, что если в onPause отписываться от событий, то после onResume (пустого) таймер просто замирает на месте отписки ( КО ). Но ересь начинается если переподписаться - таймер начинает люто-бешено колбасить, а именно, идет обновление и от непонятно откуда возникшего нового interval-а, и от старого, что выглядит вообще не айс. Как бы мне прикрутить нормально этот механизм продолжения обратного отсчета после onResume фрагмента ?
>>841194>>841309
#211 #841194
>>841187
для начала избавься от rxjava и mvp
>>841218
#212 #841218
>>841194
Мелкобуквы. Мелкобуквы невер чейндж.
>>841224
#213 #841224
>>841218
двачую
#214 #841229
Аноны, есть одна апка:
Пиздит инфу с бд и отображает ее в виде "юзер - длина члена - место в рейтинге "
Как её правильно и красиво сделать, какие вью использовать? Отображать будет как часть списка, так и одного юзера.
>>841235>>841311
#215 #841235
>>841229
RecyclerView\ListView
>>841301
#216 #841301
>>841235
ListView в 2016, мда
#217 #841309
>>841187
Пофиксил, добавил булевый флаг isPaused и filter на !isPaused в chain
#218 #841311
>>841229
RecyclerView ?) В к-ве layout-а для viewHolder-а запили LinearLayout orientation=horizontal, поставь весы и будет тебе счастье
>>841372
#219 #841372
>>841311

> 2016


> LinearLayout

>>841652
#220 #841420
>>840593
Последняя x64Ubuntu. Потому что мой нэтбук 7-летней давности обкакается тянуть студию на маздае. он и с убунтой то на бреющем полёте, хуево быть днищебродом
#221 #841425
Аноны, есть запрос, который связан с денежным переводом, т.е. надо его не проебать. Сейчас выполняю его в интент сервисе, как мне сохранить его результат, если приложение свернулось во время запроса и андроид сразу же его убил? Юзаю green eventbus, если что
>>841435
#222 #841435
>>841425
Сервис. При его завершении сохраняешь всё в бд (если твой запрос ещё не выполнился)
>>841440
#223 #841440
>>841435
так как мне понять, что запрос заново не надо отправлять, при открытие активити?
>>841442
#224 #841442
>>841440
Если в бд пусто, то не надо
>>841445
#225 #841445
>>841442
То есть, перед началом такого запроса надо чистить эту таблицу? А сервис же должен быть с android:process=":remote", да?
#226 #841448
>>840709

> #android-dev похож больше на чат с вопросами


Это что и где? Slack какой-то или что? Доставьте ссылку
>>842877
#227 #841562
Есть тестовые задания с собесов? Залейте плиз
>>841578>>841581
#228 #841578
>>841562
Вывод списка ёбырей твоей мамаши-шлюхи. При клике на элемент списка должна выводится информация о последней ебле, список поз, количество проглоченной спермы и список твоих братьев и сестер.
>>841582
#229 #841581
>>841562
во втором посте есть.
а так ничего сверхсложного просить не будут. приложение написать на самом собеседовании вряд ли заставят делать.
по дефолту теор опрос(ООП, джава, лайфциклы, треды и тд) и еще могут попросить sql запросы пописать
>>841659
#230 #841582
>>841578
лол, что орнул)
#231 #841652
>>841372
ээ, а в чем проблема ? Пока они не становятся вложенными, все работает эффективно...
#232 #841659
>>841581
Спасибо
#233 #841705
>>838621
Аноны, накидайте еще тестовых заданий, желательно потруднее чем это.
>>841736
#234 #841736
>>841705
Скидывай свою реализацию в тред, получишь ещё.
>>841856
#235 #841856
>>841736
Ок, но это будет недели через 2 в лучшем случае. Кстати за какое время предполагается реализация такого рода заданий?
>>841890
#236 #841890
>>841856
Обычно на подобные задания недели две (реже - три) и дают. Не потому, что две недели действительно необходимы для такого задания, но чтобы у кандидата было время всё сделать, на случай, если он ещё работает в другом месте.
#237 #841943
Нужен очень быстрый ликбез по Xamarin.Android, ибо в шараге задали написать простую форму проверки авторизации за пару дней на этой платформе, а времени с 0 учить нет (Знаю только основы C#, платформу не знаю вообще). Что посоветуете?
>>841948
#238 #841946
Аноны, как мне быть, у меня есть презентер, в нем выполняю запрос, потом отдаю данные вью, но при перевороте опять выполняется запрос. Норм ли сохранять данные в презентере (он у меня находится в ретеин фрагменте) и если данные не нулл, то отдавать их, не делая запрос?
>>842438>>842466
#239 #841948
>>841943
Xamarin Forms - если знаешь XAML то наговнокодить приложуху под Android (и сразу iOS) сможешь очень быстро.
А теперь брысь с такими тупыми вопросами.
#240 #842087
Аноны как понять архитектуру андройда? А вообще для начала как научиться видеть архитектуру, есстественно на интуитивном уровне кое-как понимаю что такое, но все же не покидает чувство что чего то упускаю. Какие есть годные книги по архитектуре(необязательно андроид релейтед)?

Не ньюфаг-вкатывальщик, но понятие архитектуры в голове весьма размытое.
#241 #842097
Нужно к мессенджеру прикрутить отправку голосовых сообщений(но не через диктофон, чтобы они прослушивались плеером), а как в телеграм(записывается и прослушивается внутри приложения).
Как грамотнее это сделать? Пока думаю записывать дорожку, конвертировать ее в массив байтов, отправлять массив, на получателе конвертировать массив обратно.
Хуевая идея или сойдёт?
>>842099>>842147
#242 #842099
>>842097
Хуевая.
#243 #842147
>>842097
Сервер есть? Почему бы не записывать туда mp3 файл. И при получении самому поигрывать MediaPlayer'ом или AudioTrack'ом? Первый даже по урлу умеет играть.
>>842188
#244 #842153
>>838655

> отсутствие крашей


Вово. Начнут тестить на каком-нибудь леново, а там пиздец.
>>842169
#245 #842169
>>838655
>>842153
Отсутствие крэшей - навязанный западом стереотип.
>>842170
#246 #842170
>>842169
Деды не умели бороться с крэшами, но это не помешало им дойти до Берлина.
#247 #842181
Анон, где можно спиздить готовые темы для апки и стили для вьювов?
>>842187
#248 #842187
>>842181
Из support library. Да и на сайте гуглов есть палитра.
>>842219
#249 #842188
>>842147
Есть. Попробую и так
#250 #842219
>>842187

>на сайте гуглов


Доставь ссылку.
>>842300
#251 #842300
>>842219

доставил тебе за щеку, проверяй
#252 #842304
>>841093
unreal engine
#253 #842305
>>838598 (OP)
Блядь, написал простое приложение, скачал на телефон, установилось без проблем, но блядь открыть его тупо нельзя, после установки только "готово", а открыть нельзя, лол. Где я проебался?
>>842308
#254 #842308
>>842305
Алсо, шаблон для приложение выбрал пустой, может в этом проблема?
#255 #842313
Как стандартными средствами дергать коллбеками из забиндинного сервиса внутри активити/фрагмента и чтобы в ui thread они вызывались?
Правильно я понимаю, что это будет более легковесно, чем broadcast слать, где постоянно память выделяется?
>>842484
#256 #842438
>>841946
Бамп, гуру архитектуры, где вы?
#257 #842466
>>841946

>Норм ли сохранять данные в презентере (он у меня находится в ретеин фрагменте) и если данные не нулл, то отдавать их, не делая запрос?


Если тебе нормально делать "Fat Ugly Presenter", то все OK.
При этом ты конечно нарушаешь Single Responsibility Principle

По хорошему презентер должен быть тонкой прослоечкой между View и Model
>>842479>>842487
#258 #842479
>>842466
А хранить во вью ViewState и если данные загрузились складывать их во в ViewState, лучше?
>>842495
#259 #842484
>>842313
Если у тебя обычный сервис то он и так в юи треде дергаться будет. Также можно использовать Messenger.
#260 #842487
>>842466
Тонкой прослоечкой? А где тогда вся бизнес-логика по-твоему будет?
>>842490>>842495
#261 #842490
>>842487
в синглтон менеджерах ?
>>842498
#262 #842495
>>842479
Отвязывай бизнес логику от Android лайф-сайкл-костылей.
Разрушается твой презентер вместе с активити - это нормально.
Делай кэширование данных по времени на уровне модели.

>>842487

>А где тогда вся бизнес-логика по-твоему будет?


В модели конечно и тесты конечно должны быть на нее.
Лучше вообще делать чистые JavaSE модели и быстро тестировать их на десктопе.

Ознакомься:
https://ru.wikipedia.org/wiki/Model-View-Presenter
https://youtu.be/Nsjsiz2A9mg
>>842533>>842553
#263 #842498
>>842490
Нахрен тебе синглетоны, у тебя же база данных есть - это единственный синглетон который нужен.
#264 #842525
>>838598 (OP)
Анончики, у меня есть две активити, в этих активити фрагменты, как мне сделать переход с shared elements из одной активити в другую, если эти shared elements находятся во фрагментах в разных активити?
>>842539
#265 #842533
>>842495
Окей, допустим у меня есть презентер CityPresenter, должен показывать имя города и фотку.
У презентера срабатывает допустим onShow()
У меня есть cityId и myView, значит я стучусь в базу прошу самую свежую инфу про данный город, получаю:
а) ничего, показываем прогрессбар с заглушкой, запускаем запрос на получение города
б) что-то протухшее, показываем с помощью myView.setCity(city) myView - платформо-независимый интерфейс для вьюхи, запускаем запрос на получение города
в) не протухшие минуту назад получили данные, показываем как ив предыдущем пункте
Во-всех пунктах подписываемся на оповещения об изменения города, после получения которых отображаем новую инфу.

Все верно?
>>842554>>842578
#267 #842553
>>842495

> В модели конечно и тесты конечно должны быть на нее.


> Лучше вообще делать чистые JavaSE модели и быстро тестировать их на десктопе.



Как ты чистые JavaSE модели на андроиде сделаешь?

Это презентеры должны быть свободными от ведройдовских зависимостей и тестироваться на JVM.

Думаешь, ссылаясь на дядю Боба, ты выглядишь умнее? А вот хуй, ты знатно обосрался.
>>842566
#268 #842554
>>842533
Да вроде норм.
Можешь еще через какой-нибудь okhttp юзать встроенное HTTP кэширование.
И постарайся не облажаться с утечками активити.
>>842578
#269 #842566
>>842553

>Как ты чистые JavaSE модели на андроиде сделаешь?


1. Создаешь отдельный "Module" в AS или IDEA,
2. выбираешь Gradle/Kotlin
3. В Android build.gralde добавляешь в dependencies
compile project(':core')

>Это презентеры должны... тестироваться на JVM.


Если презентеры тонки, то в принципе там и тестировать то нечего

>Думаешь, ссылаясь на дядю Боба, ты выглядишь умнее?


А ты думаешь, что ни на кого не сослался и кто-то должен верить твоему пиздоболию?
Для меня Боб и его архитектура важнее чем Java или Android-костыли,
потому что его подходы не зависят от языка спокойно юзаю их с Kotlin.
>>842569>>842574
#270 #842569
>>842566
Такая-тт блять большая разница между жабой и котлом.
>>842572
#271 #842572
>>842569
Для некоторые здесь, ну просто НЕ преодолимая :3
sage #272 #842574
>>842566
Понятно. Иди нахуй.
#273 #842578
>>842533
>>842554
Но ведь при перевороте во врем выполнения запроса, запрос начнется заново, это же неправильно
#274 #842580
>>842578
Няш, для это го и придумали кэши (HTTP или на прикладном уровне)
>>842583
#275 #842581
>>842578
Для меня Боб и его архитектура важнее чем такие мелочи.
#276 #842583
>>842580
Какой нахуй кэш, когда у тебя запрос еще не выполнился? Ты вообще не понимаешь, что несешь?
>>842586
#277 #842586
>>842583

> Открывает окно


> Начинает как бешеный врящать окно


Дядя, ты нормальный (не отвечая, я уже понял что нет)?

В любом случае, после пятого твоего безумного поворота в дело уже пойдет кэш
>>842590
#278 #842590
>>842586
А запросы на сервер так же отправлять будешь? "Похуй, что запрос уже идёт, отправим еще раз?"
>>842602
#279 #842593
>>842578
В случае с Rx можно хранить в синглтоне/ретеней фрагменте обзервеблы с кешем, тогда можно будет подписаться на уже идущий запрос. Или главным подписчиком должна быть бд, тогда можно хранить начатые, но не законченные запросы в key-value хранилище или таблице, или даже в аллахе, и в презентере смотреть идет ли интересующий нас запрос, в таком случае не будет нужды совершать новый, а нужно просто подождать пока нам придет нотификация от бд.
>>842599>>842610
#280 #842599
>>842593

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


Есть какой-нибудь пример кода, как это организовано?
>>842606
#281 #842602
>>842590
Мы тут говорим про идемпотентные запросы (коих 90%), которые отлично кэшируются и на стороне сервера.
Но если ты такой любитель вращать телефон, то сделай отдельный отнопоточный пул для web запросов.
239 Кб, 800x600
#282 #842603
Аноны хочу сделать дефолтное погодное приложение с вот таким дизайном, но где мне искать такие охуенные фотки погоды?
#284 #842610
>>842593
а вот как нормально хранить начатые запросы в бд, какой ключ должен быть? Использовать время начала запроса? Можешь поподробнее про это, пожалуйста?
>>842623
#285 #842623
>>842610
Да любой, блять, главное чтоб уникальный, и о нём знали твои презентеры.

Смотри:
1) Пилишь синглтон, где лежит мапа с обсёрваблами и их Id.
2) Презентеры знаю айди обсёрваблов, и как-нибудь смотрят на их состяние.

Правда, данный велосипед был реализован гуглом 3 года назад. Называется Loader.
Так что RX-дауны таки соснули.
>>842644
#286 #842629
Если я пишу приложение к соцсети, использую их цвета в дизайне и иконках - меня могут забанить за попытку косить по официальный клиент?
>>842632>>842653
#287 #842632
>>842629

>их


цвета дизайна соцсети, разумеется
#288 #842644
>>842623
А потому Google сам завелосипедил RX для своего Google.Music
и потом заопенсорил его на github (лень ссылку искать).

И была так только одна issue "нахуй он нужен если есть RxJava?"
#289 #842653
>>842629
Забанят обязательно.
#290 #842673
Котаны, подскажите как быть: есть класс - прослойка для обмена данными с Bluetooth Low Energy девайсами.
Суть проста: вызвал метод bt.readChar(device, callback(){)) и получил вызов метода коллбека - onComplete и onError.
Чтение может выполняться долго, пользователь закроет к хуям к этому времени активити, потом обратно развернет - и не поймет что происходит - ведь мы и коллбек проебали и состояние интерфейса (читаются данные, ждите бля)
Собсна, как быть с этим? Как обычно такие вещи делают?
>>842678>>842683
#291 #842678
>>842673

>Как обычно такие вещи делают?


На Android - обычно кучей костылей и хранение состояния в каком-нибудь permanent storage.
#292 #842683
>>842673
Если так подумать - то это пиздец задача.
Нужно:
1) Где-то держать коллбеки
2) Где-то хранить состояние
Единственный вариант - это перенести коллбеки в сервис, где хранить состояние и модифицировать его через эти коллбеки.
В UI синхронизировать состояние и следить за его изменением.
Т.е. получается нужна еще одна прослойка между BT API и собственно UI.
#293 #842827
Почему на Android 6 чтобы заюзать Bluetooth надо включить "передача геоданных".
Индусы ебанулись?
>>842845
#294 #842845
>>842827
Потому же как и для получения MAC адреса.

Это теперь приватные данные пользователя (его идентификация),
а отдельные пермишены для bluetooth/mac-address не стали плодить.
#295 #842877
#296 #842882
Котлинфаг, у тебя норм все после последнего обновления билд тулзов? А то у меня нихуя не компилится опять, хотя раньше компилилось.
В основном пишет ошибки импорта, их там тысячи.
>>842884>>842922
#297 #842884
>>842882

> билд


Просто тулзов 25.2.2 и платформ тулзов 24.0.3.
#298 #842922
>>842882

> у тебя норм все после последнего обновления билд тулзов?


Во-первых, спасибо что напомнил обновится.

Во-вторых, сейчас обновил build.gradle и перебилдел - все норм.
Да в котлин slack никаких новостей, что у всех все сломалось.
>>842935>>842937
#299 #842935
>>842922

> Error:(3, 12) Unresolved reference: json


> Error:(4, 8) Unresolved reference: java


> Error:(7, 45) Unresolved reference: HashMap


> Error:(10, 25) Unresolved reference: JSONObject



И так со всеми классами андроид сдк.
>>842936>>842940
#300 #842936
>>842935
А какая у тебя версия плагина стоит (я кстати в чистой IDEA сижу) и что прописано в ext.kotlin_version?

Можешь кстати задать вопрос сюда:
https://discuss.kotlinlang.org
http://kotlinlang.slack.com/(инвайт тут http://kotlinslackin.herokuapp.com/)
>>842938
#301 #842937
>>842922
А версия студии у тебя какая? 2.2-rc2?
>>842940>>842958
#302 #842938
>>842936
Версия котлина 1.0.3
Плагин: 1.0.3-release-Studio2.2-13
>>842940
#303 #842940
>>842938
>>842937
>>842935
Починил. Он с android gradle plugin 2.1.3 в студии 2.2 не собирается, при этом java проекты с этой версией в этой студии нормально собираются.
>>842941
#304 #842941
>>842940
Блять. Жму после gradle sync "build apk" - билдится, появляется апк. Жму make project или debug selected configuration- ошибки. В прошлый раз при make project ошибок хотя бы не было.
#305 #842958
>>842937

>2.2-rc2?


Зачем?
>>843017>>843044
#306 #843017
>>842958
Модно-молодежно.
>>843056
#307 #843044
>>842958
Очевидно ради плюшек версии 2.2
>>843056>>843067
#308 #843056
>>843044 >>843017
Ну тогда бессмысленно спрашивать почему что-то не работает.
>>843091
#309 #843067
>>843044
А че там?
>>843091
#310 #843087
>>838630
Взяли на стажировку?
#311 #843091
>>843056
Это release candidat как бы.
>>843067
Блядский скроллинг сколвью в дизайнере и встроенный лэйаут испектор, теперь ту отдельную ебалу запускать не надо.
>>843101
#312 #843101
>>843091

>встроенный лэйаут испектор, теперь ту отдельную ебалу запускать не надо.


Это тот который меряет производительность? Тогда ваще ништяк.
#313 #843194
Ананасы, пожалуйста, помогите. Нужно в приложение добавить отправку файла по кнопке (один файл и он уже существует), проблема в том что оно работает на ебанутом протоколе и в коде нет ни 1 комментария, разбирать этот xmpp времени нет вообще(релиз горит). Что нужно сделать: приложение прикрепляет файл через интент к файловому менеджеру, потом интент сует в ArrayList<Uri> и уже как-то отправляет это всё. Но, файл, который нужно отправить мне должен доставаться сам, без файлового менеджера и интента(file file = new file(path)), и я не могу понять как мне мой file скормить коду отправки сообщения с файлом(выбранным интентом через файловый менеджер). Uri.fromFile(file) не работает.
Сам код мессендежра
https://github.com/siacs/Conversations
Методы отправки сообщений лежат в классах ConversationFragment и ConversationActivity по ключу CHOOSE_FILE.
Помогите, у кого найдется полчаса для стажора. Спасибо
#314 #843218
>>843194
пиздец ты ебанутый, ты мог хотябы нерабочий свой код куда-то отдельно залить? какой нормальный человек будет разбираться в вашем говне из 3к строк? темболее за нихуя. охуеть блять
>>843269
#315 #843269
>>843218
Это не мой код, это исходники на основе которых мы делаем и я в душе не ебу что именно у меня не работает. Код не читабелен. Может кому-то еще не повезло с этим работать
>>843278>>843417
#317 #843278
>>843269
Ты не пробовал, ну я не знаю, ПОДКЛЮЧИТСЯ ДЕБАГЕРОМ И ПРОШЕЛКАТЬ ПО БРЕЙКПОИНТАМ?
#318 #843319
Анон, что думаешь по поводу онлайн-кура на Udacity? Какие еще есть онлайн-курсы?

И да, вопрос - если у меня не очень быстро летает студия на винде(4 гига оперативки, 2.3GHz) то есть ли смысл накатить убунту и на неё студию?
#319 #843328
>>843319
Потрать 2 тысячи на плашку оперативы.
>>843340
#320 #843334
>>843319
А с чего ты взял, что убунта будет быстрее винды?
>>843340
#321 #843338
сап, у меня есть activity с drawer, один их фрагментов, на которые есть выход из drawer-а, содержит в себе ViewPager, у которого должно быть ровно три списка, в каждый из которых данные грузятся из интернета/с сервера. Что посоветуете: делать nested fragments или добиться с сохранением View state-а, добавляя просто списки как вьюхи в пейджер ?
#322 #843340
>>843334
Ну так принято считать.
>>843328
Надо бы, но пока денег нет.
>>843343
#323 #843343
>>843340
Но это не так.
>>843350
#324 #843350
>>843343
У меня некоторое время была убунта с AS. Вроде пошустрее винды запускалась. Но я там не успел ничего сделать, нужно было переустановить винду.
>>843359
#325 #843359
>>843350
Потому что она чистая была.
38 Кб, 400x550
#326 #843387
Дарова ананасы.
Есть один вопросец.
Каждый сталкивался с тем что есть какой-то список и по тапу на элемент пушится страничка с деталями.
Но вот если ты нажмешь двумя пальцами на 2 разных элемента, или аки сумасшедший будешь тыкать тыщу раз в сек на один и тот же элемент - запушится больше чем 1 страничка.
Но походу это не единственный случай.
Например есть 2 кнопки одна из которых открывает свой попап. Если кликнуть их вместе опять получу хуету.
Ну и т.п.

Короче, есть ли какой-то общих подход. Может есть что-то в Андроиде встроеное? Или всё же нужно писать всякие IsBusy и прочее говно?

Сам вкатился с веба, потому наверное задаю глупые вопросы.
#327 #843388
>>843387
Встроенного нет, я использую Rx с байндингами для вьюшек. Тогда можно легко сделать через debounce, а если нужно показать что вьюшка некоторое время неактивна:
clicks()
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(event -> v.setEnabled(false))
.observeOn(<SCHEDULER>)
<OTHER STUFF>
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(result -> v.setEnabled(true))
.subscribe();
>>843402
#328 #843402
>>843388
ыыы.
то есть всё равно каждый отдельный случай надо вручную хэндлить. Спасибо.
А не знаешь, почему не запилят какое0нибудь глобальное решение? Ведь каждая прилага сталкивается с этим.
>>843411
#329 #843411
>>843402
А те не похуй на это? Если юзер хочет так делать, пусть делает, google сам забивает хуй на это в своих приложениях
>>843465
#330 #843417
>>843194
>>843269
Conversations распространяется под GPL. Следовательно, ваш производный код тоже должен быть доступен.
Так что, выкладывай исходники или иди нахуй.
>>845617
#331 #843419
>>843387

> пушится страничка


> открывает свой попап


> вкатился с веба


Зря вкатился.
>>843463
#332 #843463
>>843419
чойта? называю не так? Так что такого? :)
#333 #843465
>>843411
хер знает. думал что не очень хорошо чтобы было так.
#334 #843548
>>843387
Проблема актуальна только для ограничения частоты следования запросов на сервер, встречается это в основном в формах поиска и автодополнения.
Когда-то я это делал встроенными средствами языка и андроида для формы поиска: очередь запросов и собственно ЭКЗЕКУТОР.
#335 #843666
Сап двощ, суть такова. Есть view со всякой текстовой хуйней, нужно сделать его полупрозрачным(легко) и чтобы поверх появлялать надпись(сложно). Как такое сделать?
>>843723
#336 #843723
>>843666
Так а что сделать то хочешь?
>>843726
#337 #843726
>>843723
Лист с итемами, при удалении итема он не сразу пропадает из списка, а становится полупрозрачным и поверх него появляется надпись удалено. Хз как такое реализовать без космической ебли, надеюсь на помощь анона.
>>843816
#338 #843816
>>843726
Делаешь вьюхолдер, в onBindViewHolder, если состояние = удалено, делаешь текст видимым, а бэкграунда вьюхолдера меняешь цвет.
>>843876
#339 #843849
Ну че, кто на дроидкон идет?
>>843853>>843891
#340 #843853
>>843849
У меня боязнь больших скоплений людей, ну нах.
#341 #843876
>>843816
Не, как создать текст поверх другой вьюхи? Надпись должна быть именно поверх другой вьюхи, типа как в фш со слоями.
>>843934
#342 #843891
>>843849
Нахрен нужны конференции конкретно про android/ios, если они не от Google/Apple?

В который раз будут пережевывать android-костыли и рассказывать про свои велосипеды.
Может быть из JB кто-нибудь придет рассказать как делать hello-world на Kotlin.

Конференции JUG.ru и то интереснее для android разработчиков.
#343 #843902
Как сделать, чтобы при создании новой активити (пустой), в layout добавлялся android:id ?

П.с первый день
>>843934
#344 #843934
>>843876
Зсунуть вьюху и текст внутрь одного конетейнера Frame/Relative.
>>843902
Зочем
>>843936
#345 #843936
>>843934
Ну просто в туторе гугла было вот это

>Note: The XML layout generated by previous versions of Android Studio might not include the android:id attribute. The call findViewById() will fail if the layout does not have the android:id attribute. If this is the case, open activity_display_message.xml and add the attribute android:id="@+id/activity_display_message" to the layout element.



А у меня последняя версия, по идее должно было добавляться
>>843938
#346 #843938
>>843936
Возьми и добавь в лэйаут тот айди, который тебе нужен.
>>843943
#347 #843943
>>843938
Да добавил я, просто думал, что можно как-то настроить, чтобы по умолчанию cоздавался id, ну да ладно, это не принципиально.
#348 #843978
Смотрю курс на udacity по андроиду и параллельно читаю head first android (сейчас изучаю фрагменты)
все правильно делаю?
#349 #843986
>>843978

> все правильно делаю


Нет, ты изучаешь программирование под андроид.
>>844017
#350 #844017
>>843978
Этот >>843986 все правильно говорит, хуле ты хаскель не учишь?
#351 #844047
>>843978

Курс с погодным приложением? Тогда норм.
#352 #844291
>>843319

>не очень быстро летает студия на винде(4 гига оперативки, 2.3GHz) то есть ли смысл накатить убунту и на неё студию?


имеет, но не надейся на существенный прирост производительности
#353 #844296
>>843319
Имеетсмысл SSD поставить и озу до 8 гб.
#354 #844353
Сап, котаны, такая тема - вроде как продумал как построить любую клиент-серверку по MVP прямо вот очень хорошо, но вдруг вылезли VK и FB SDK которые засрали мне своими коллбэками ебучими весь презентер. С этим можно что-то поделать ? Фактически там есть 4 сраных коллбэка - первые два на логин, вторые - на получения данных а-ля users.get() в VK. Так там еще и третий запрос имеет место быть - запрос к нашему API на аутентификацию. Получается жирновато прямо вот дофига...
>>844359
#355 #844358
Насколько раздуется приложение, если я использую:
1. Kotlin + RxJava
2. Retrofit
Мне нужно написать модуль для существующего приложения.
Для разнообразия решил написать его на котлине.
Этот модуль - фрагмент c некоторым функционалом (карты гугла, загрузка данных с сервера, кеширование). Насколько сложно будет встроить его в приложение на Java?
>>844367
#356 #844359
>>844353
Оберни колбэки в observable и обмазывайся flatMap'ом.
>>844388
83 Кб, 480x480
#357 #844364
Хочу написать простенькое приложение по типу доставки еды.
Посоветуйте, как это лучше сделать.
Подумал и решил таким образом: на сервере храниться xml/json с данными(вид пиццы: маргарита; цена: 200 рублей). Приложение стягивает xml с сервера, затем строит layout.
Получаем список пицц на экране пользователя. Юзер кладет пиццу в корзину, выбирает количество, рассчитывается цена. Покупку можно сделать путем отправки письма на емеил доставки пиццывидел такую фишку в одной аппликухе.
Посоветуйте, это годная идея для первого проекта?
Может, уже есть готовые велосипеды?
>>844400>>844821
#358 #844367
>>844358
Советую отсюда https://github.com/streamsupport/streamsupport
взять CompletableFuture и юзать их везде где нужны асинхронные операции.
Ибо они гораздо проще (нет сайд эффектов на подписывание и они "горячие" по умолчанию"),
но при этом их можно так же удобно чейнить и с async/await они лучше совместимы.

А RxJava нужно использовать только там где реально нужен реактивный-поток-данных,
те когда заведомо известно что будет несколько результатов.
#359 #844388
>>844359
Не понял, коллбэки они и есть коллбэки, единственное, что на мой взгляд здесь можно сделать - вынести их создание в отдельный CallbackManager какой-нибудь и просто инстансы получать...
#360 #844389
>>844367
Что значит "горячие по умолчанию"?
#361 #844392
>>844367
Правильно я понимаю, что поняв суть CompletableFuture станет ясна и суть RxJava?
>>844428
#362 #844396
>>844389
При подписывании на обсервабл у него по дефолту срабатывает onSubscribe, в котором например начинается запрос в сеть. Если ты подпишешься, отпишешься и снова подпишешься на него при условии что запрос еще не отработал, то будет два запроса вместо одного.
#363 #844397
>>844389
Ну а "горячий" подпишет тебя на запрос который в процессе, если такой есть.
#364 #844400
>>844364
бамп вопросу
#365 #844404
>>844367
Да, точно. RxJava мне абсолютно не нужна для этой задачи.
#366 #844414
>>844389

>Что значит "горячие по умолчанию"?


Это значит что "по умолчанию" метод который возвращает CompletableFuture будет выполняться сразу,
в отличие от возвращающего Observable, у которого надо с начало вызвать subscribe(...), даже если тебе не нужны результаты.

те если у тебя есть класс с методом
addUser(user: User):Observable<*>

то просто вызов service.addUser(User()) - не сделает ничего,
а нужно делать service.addUser(User()).subscribe({}, {})
#367 #844428
>>844392

>Правильно я понимаю, что поняв суть CompletableFuture станет ясна и суть RxJava?


CompletableFuture - это промисы https://ru.wikipedia.org/wiki/Futures_and_promises
RxJava - это специфичная реализация идеи https://ru.wikipedia.org/wiki/Реактивное_программирование

Нельзя сказать что-то лучше, они для разных целей.
В Oracle это поняли и в той же Java 9, завезли Flow (это RX от JVM)
#368 #844622
С помощью GCM, можно делать нотификации прямо из приложения, т.е. без сервера, указываю время, и в это время она приходит?
>>844627
#369 #844627
>>844622

> указываю время, и в это время она приходит


И нахуй тебе GCM вообще тогда?
>>844635
#370 #844630
Аноны, есть сервис всякого проигрывания музыки из VK, с плейлистами и прочей хуйнёй-малафьёй. Подкиньте годных идей, что туда можно добавить, чтобы строчка в портфолио была?
>>844657>>845138
#371 #844635
>>844627
хз, может будильники не тру
#372 #844657
>>844630
Ничего.
#373 #844703
Я правильно понимаю, что с программированием под Android на Eclipse уже ВСЕ? И поддержку Windows XP прекратили? Еще в 2015 году Гугл отказался поддерживать обновления ADT, сказав всем сваливать на Андроид Студию, но техническая возможность использовать связку Android SDK + ADT + Eclipse все еще оставалась.
Сейчас после обновления SDK Platform Tools до 24.0.3 нихуя не работает компиляция на Windows XP (тупо не запускается adb), откатил до 24.0.1, все нормально.
И Support Package Library версии 38 нихуя не содержит библиотеки поддержки как проекты Эклипс. Раньше можно было использовать те же recyclerview, appcomat и cardview, теперь их тупо не привяжешь к Андроиду.
Т.е. теперь расклад такой: если хочешь писать под Андроид в Windows XP - не обновляй Platform Tools.
Если семерка и выше, но юзаешь эклипс (как у меня, нетбук 2010 года тянет Андроид Студию, но с большими тормозами), не обновляй Support Package Library или вообще не юзай библиотеку поддержки.
#374 #844718
Если я хочу использовать MVP архитектуру и Retrofit, то что вместо AsyncTask можно взять для кеширования полученного с сервера в БД? Использую cupboard в качестве easy ORM.
>>844735
#375 #844734
>>844703
Бери консольку и конкпелируй из нее, че ты не как этот. Подсветку из саблайма/атома/вима/емакса.
>>844801
#376 #844735
>>844718
Loaders/RxJava/бекспорты CompletableFuture
#377 #844793
sup, аноны
итак возникло пару вопросов:
1) куда устанавливается АС, джава сдк, андроид сдк в линуксе? есть ссд 120 гб, разбит на разделы по канонам линукса(убунты). интересует хватит ли мне места если у меня есть 2 раздела по 55гб(/home, /)
2)посоветуйте тему диплома на андроид. могу в простое клиент-серверное с использованием интентов, потоков, хттп реквестов. на нулевой не отвечают
>>844800
#378 #844796
Ебать. Эти пидары выпустили 2.2 оставив при этом баг с датабиндингом
>>844802>>844825
#379 #844797
>>844703

>xp


Ты там совсем ебанутый?
sage #380 #844800
>>844793

> посоветуйте тему диплома на андроид


Поубивал бы.
#381 #844801
>>844734

>атома


Так атом на жс еще более требователен к ресурсам, чем студия
#382 #844802
>>844796

> датабиндинг


Не нужен.
>>844825
#383 #844821
>>844364
ответьте,плих
>>844827
#384 #844825
>>844796
А че с ним?
>>844802
Любитель баттернайфа?
>>844829
#385 #844827
>>844821
Ты в xml собрался данные хранить или разметку, если второе то нахуя, ты еще поебешься с тем как это сделать. Это не веб где хтмлки туда-сюда гоняют.
>>846558
#386 #844829
>>844825
Есть даже бага на багтрекере, даже не одна. Студия не определяет статические методы, если нет переменной в xml
>>844837
#387 #844831
Что делать если юзер перевернул экран, презениер у меня сохранен и не булет пересоздан, но view пересоздастся и в результате после некой асинхронной операции view НЕ обновится, т.к. было null?
1) Как-то проверять после bindView, что есть результат и обновлять View
2) Перезапустить запросы при перевороте, но это не вариант, зачем 2 раза запросы слать?
>>844833
#388 #844833
>>844831
Использовать view state. Суть можешь у mosby посмотреть.
>>844937
#389 #844837
>>844829
Ты про кастомные атрибуты? Ну у меня везде есть переменные.
#390 #844844
Кто-то пробовал что-то делать на jabber? Не могу подружить спарк (десктоп) с конверсейшн(андроид) клиенты. Не отправляются файлы(любые) между разными платформами ни в одну, ни в другую сторону. В рамках одной платформы все хорошо, между платформами работают только текстовые сообщения. Есть у кого идеи?
#391 #844898
Пишу приложение с vk api. В доках пишут, что ссылки на аудиозаписи привязаны к ip. Что лучше в такой ситуации: смотреть за состоянием сети бродкаст ресивером, или же просто запрашивать url записи перед каждым воспроизведением?
>>844914>>844924
#392 #844914
>>844898

>url


this
#393 #844916
Я так понимаю сейчас юзание инжектора(dagger, маслонож) + какая-то система управления событиями(eventbusы и прочие rx) + orm это такой себе минимум? Или в проде еще часто пишут на голом фреймворке.

Кодирую сейчас задание на стажировку из шапки и охуеваю от раздувания кода при добавлении кусочков функционала и все это становиться сильно связано и smells bad, чувствую что с такой минималочкой(события, инжектор, орм) количество кода и быдломеханик сократится в разы, или такие тестовые лучше писать на голяке?
#394 #844924
>>844898
Запрашивать каждый раз это вариант.
А вообще вероятность того, что айпишнег поменяется внезапно крайне мала.
>>844936
#395 #844927
>>844916
Мне кажется, в задании из двух активити нахуй не нужно забивать проект либами. Не та это задача, где они что-то сделают проще/красивее.
Важнее, чтобы ты мог в разделение логики (mvc там). Ну и солид, инверсия контроля, никакой сильной связи. Очень странно, что у тебя там что-то раздувается вообще
#396 #844936
>>844924
Нихуя подобного, юзер может переключиться с wi-fi на мобильный интернет, к примеру.
#397 #844937
>>844833
Это вот это?
http://hannesdorfmann.com/mosby/viewstate/
Но здесь нет решения этой проблемы.
Только сохранения состояния View после поворота экрана.
Мне то другое нужно.
>>844946
#398 #844946
>>844937
Тебе нужна связка presenter -> viewstate -> view. Viewstate привязан к циклу preneter'a и зеркалирует все вызовы view. Если view существует и привязана, то viewstate сохраняет у себя последнее состояние и отправляет его во view. Если view не существует, то просто сохраняет состояние. В момент привязки view к presenter, состояние из viewstate применяется к view.
>>844948>>845047
165 Кб, 650x650
#399 #844948
>>844946
Ага! Все понятно. Пока существует презентер - храним состояние View в прослойке между реальным View и Presenter.
Как только View забиндили - синхронизируем всё к хуям.
Просто и логично.

это картошка через шайбу проросла
>>844949
#400 #844949
>>844948
Бля, не та пикча, но похуй, ящерицы круче!
#401 #844956
В чём отличие Loader от AsyncTaskLoader?
Ведь и тот и тот в другом потоке задачу выполняют и возвращают результат в main thread?
#402 #844972
Открыл исходник recycler view - 10000 строк ах ты ж ебаный нахуй, вот вам и ООП в андройде
>>844980>>845010
#403 #844980
>>844972
Recycler еще и куций какой-то. Метод onItemLongClick велосипедить пришлось.
>>845198
#404 #845010
>>844972
Посмотри конструктор View. Андроид костылерожденный.
#405 #845047
>>844946
Мне сразу стало интересно - а как подобные уебки хранят презентер? Неужели у них постоянно висит армия синглтонов?
>>845059
#406 #845059
>>845047
Презентер у тебя либо ретеинфрагмент, либо привязан к активити и уничтожается если активность isFinishing.
Но я конечно уебок, ага.
>>845139
sage #407 #845114
[code]
Test
[/code]

[code lang=c]
Test
[/code]

[code lang="c"]
Test
[/code]
#408 #845137
>>844703

>нетбук 2010 года тянет Андроид Студию, но с большими тормозами


такая же ситуация, только я пересел на убунту еще в позапрошлом году, а то вында бы от студии вообще обкакалась
#409 #845138
>>844630
скробблинг на ластик
#410 #845139
>>845059
автор mosby делает все в ретеин фрагментах, т.е. твой презентер всегда висит в твоем фрагменте, только нужно занулять эллементы ui в onDestroy
#411 #845198
>>844980
Очко у тебя куцее
#412 #845242
>>844916
Самый минимум: Retrofit
Для продвинутых (если знаешь, что это и зачем): Dagger 2, RxJava

Butternife - по сути синтаксический сахар. Хочешь, используй, не хочешь - не используй.
>>845243
#413 #845243
>>845242
>>844916

> eventbusы, orm


Не нужны. Тем более в тестовом задании.
#414 #845285
>>844916
В тестовых заданиях обычно просят по минимуму использовать сторонние либы тк:
1) От тебя требуется показать знание Android SDK и общую сообразительность
2) Ты один фиг не умеешь их готовить и только увеличишь кол-во макарон в своем коде, в котором мне придется разбираться
3) На работе все равно будут использовать др библиотеки
#415 #845299
Как устроен модуль 2ch для Dashchan?
Каким образом вызываются методы из другой apk?
https://github.com/Mishiranu/Dashchan-Extensions/wiki/Extension-devepment-tutorial
>>845301>>845314
#416 #845301
#417 #845314
>>845299
Скорее-всего, просто кидают друг-другу интенты.
#418 #845382
Поясните за плюсы и минусы GreenDAO плиз, кто использовал в крупных проектах.
8 Кб, 389x165
#419 #845385
У меня есть SearchView в который выводятся данные из базы данных. Как мне повесить слушатель на строчку из SearchView, чтобы например, мог перейти на Acitivty этого значения(которое выводит SearchView)?
>>845781
18 Кб, 500x327
#420 #845565
Почему ИТТ нет обзора архитектуры Dashchan?
Там нет RxJava, нет Retrofit и при этом прекрасно всё работает.
>>845670
sage #421 #845617
>>843417
Только в случае расппостранения, умник.
>>845656
#422 #845656
>>845617
Распространения чего? Если твоё приложение использует более одного человека, это уже распространение.
>>845682
#423 #845670
>>845565
Всё прекрасно работает != качественный код

Там многие вещи — велосипеды. HttpResponse, HttpClient, AsyncManager, почти всё на AsyncTask'ах, довольно громоздкие сервисы.

Но приложение действительно работает хорошо, из имеющихся клиентов самое лучшее. Но я уверен, если бы автор писал Dashchan сейчас с нуля, то он получился бы еще лучше.
>>845672>>845678
#424 #845672
>>845670
Я до конца не понимаю как там некоторые вещи работают - почему по время переворота экрана ничего не уебывается, ведь он не использует retain fragment?
>>845678>>845683
#425 #845678
>>845672
>>845670
Еще вот что - там при Destroy происходит остановка AsyncTask'ов, но как я не пытался при повороте девайса данные всегда корректно загружались. Что это за магия такая?
>>845694
#426 #845682
>>845656
А он вроде как его один и использует. Просто за советом для себя пришёл.
>>845689>>845697
#427 #845683
>>845672
Фрагментов у него вообще нет, только активити (код старый).
Есть лишь один статичный фрагмент (это говнокод и почти гарантированная утечка), в котором он, видимо, хранит состояние. Ну и вообще, там по большей части WebView используется.

В общем, код Даши как пример для подражания и хороший архитектуры — явно плохая идея.
>>845688>>845715
22 Кб, 886x367
#428 #845685
Делаю приложение по книге head first android.
Что не так?
>>845698
#429 #845688
>>845683

> Ну и вообще, там по большей части WebView используется.


Но ведь это неправда.
>>845692
#430 #845689
>>845682
Что-то не похоже:

> Это не мой код, это исходники на основе которых мы делаем


Плюс, в прошлом треде он что-то похожее про передачу файлов по xmpp спрашивал, говоря, что сроки горят.
>>845699
#431 #845692
>>845688
Открой исходники и убедись.
>>845700>>845715
#432 #845694
>>845678
Самописный AsyncManager и LruCache. AsyncTask отдает результаты не в активити (которой уже может не быть), а в сервис/свой синглтон.
#433 #845697
>>845682
Ну и если он просто сам для себя пишет, тогда точно не понимаю, почему бы просто не выложить свой форк на Гитхаб.
#434 #845698
>>845685
Один просто Fragment, а другой Fragment из SupportLibrary?
>>845710
#435 #845699
>>845689
Ну, между ними код вполне открыт. В паблик ничего не выкладывали. А когда выложат — уже нужно требовать.
>>845708
#436 #845700
>>845692
Открыл, убедился, что это неправда.
>>845706
27 Кб, 520x613
#437 #845706
>>845700
Ну как знаешь, лол.
>>845709>>845715
#438 #845708
>>845699
Ну да, это верное замечание. Правда, что-то я сильно сомневаюсь, что они потом его откроют.
#439 #845709
>>845706
А в каких случаях эта активити открывается, ты смотрел?
#440 #845710
>>845698

>а другой Fragment из SupportLibrary?


не понял
>>845734
#441 #845715
>>845706
>>845692
>>845683
>>845683
WebView там нигде не используется. За месяц каждодневного пользования Дашей я ни разу его не видел.

Алсо, Dashchan пример того, как имея прямые извилины штатными средствами (без доп. библиотек для хипстеров) сделать хороший продукт.
>>845716
#442 #845716
>>845715
Хороший код — это тоже для хипстеров?
>>845717
#443 #845717
>>845716
Это навязанные Западам чуждые нам стереотипы! Обколются своими СОЛИДами и тестируют друг друга в юниты.
>>845757
#444 #845734
>>845710
все, разобрался
#445 #845757
>>845717
проорал
#446 #845781
>>845385
Мне кажется, правильная идея - игнорировать к хуям SearchView из основной библиотеки.
Ебанутейшая инициализация, костылинг велосипедов для сохранения истории поиска. На старых версиях меняется цвет текста в окошке, цвет кнопочек и всего-всего - и главное, что это никак не пофиксить.
В приложении ютуба сделан свой SearchView, который гораздо удобнее хуйни, вылезающей по середине тулбара.
>>846043
#447 #846043
>>845781
А что можно использовать вместо SearchView?
>>846064
#448 #846064
>>846043
WebView с поиском Гугла
#449 #846206
Как сделать, чтобы язык для локализации можно было вручную выбрать в апке? Или это делать не рекомендуется?
>>846212
#450 #846212
>>846206
Мне кажется, это уже 100 раз обсосано на стаковерфлоу.
>>846215
#451 #846215
>>846212
Да, извини, еще такой вопрос:
Если локализации твоего региона нету то используется дефолтная. А что если локализация твоего региона частичная, тоесть некоторых стрингов просто нету. Тогда будут использоваться дефолтные стринги, которых нету в локализации, или вся локализация будет дефолтной?
>>846234
#452 #846222
Аноны, а в студии есть консоль и способы работы с ней? Чтобы можно было по-быстрому проверять правильное ли я значение возвращаю, а то телефон и эмулятор очень медленные.
>>846223
#453 #846223
>>846222
Вкладка terminal внизу.
Про значения не понял. Ты имеешь в виду дебаггер?
>>846227
#454 #846227
>>846223
Ну я имел ввиду, могу ли я написать аналог System.out.println() и чекнуть что-то?
>>846234>>846362
#455 #846234
>>846227
Не проще написать юнит тест на этот участок кода?
>>846215
Для каждого ресурса резолвится все индивидуально. Так что

> Тогда будут использоваться дефолтные стринги, которых нету в локализации

#456 #846362
>>846227
Для этого используется Log.d
>>846462
#457 #846462
>>846362
Только даунами используется.
>>846470
#458 #846470
>>846462
Чем пользуются недауны?
>>846493
#459 #846493
>>846470
Картошкой.
>>846499
#460 #846499
>>846493
Мамкин шутник или хедхантишь телепатов?
>>846501
#461 #846501
>>846499
Ты тупой или просто из жс-треда?
>>846591
#462 #846558
>>844827
Данные о количетсве пицц
>>846563
#463 #846563
>>846558
Ну тогда в принципе норм.
#464 #846591
>>846501

>Ты тупой


>из жс-треда


Зачем или если фразы эквивалентны?

Сижут тут давно, что такое картошка в душе не ебу. Думаю анон посоветует годную библиотечку для логгинга, а ты хуйню всякую пишешь.
>>846824
#465 #846824
>>846591
годна библиотека для логгинга - Timber
>>846833>>846852
#466 #846833
>>846824
Охуеть какая годная. У нее есть большая проблема, которую выдают за преимущество - собственный принтер эксепшонов, а именно полного стактрейса, из-за чего принтуется она около 16 мс целый фреим.
В итоге я ее костылил, чтобы она в отдельном потоке срала логами, беря их из блокирующей очереди.
#467 #846844
>>846833
А, у нее еще все под одним тэгом выводится. Так что нужно руками еще тэг дописывать, либо писать обертку, которая будет его дописывать.
#468 #846852
>>846824
>>846833
А нахер вообще нужно логирование в мобильной разработке?
>>846863>>846866
#469 #846863
>>846852
Совсем туттуру, да?
>>846883
#470 #846866
>>846852
Ну если у тебя 2 окна рестопараши то ненужно.
>>846883
#471 #846883
>>846863
>>846866
Аргументов не завезли, я смотрю?
>>846886
#472 #846886
>>846883
Краш с логами > краш без логов, это вроде бы очевидно.
>>846888>>846896
#473 #846888
>>846886

> очевидно


Тогда ладно.
#474 #846893
>>846833
Она не будет ничего принтить-форматить если ты не добавишь дерева, ферштейн? А андроидовскому логгеру ты кроме того, что цеплять String.format должен, так еще и в if (BuildConfig.DEBUG) оборачивать должен. Проблема тимбера в том что у него minSdk = 16, непонятно чем это вызвано.
>>846897>>846924
#475 #846896
>>846886
Тебе крашлитика и так логи всунет по всем тредам. Тимбер только позволяет ее красиво в дерево спрятать.
>>846924
#476 #846897
>>846893

> в if (BuildConfig.DEBUG) оборачивать должен


Ёбнутый что ли?

-assumenosideeffects class android.util.Log {
public static d(...);
public static
v(...);
}

> Проблема тимбера в том что у него minSdk = 16


Проблема проблем.
>>846905
#477 #846900
Палю годноту: https://github.com/orhanobut/logger
#478 #846903
Аноны я тут новенький, где можно научиться гитом пользоваться? Гайд/книга/видео, все подойдет.
знаю немного теорию vcs
>>846907>>846908
#479 #846905
>>846897
Ага, и сам автор ответа предложил использовать Timber из-за более удобного api.
Опять же если я хочу что-то форматировать, то с дефолтным логером даже если его отключить произойдет создание строки и тд.
>>846912
#480 #846907
>>846903
Туториал битбакета.
>>846909
#482 #846909
>>846907
А в чем разница между битбакетом и гитхабом, или это просто конкурирущие репозитории?

>>846908
благодарю
>>846923
#483 #846912
>>846905
Какого нахуй ответа?

В чем более удобное апи?

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


Што?
>>846921
#484 #846921
>>846912

>Какого нахуй ответа?


http://stackoverflow.com/questions/2446248/remove-all-debug-logging-calls-before-publishing-are-there-tools-to-do-this

>В чем более удобное апи?


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

>Што?


Ты там через плюсик логаешь, да?
Если ты не хочешь через конкатенацию складывать строки для лога, то в дефолтном логере ты делаешь:
Log.d(TAG, String.format("xyi: %s, pizda: %s", xyi, pizda));
Timber.d("xyi: %s, pizda: %s", xyi, pizda);
В случае деффлтного логера произойдет создание строки в куче для нахуй не нужного лога.
В тимбере до ненужного формата просто не дойдет, если ты правильно его настроил.
#485 #846923
>>846909
Ну вообщем-то да. Гитхаб только для гита, на битбакете интеграция с асаной, можно и меркуриал использовать. Опять же 5 репозиториев приватных бесплатно.
>>846929
#486 #846924
>>846893 >>846921

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


> Она не будет ничего принтить-форматить если ты не добавишь дерева, ферштейн


А, ну да. Дерево логов краш репорт сервиса мы не подключаем. Я говорю, что тимбер очень долго собирает стактрейс, и это хуево.
>>846896

> логи всунет по всем тредам


Нет, только стактрейс.
>>846928
#487 #846927
>>846921

> В случае деффлтного логера произойдет создание строки в куче для нахуй не нужного лога.


Так какая нахуй разница? Если ты им дебажишь, то тебе похуй на создание строки. В релизи всё равно вырезается логгирование прогардом
>>846960
#488 #846928
>>846924

>А, ну да. Дерево логов краш репорт сервиса мы не подключаем


Почему же не подключаем? Подключаем, но логать будем только errorы, ну и warnинги, если сильно хочется.
#489 #846929
>>846923

>Опять же 5 репозиториев приватных бесплатно.


5 человек в группу бесплатно, кол-во приватных репозиториев не ограничено.
>>846930
#490 #846930
>>846929
Перепутал.¯\_(ツ)_/¯
#491 #846935
>>846921
И вообще, иди нахуй со своей экономией на спичках
>>846941>>846964
#492 #846941
>>846935
Когда закончились аргументы. Тебя вообще ебет что я использую для логирования?
>>846947
#493 #846947
>>846941
Мне поебать
#494 #846960
>>846927
Прогвард не вырежет создание строки, вот пруф:
http://pastebin.com/i3HnQ3Dt
Каждый раз когда лог будет вызываться, будет происходить вызов toString объекта, если бы там был тимбер, то этого бы не происходило, так как не было бы посажено дерево для уровня debug.
>>846964
#495 #846964
>>846960
Я уже написал: >>846935

Создание строги ему жалко, сука. А потом будут про оптимизацию еще кудахтать.
>>846967
#496 #846967
>>846964
Спор был о сайд эффектах и отключении логгинга в продакшене. Дефолтный логер нужно оборачивать в if (BuildConfig.DEBUG).
>>846969
#497 #846969
>>846967

Я уже спрашивал: нахуя он вообще нужен? Внятного ответа не было.
>>846971
#498 #846971
>>846969
А это не внятный ответ: >>846921 ?
Вкратце - удобней.
>>846972>>846975
#499 #846972
>>846971
Вопрос про логгинг в общем был, а не про тимбер.
>>846974
#500 #846974
>>846972
Логгинг нужен что бы не сидеть с дебагером выковыривая значения какой-нибдуь хуйни. Посмотреть данные по запросу-ответу, проверить на лету что вызвалось нужное событие и тд.
#501 #846975
>>846971
Из того же ответа:

> Log.d(TAG, String.format("xyi: %s, pizda: %s", xyi, pizda));


>Timber.d("xyi: %s, pizda: %s", xyi, pizda);


Нахуя писать значения переменных в лог, когда у тебя есть дебаггер? В случае крэша неверное значение будет в эксепшене.
>>846978>>846981
#503 #846978
>>846975
Редкий краш на девайсах юзеров тоже дебаггером будешь отлаживать?
>>846982
#504 #846981
>>846975
Что бы не сидеть с дебагером? В продакшене эти логи никогда не выведутся.
>>846990
#505 #846982
>>846978
Крашлитика сама все соберет.
>>846984
#506 #846984
>>846982
Она не собирает логи без Crashlytics.log, деб.
>>846988>>846990
#507 #846988
>>846984
Папка твой деб. Не словленные эксепшны она сама собирает. Те которые словил, ну те да конечно самому надо логнуть.
>>846991
#508 #846990
>>846991
#509 #846991
>>846988
Ты понимаешь разницу между логами и стактрейсом?
>>846990
Ну ок(
>>846994
#510 #846992
Перекатывайтесь уже сюда https://2ch.hk/pr/res/846976.html (М)
#511 #846994
>>846991

>Ты понимаешь разницу между логами и стактрейсом?


Конечно понимаю. Но как ты крашлитике логируешь эксепшн? Правильно - через log. Туда же записываешь связанные со сломавшимся функционалом данные.
>>846996>>846998
#512 #846996
>>846994
Ёбнутый штоле?
#513 #846998
>>846994

> Туда же записываешь связанные со сломавшимся функционалом данные


Ты ограничен тем, что ты запихнешь в карту при logException, а я же получаю более полную картину действий пользователя и данных, с которыми он оперировал.
#514 #847249
Использовал кто ? https://atlas.layer.com/android
#515 #847413
>>846908
не знал что есть на русском, спасибо, а то на ангельском осилил уже больше половины
25 Кб, 272x171
36 Кб, 289x350
#516 #851899
Господа, как мне динамически подгонять высоту и ширину вьюшки, чтобы она идеально вмещала в себя полученное из интернета изображение? Пикрелейтед то, что у меня выходит и сейчас и то, что я в итоге хочу получить.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 15 октября 2016 года.

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

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