Этого треда уже нет.
Это копия, сохраненная 21 июня 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
131 Кб, 1797x1055
Разработка под Android тред №20 # OP #750609 В конец треда | Веб
Перекатываемся на Firebase и начинаем использовать Constraint Layout.

Предыдущий тред тут:
https://2ch.hk/pr/res/743301.html (М)

Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом.

А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный. Куплено Microsoft. Теперь есть бесплатная версия.
5) BugVM (RIP RoboVM) - идейный наследник ксамарина, а теперь уже и его часть но на Java. Учитывая что Microsoft убила RoboVM, встречаем опенсорсный BugVM.

Отдельного упоминания стоят:
1) Kotlin - Java от JetBrains, новый и стильный язык, куча синтаксического сахара прилагается, есть стримы и делегаты. Хотите писать на котлине? Добро пожаловать в JetBrains и Avito.

Где брать инфу:
Интернет-ресурсы
1) http://developer.android.com/index.html
Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта.
2) http://stackoverflow.com/
Пользуюсь чаще чем первым сайтом. Можно найти практически все.
3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.

Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development - в отличии от остальных книг она обновляется, а так как ведро не стоит на месте а хуярит семимильными шагами, то я бы и не советовал другие книги.

А теперь, так как заебали уже всех, гайд для:

>"Я хуярил на делфи 5 лет назад а теперь хочу вкатится в андроид":



Чтоб быстро хоть как-то вникнуть в джаву берешь и гуглишь javarush или codingbat.com.
Можно Эккеля "Философия java" почитать.
Или Хорстманн "Java. Библиотека профессионала" до 7 главы.

Что тебе нужно понять в самой жабе.
Энтри лвл.
1) ООП - сам принцип нужно именно понять, так как ооп язык.
2) Типы данных. Примитивы и ссылочные.
3) Структуры данных - Массивы/коллекции - без них никуда. Полезно почитать про алгоритмы работы коллекций и их сложности.
4) Дженерик типы, они как раз юзаются в коллекциях.
5) Классы/интерфейсы и все вытекающие.
Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.

Дальше
6) Потоки ввода/вывода (streams). Не путать с тредами(threads).
7) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable.
8) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной.
Уже сделаешь что-то нормальное.

Дальше.
9) Работа с Sqlite, нужна будет в любом случае.
10) Работа с json.
Привет клиент-серверка.

Пишите в треде что добавить.
#2 #750617
Перекат вышел прямо как любая прога под ведро: со второго раза и с дерьмовой картинкой
>>750619
#3 #750619
>>750617
Годная картинка, не пизди.
>>750621
#4 #750621
>>750619
из 18 треда one love
>>750625
102 Кб, 458x500
#5 #750625
>>750621
Как знаешь.
>>750629>>750631
#6 #750629
>>750625
merci ^_^
#7 #750631
>>750625

>этот нос


я думал она няша
>>750637>>750642
#8 #750637
>>750631
Ракурсы, бро, ракурсы.
#9 #750642
>>750631
блять, ну испортил все, падла. Не замечал ведь :D
>>750644
#10 #750644
>>750642
Теперь признаешь что оппик лучше?
>>750664
#11 #750664
>>750644
Частично
#12 #750781
Сабж: почему в AS показывается в сумме allocated + free memory раза в два меньше чем в сраном диспетчере задач в ведре ?
>>750782
#13 #750782
>>750781
И чему верить
>>750934
#14 #750934
>>750782
Своему сердцу, очевидно же.
#15 #751263
В файербейсе пуши платные выходит, да еще и GCM. Удачи короче.
>>751876
#16 #751267
Сап аноны, говнокодер просит вашей помощи. Мне нужно в приложение добавить смену языка на выбор пользователя, код ниже меняет язык только одного активити, а мне нужно на все приложение. Подскажите как выйти из этой ситуации.
http://pastebin.com/h3tpfsTb
З.Ы. Гуглил решения, но ничего не понял
>>751286
#17 #751286
>>751267
После этого кода ощущение будто в говно наступил,
кем же надо быть что бы так делать...
#18 #751300
Потихоньку вкатываюсь в андроид и возник вопрос насчет sqlite и recycleview. Щас я загружаю данные в базу, оттуда их возвращаю в arraylist и сую их в адаптер, все отображается нормально. Но тут погуглил и наткнулся на CursorAdapter и его кастомные реализации и несовсем понял принцип. В случае курсор адаптера данные напрямую из базы идут собственно в адаптер и там отображаются так? И получается первый подход это говнокод или я делаю тоже самое только с лишним шагом в виде эррэйлиста? В общем поясните как правильно дергать данные из базы в recycleview
>>751302
#19 #751302
>>751300
Ты знаешь что такое курсор?
Если нет то сначала изучи это вопрос, потом приходи снова.
>>751333
#20 #751333
>>751302
Не понял как знание курсора влияет на вопрос. Типа слишком капитанский, когда возращаешь данные в массив перебирая курсоры ты тупо делаешь тоже самое только например с обрезанным функционалом типа нотифаинга добавления отдельных элементов ?
>>751353
#21 #751353
>>751333
"Не учатся ничему некоторые и учиться не хотят. Кина про фрилансеров с 300k насмотрелись..." (c)

> CursorAdapter = Cursor + Adapter


> Не понял как знание курсора влияет на вопрос.


Ну вот как с тобой разговаривать?

Курсор и курсор адаптер это механизм отображения данных из базы времен CPU 300 МгЦ и 128 MB RAM.
Его плюс что данные он хранит в памяти компактно одним куском (тк написал большей частью на нативном коде).
(Еще и подгружать их может постепенно, но не в случае RecycleView/ListView)

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

P.S.
Старайся либо писать компактные предложениями, либо делать перенос после 80-150 символов.
Иначе ужасно неудобно читать, особенно на FullHD мониторе.
#22 #751354
Посоны, что делать после того как я закончил раздел "Getting Started" на developer.android.com? Идти по остальным разделам или лучше начать выполнять какой-нибудь мелкий проэктик? Посоветуйте задание (или откуда его взять) во втором случае?
#23 #751370
>>751353
Спасибо за ответ, просто при поиске sqlite+recycleview по тому же стаковерфлоу
выдаются ответы типа этого
http://stackoverflow.com/questions/32101607/populate-recyclerview-with-a-sqlite-database
где ответ примерно с такой же реализацией как у меня, а комент к нему наоборот советуeт
реализовывать курсор адаптер типа этого https://gist.github.com/Shywim/127f207e7248fe48400b
и вот и возник вопрос как собственно народ запихивает данные в recycleview
#24 #751375
>>751353

>неудобно читать


Купил себе ссанину и других теперь учит как правильно писать, чтобы шея не открутилась при чтении.
мимо квадрат 1к
#25 #751402
>>751353

>Его плюс что данные он хранит в памяти компактно одним куском (тк написал большей частью на нативном коде).


(Еще и подгружать их может постепенно, но не в случае RecycleView/ListView)
всегда думал что курсор используется для экономии оперативы, что б не грузить все сразу в массив./arraylist
>>751455
#26 #751455
>>751402
Если ты делаешь просто moveToNext(), то курсор грузить данные из базы постепенно, увеличивая в размере свой буфер.
Чтобы ты мог сделать moveToPrev() или moveToFirst() быстро, без запроса к базе.
Кстати данные из базы грузит не построчно, а большими кусками и еще есть ограничение на размер его буфера (CursorWindow).
Но это уже нереливантные подробности, которые можно изучить если посмотреть его исходники.


НО для правильного отображения скролбара, ListView дергает -> Adater.getCount() -> Cursor.getCount().
А курсор может рассчитать getCount(), только если проитерируется по всем данным -> в итоге все данные загружаются разом в память
(в пределах максимального размер CursorWindow).

Именно поэтому CursorLoader вызывает явно getCount() у курсор (во время его асинхронно загрузки).
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/content/CursorLoader.java/#68
>>751775
#27 #751775
>>751455

>(в пределах максимального размер CursorWindow)


ну так не все ж данные
#28 #751876
>>751263
Это схуяль платные пуши?
#29 #751946
>>750609 (OP)
Есть какой нибудь толковый гайд по адаптивной вёрстке? на дев андроид есть только какая то мелкая херня.
>>752000
#30 #752000
>>751946
Ну пора понять что не бывает адаптивной верстки как во фронтенде.
Так можно детектить ньюфагов и долбоебов кстати.
>>752041>>752044
#31 #752041
>>752000
окей, не верстке, а созданя адаптивного ui, так лучше
>>752082
#32 #752044
>>752000
Кхм-кхм, а в React Native-то на flexbox-е всё верстается.
>>752048
#33 #752048
>>752044
че ты несешь, поехавший
>>752052
#34 #752052
>>752048
Специально для тебя:
React Native - фреймворк для разработки iOS и Android приложений, использующий нативные виджеты и анимацию, контроллируемые JS кодом с помощью библиотеки React.
Использует систему лэйаута flexbox, позаимствованную из веба.
https://facebook.github.io/react-native/
https://css-tricks.com/snippets/css/a-guide-to-flexbox/
>>752089>>752094
#35 #752082
>>752041
Опять же, нету адаптивности блять.
Вся адаптивность сводится к тому что делается скролвью которая типа делает приложение адаптивным по вертикали, и дизайнеры пытаются не тулить много говна по горизонтали.
#36 #752089
>>752052
Такая же хуйня есть и у джавы, кастомные флекс вьюхи.
Но вопрос в том, что это никак не ебучий бустрап который люди тут ищут. В результате он просто подвинет итемы в новый ряд которые не влезли в ширину.
Это твоя адаптивная верстка?
>>752126
#37 #752094
>>752052
Ебитесь-ка в жопу джаваскриптом где-нибудь еще.
#38 #752126
>>752089
Вообще-то в плане адаптивности бутсрап - это жалкие костыли по сравнению с флексбоксом.
Какая фича бутстрапа тебя интересует? Responsive grid? Так на флексбоксе он гораздо более responsive, чем бустраповские костыли в стиле "col-xs-6 col-sm-4 col-lg-3 col-xl-2".
Не хочешь чтобы айтемы двигались в новый ряд? Ставь им всем 'flex: 1' и фигачь в один горизонтальный контейнер - будут ужиматься, сколько бы их там не было (но это уже не responsive grid, с точки зрения терминологии)
>>752171>>752527
#39 #752171
>>752126
Чувак я тебя сразу прерву.
Называть самую мощную технологию веба на данный момент в адаптивности - т.е. бустрап костылями это еще мозгов надо иметь.
Ну и действительно реактнейтив нахуй никому не уперся,
джава/котлин > хуемарин > моча > фонгеп > вся остальная джаваскрипт параша(проигрывает фонгепу из-за коммьюнити которого нету)
>>752217>>752958
133 Кб, 1300x975
#40 #752195
ОХ СУКА КАК ЖЕ Я ЗАЕБАЛСЯ!!

Вот почему дизайнер такой пидор?

> 2016


> Андрейд


> 3Д карусель



Этот пидор не хочет делать отдельный дизайн для ведроида, этот пидор сделал дизайн для iOS.

И там эта блядская карусель. Собственно вопрос:

Как сделать вертикальную карусель чтоб как в iCarousel?
>>752221
#41 #752217
>>752171
После джавы/котлина (перед ксамарином) есть еще Qt.

> моча


А это что?
>>752226
#42 #752221
>>752195
Нет ничего проще, ищи инфу куда копать, бери неделю-две времени, менеджер сам выебет дизайнера.
>>752232
#43 #752226
>>752217
Кюти нету, успокойся. С такими темпами можно вьебать го и кучу всего еще, если ты не знал на ведро есть возможность писать практически на всем.

Моча была показательной границей ваябл технологий.
>>752237
10 Кб, 674x142
#44 #752232
>>752221
Да вообще охуеть. Я вот только работать устроился. Летом подработать. И вот дали проект. Офигеть. Я чота застремался менеджеру сказать, что нихуя не получается карусель делать. Да там куча всякого iPidor-ского говна в дизайне. Ну и такой диалог с менеджерем был
— Ок. А андроид дизайн где?
— Лан, с дизайнером побазарю
… неделя
— А андроид дизайн когда выйдет? а ассеты скинете? где?
— Дизайнер сказал, что этот норм на андроиде выглядить будет. Можешь блюр убрать

Ну чо за хуйня?
>>752245>>752246
#45 #752237
>>752226
На Qt написано, например, приложение 2ГИС. Посмотри, если не видел.

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


Я в курсе, спасибо. Только вот Qt в отличие от "всего" действительно используется и распространён.
>>752251
#46 #752245
>>752232
чот я подумал. надеюсь эти ребята здесь не сидят))
>>752247
#47 #752246
>>752232
Ну тут смотри, я просто не знаю как у вас там механизм работает.
Но находишь того кто более сговорчив.
Если это менеджер то подходи и говори.
- Я не нашел реализации этого инструмента, он не предоставлен в сдк, следовательно мне нужно его делать самому, учитывая что он довольно сложный это займет столько то времени минимум. Мне делать его или пойти более простым путем и сделать горизонтал скролинг вью из того что есть в миллион раз быстрее?
Менеджер выберет второй вариант так как никто никогда не рассчитывает что вьюха может забрать больше чем пол часа.

Если же говоришь с дизайнером.
- Братишь, что за говно ты мне подкинул? Это не по материал дизайну. Реализаций инструмента нету, я могу сам сделать но это займет овердохуя времени, а сроки то жмут. Переделывай, ну и желательно посматривай на материал гайды, так как они не просто так созданы.

Главное правило ГОВОРИТЬ ЧТО ТЫ МОЖЕШЬ ЭТО СДЕЛАТЬ но долго, ГОВОРИТЬ ЧТО ТЫ ЗНАЕШЬ КАК СДЕЛАТЬ БЫСТРЕЕ.
Удачи.
>>752256
#48 #752247
>>752245
Дизайнер и менеджер в разработке под ведро?
>>752252>>753429
#49 #752251
>>752237

>распространён


Да конечно блять, распространен. Удачи с поиском работы.
>>752255
#50 #752252
>>752247
наверн они. просто менеджер вот точно поймёт, что это я.
>>752257
#51 #752255
>>752251
Блядь, ты жопой читаешь?
>>752258
#52 #752256
>>752246
Спасибо. Прям мозги на место мне поставил. Так и напишу завтра.

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

Я вообще, можно сказать, что на удалёнке. В соседнем городе работаю. Связь по интернету.
>>752262
#53 #752257
>>752252
Ну и пускай, нехуй тупые задачи ставить. Менеджер на то и менеджер чтоб ты сидел и писал код не парясь про то что у тебя говно вместо задачи.
>>752259
#54 #752258
>>752255
Что ты сука зеабывешь, иди в свой сраный 2гис и сиди там нахуй, куча долбоебов написавших на некроплатформедля ведроида уж точно апу. Успех блять.
Чем они мотивировались то?
>>752261>>752263
#55 #752259
>>752257
Я ему сам случайно сказал, что всё уже чики-брики и в дамках будет.

Не, они, конечно, молодцы, что наняли (не платили ещё, без договоров и всего) одного уже-не-первокурсника без единого сделанного приложения и какого-то мутного иосника, который вот только с сентября objective-C начал учить.

Я думал меня на изи фигню поставят, а они во как…
>>752262
#56 #752261
>>752258
не знаю почему, но засмеялся, что даже соседа разбудил
#57 #752262
>>752256
А вот так не делай, если уже и еблуешь, то создавай видимость работы, пиши ему что-то, любую хуйню.
>>752259
Ну язык твой враг твой.

Но со временем пройдет.
>>752269
#58 #752263
>>752258
ну сдк любых карт почти всегда написаны на ndk, видимо пидоры из 2гис решили просто хуячить сразу на qt
>>752267
#59 #752267
>>752263
Ебать, да это же лучшее решение евар блять, проджект менеджера нужно сделать главой какой-то компании. Дали поддержку ндк, не давай пердолится в жопу и писать все на плюсах.
>>752275
#60 #752269
>>752262
Стоит говорить что-то вроде "я короч пытался поискать готовые вьюхи, нихуя не нашёл. Показать нечего, я бэкенд фигачил. Пусть нормально для ведра рисует!"?
>>752279
#61 #752275
>>752267
Ты не понимаешь, о чем говоришь?

> Дали поддержку ндк


Eclispe NDK сейчас deprecated, а альтернативу ему гугл уже два года выкатить не может

> не давай пердолится в жопу и писать все на плюсах


Ээ, а NDK по-твоему на чем написан?
#62 #752278
>>752275

>Eclispe NDK сейчас deprecated, а альтернативу ему гугл уже два года выкатить не может


вот вчера только выкатили вроде. на io сказали, вроде
>>752290
#63 #752279
>>752269
Если только начал, толкай хуйню
"Я пока делаю общую архитектуру связи между бд и экранами" и тд. Вообще это действительно сложная и долгая часть, но учитывая что ты все равно будешь все пиздовать как попало из гайдов, то забей. Это норма для первой аппы.

Поискать это два дня от силы, если ты не нашел и отписал об этом через два дня и предложил вариант как сделать подругому - ты норм парень. Если ты 5 дней искал и не нашел - то ты долбоеб. Так оно выглядит со стороны.

Скажи мол архитектура в процессе разработки пару дней уже пишу и продумываю. Вот решил посмотреть на эту карусель, проебался полтора дня и нихуя не вижу такого решения из коробки, потому чтоб не тратить зря время пишу вам, и пишешь то что я говорил выше.
>>752282
#64 #752281
>>752275
На ндк писать можно, что ты тут пытаешься втюхивать я не пойму?

>Ээ, а NDK по-твоему на чем написан?


Очевидно что на пизде твоей мамаши на плюсах, хватит меня за долбоеба держать правда бесит, анон сказал про карты на плюсах, так сделайте вы карты на плюсах а все остальное на жабе, благо так можно делать. Дальше понятно?
>>752283>>752287
#65 #752282
>>752279
Отлично. Спасибо большое! Грамотно расписываешь.
>>752289
#66 #752283
>>752281

>Под ндк


фикс если честно хуй знает как правильно сказать
>>752284
#67 #752284
>>752283
по днк
#68 #752287
>>752281

> Дали поддержку ндк, не давай пердолится в жопу и писать все на плюсах


> Противопоставляет NDK и плюсы


> хватит меня за долбоеба держать

>>752292
#69 #752289
>>752282
Всегда пожалуйста, сам работаю на фултайме на удаленке по два дня из пяти, правда нужно увольняться, а то превратился в охуевшего ублюдка который бесится когда его тревожат в рабочий день звонком с работы.
#70 #752290
>>752278
Что-то я такого не видел. Есть ссылка?

Они интегрировали CLion в Android Studio и новый декомпилятор, но про NDK я ничего не видел нового
>>752291
#71 #752291
>>752290
А, я сам не знаю. Краем уха слышал как ребята на перемене в столовке обсуждали
#72 #752292
>>752287
Ты рахит? Ты хочешь на ндк писать всю апликуху?
Неужели не очевидно что я имел ввиду юзать нужные элементы типа карт на ндк, а все остальное на жабе? Я кажется написал это дословно.

>анон сказал про карты на плюсах, так сделайте вы карты на плюсах а все остальное на жабе, благо так можно делать



Еще вопросы будут?
>>752298
#73 #752293
>>752275
Мне всё ещё еклипс больше нравится.

Помню в старых версиях студии на хоткей, который текстовое поле показывает, куда можно команду писать, можно было написать new activity и новое активити делалось. Потом я всю зиму пользовался еклипсом прост)) и вот скачал свежую студию. Там этот хоткей вообще в говно скатили. Какое-то говно предлагает, настройки студии находит, new activity не может. Я что-то не так делаю?
>>752295
#74 #752295
>>752293

>Мне всё ещё еклипс больше нравится.


Ну и пушка. Каких говнарей в тред занесло.
#75 #752296
>>752295
Ладно, я начинаю понимать, что мне студия больше нравится.

Но Jetbrains — пидоры. IDE платными делают. Пиздец. Вот еклипс — бесплатный
>>752298>>752301
#76 #752297
>>752295

>Помню в старых версиях студии на хоткей, который текстовое поле показывает…



Так вот в еклипсе Ctrl+n ваще классно работает
#77 #752298
>>752296
>>752292

Блядь, с кем я сижу в одном треде...
>>752301
#78 #752301
>>752298
С адекватами которые рушат твой манямир?

>>752296
Потому что они делают иде у которой практически и конкурента нету, а эклипс говно устаревшее, его никто никогда не купит.
>>752302
#79 #752302
>>752301
Так его никто и не продаёт.
>>752303>>752304
#80 #752303
>>752302
Все так говорят, а ты купи еклипс
#81 #752304
>>752302
В это и смысл. Спрос и предложение.
#82 #752476
Аноны, как нормально выйти из приложения не из главного активити в андройде 5 и выше? System.exit(0) нормально работает на версиях ниже. А лоллипоп ужде не сохраняет параметры
>>752528
#83 #752527
>>752126
что ты забыл в моем треде блять! какой js блять!
давай выпиливайся отсюда!
>>752961
#84 #752528
>>752476
finish()
#85 #752532
>>752295

> говнарей


Значение знаешь?
Алсо, андроид студию не люблю из-за системы сборки. С одной стороны, это круто и удобно, с другой — невероятно медленно. Сидишь по 20 секунд ждёшь, пока приложение сбилдится после смены 1 строчки кода.
>>752566
#86 #752566
>>752532
аа, в еклипсе ant юзаешь? я тож люблю, еще maven норм. а ентот градле, ну его, хистерская хуйня
>>752576
#87 #752576
>>752566
Нет, без анта, встроенным билдером.
#88 #752624
Попробовал запустить хеллоу ворлд в студии на своем немного старом ноуте, он 5 минут потупил и вылетел с ошибкой о недостатке памяти. Есть какие нибудь варианты для днищ со слабым железом?
>>752639>>752647
#89 #752639
>>752624
IDEA Community?
>>752642
sage #90 #752642
>>752639
Что то же самое?
>>752645
sage #91 #752645
>>752642
Нет другое
>>752662
#92 #752647
>>752624
блокнот + консоль
sage #93 #752662
>>752645
Android Studio — это IDEA CE с другим сплэшскрином.
>>752673
sage #94 #752673
>>752662
А где инстант-ран, поддержка байдингов, редактор строковых ресурсов, редактор тем?
>>752733
#95 #752733
>>752673
В пизде Android Studio, вместе с ConstraintLayout-ом.
>>752803
sage #96 #752803
>>752733
В этом и суть
#97 #752858
Антуаны, кто нибудь пользовался связкой retrofit + rxandroid? Я нихуя понять не могу как это всё работает. Гляньте, я для поиска юзеров на гитхабе правильно сделал интерфейс и класс?
http://pastebin.com/NUaSrwDa

Пример запроса —https://api.github.com/search/users?q=поисковыйзапрос

Пример ответа сервера:
{
"total_count": 7498,
"incomplete_results": false,
"items": [
{
"login": "liblfds",
"avatar_url": "https://avatars.githubusercontent.com/u/2772362?v=3",
"html_url": "https://github.com/liblfds",
и т.д...
},
{
"login": "zensh",
"avatar_url": "https://avatars.githubusercontent.com/u/863754?v=3",
"html_url": "https://github.com/zensh",
и т.д...
},
и т.д.
]
}
#98 #752878
>>752858
Observable<Github>
>>753430
#99 #752900
>>752858
Нету сеттеров.
Попробуй запусти, че раньше времени спрашиваешь?
#100 #752958
>>752171

> самую мощную технологию веба на данный момент в адаптивности - т.е. бустрап


Можешь дальше не обсираться, ты и так уже по уши в говне.
Бутсраповский грид - это костыль для браузеров, не поддерживающий 'display: flex' и 'display: grid'.
В отличии от тебя, я умею верстать и могу сделать аналог бутстраповского грида на CSS без помощи интернета. Я понимаю как он работает и понимаю его ограниченность.
А для тебя вёрстка кажется магией, поэтому ты дрочишь на популярные фреймворки.
Ты ещё, блять, скажи, что jQuery - это самая мощная технология веба на данный момент в селекторах и ajax-запросах.
>>753061>>753066
#101 #752961
>>752527
У вас React Native в шапке есть, вот и зашёл.
#102 #753061
>>752958
Фронтенд макака ворвалась и решила пояснять за жизнь?
>>753117
#103 #753066
>>752958

>это костыль для браузеров, не поддерживающий 'display: flex' и 'display: grid'.


>костыль для браузеров


Мне кажется просто твоя технология говно раз не поддерживается 3 - 5 браузерами?
>>753114
#104 #753114
>>753066
Не умеешь пользоваться caniuse?
Давай помогу:
http://caniuse.com/#search=flexbox
>>753152
#105 #753117
>>753061
А ты думал, раз сидишь в Android трэде то в вебе никто не разбирается, и можно пиздеть что попало про веб с видом эксперта?
>>753150
#106 #753150
>>753117
Без вида эксперта, но даже не спорь, бустрап сейчас юзают все фронтендщики.
>>753200
#107 #753152
>>753114

>Не умеешь пользоваться caniuse?


Нахуй оно мне?
#108 #753200
>>753150
На предыдущей работе делал UI для системы мониторинга, верстал все на flexbox, ибо требовалась поддержка только Chrome и Firefox.

Далее, если ты погуглишь, то найдешь много блогпостов на тему того, что бутстрап не нужен т.к. определяет слишком много глобальных стилей (в отличии от foundation который можно использовать через sass миксины или модульного basscss).

И вообще, бутстрап создавался в Твиттере для прототипирования, а не для использования в конечном продукте. Тут, кстати, много аналогий с Ангуляром, который тоже создавался не для продакшена, и не используется компанией-создателем в своих продуктах. У обоих большая аудитория, но она целиком и полностью состоит из ньюфагов, желающих наговнякать что-нибудь не вникая в детали. А прошаренные люди шарахаются от этих фреймворков как от обоссанных бомжей.
>>753213>>753344
#109 #753213
>>753200
съебите уже в жс тред
#110 #753344
>>753200

>Бустрап


>Ангулар


>Ньюфаги


ты толстишь откровенно
#111 #753429
>>752247
про дизайнера: а кто по-твоему все ебаные размеры в dp должен указывать ? Не программисту же этой ебалой заниматься ?)>>752858
Что именно ты не можешь понять ? Ты получаешь не Call<NonameClass> , а Observable<Ressponse<NonameClass>> ну или Observable<NonameClass> и работаешь дальше с этим
#112 #753430
>>752878
Удобнее все же использовать Observable<Response<GitHub>> для того чтобы можно было юзать .code() и не париться с получением кода ошибки
#113 #753437
Аноны, а какие сегодня (в 2016-м) альтернативы AsynkTask'у?
>>759486
34 Кб, 375x159
#114 #753454
Аноны, что за хуйня, помогите, будьте добры.
Клонирую проект с гитхаба, делаю пару изменений в коде, а потом возникает пикр при отправке апк на приложение. Студия самая последняя, со всеми обновами, с Canary. В чём проблема?
А ещё в чём проблема грэдла на 2 минуты?
P.S. Буквально 2 недели назад такого не было.

Сам грэдл - http://pastebin.com/hypVVjPK
Лог ошибки
$ adb shell pm install -r "/data/local/tmp/com.huy.pesda"
pkg: /data/local/tmp/com.huy.pesda
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

Installation failed since the APK was either not signed, or signed incorrectly.
If this is a Gradle-based project, then make sure the signing configuration is specified in the Gradle build script.
Error while Installing APK


P.P.S. У ТЕБЯ ВИСНЕТ и все подобные ответы не принимаются, у меня макбук про, студия не виснет тут.
#115 #753456
Есть ли какой-то способ в кастомной view напрямую инициализировать гугл v2 карту ?
>>753460
#116 #753457
>>753454

> Installation failed since the APK was either not signed, or signed incorrectly.


> If this is a Gradle-based project, then make sure the signing configuration is specified in the Gradle build script.

>>753471
61 Кб, 459x497
#117 #753458
>>753454

> com.huy.pesda


Ну что за быдло здесь сидит.

Поставь стабильную версию студии
>>753471
#118 #753460
>>753456
Есть MapView, который можно пихать в любой контейнер. Только события лайфцикла передавать не забудь.
>>753462>>753463
#119 #753462
>>753460
Хмм, а пример не подкинешь ? У меня почему-то MapView нуль вместо карты выдавал при использовании getMap()
>>753466
#120 #753463
>>753460
И да, а что ему в onCreate то передавать ? т.е. он хочет Bundle
>>753467
#121 #753466
>>753462
Потому что getMap deprecated. getMapAsync
>>753470
#122 #753467
>>753463
Продублируй методы жизненного цикла в свою кастомную вьюху, а оттуда вызови их у MapView.
>>753472
#123 #753470
>>753466
Спасибо, щас на эмуляторе забью свой гугл плэй аккаунт, посмотрим что будет
#124 #753471
>>753457
Ну и нахуй ты это переслал?
>>753458
Тупо заменил свои названия. Стабильную версию студии ставить не комильфо, там нет ConstraintLayout, а я уже использую его в другом проекте.
>>753481>>753592
#125 #753472
>>753467
я onCreate каким макаром могу в чем-то унаследованном от View сделать ?
>>753480>>753483
#126 #753478
Странно, может быть проблема эмулятора, в чем я сомневаюсь, но карты пустые, есть только кнопка определения местоположения, надпись Google и серый background
#127 #753480
>>753472
Он имел в виду конструкторы
>>753484
#128 #753481
>>753471
Дурачок какой
#129 #753483
>>753472
Берешь и в onCreate своей активности вызываешь onCreate у MapView. В чем твоя проблема?
>>753484
#130 #753484
>>753480
>>753483
В том что нужно внутри View это делать. Не внутри активности
>>753486
#131 #753486
>>753484
А ты у своей вьюхи не можешь создать метод onCreate?
>>753497
#132 #753497
>>753486
а что из этого onCreate мне передавать в onCreate mapView то блять ?!
>>753501
#133 #753501
>>753497
Сейв бандл активности или фрагмента
>>753503
#134 #753503
>>753501
Ты тупой или что ? Сука, говорю тебе, все должно быть во View. Хули ты такой непробиваемый то
>>753508
#135 #753506
Да, к слову, снова давняя моя ошибка встретилась с картами, суть: все управляющие элементы карты показываются, но вот вместо самой карты клеточная сетка на сером фоне. По клику часть подгружается.
>>753515
#136 #753508
>>753503
Если ты такой пиздатый, расскажи это гуглам, чтобы они убрали onCreate, onPause, onResume, onLowMemory и др. из MapView.
А сейчас, либо прокидываешь вызов этих методов, либо идешь нахуй.
>>753511
#137 #753511
>>753508
маму же твою, хули ты советчик такой, не читаешь вопросов а потом очко от ожогов мажешь ?
>>753517
#138 #753515
А, вроде как нашел косяк по причине которого >>753506
onResume по завершению коллбэка нужно делать
#139 #753517
>>753511
У тебя блять есть кастомная вьюха, в чем твоя проблема добавить в нее onCreate(Bundle) и вызвать этот метод в onCreate активности?
Нет, буду вонять и нести хуйню, что все не то, и все не так.
>>753521
#140 #753521
>>753517
В том что вьюха полностью абстрагирована, доступ к ней получить из активности не нужно и нельзя
>>753522
#141 #753522
>>753521

> В том что вьюха полностью абстрагирована


Потому что ты так захотел? Гуглы захотели по другому, и причины на то у них были.

> public class MapView extends FrameLayout


> Users of this class must forward all the life cycle methods from the Activity or Fragment containing this view to the corresponding ones in this class. In particular, you must forward on the following methods:



> onCreate(Bundle)


> onResume()


> onPause()


> onDestroy()


> onSaveInstanceState()


> onLowMemory()



Либо делай фрагментом, либо прокидывай жизненный цикл. Другого не дано.
>>753528
318 Кб, 245x130
#142 #753528
>>753522
Вот ведь гуловцы говноделы, сначала они говорят что View должны быть абстрагированы от лайфсайкла
, а потом сами же лепят вьюхи которым нужны эти методы.

Да и вообще это же полная хуйня их onPause/onResume и тд - хочу встроиться в жизненный цикл фрагмента,
так надо делать касмтомные классы на всех гребанные реализации (Fragment, DialogFragment, MapFragment, BottomSheetDialogFragment и тд).
Нет чтобы сделать события Resume/Pause... что бы откуда угодно можно было приатачиться.
>>753531
#143 #753531
>>753528
MapFragment на то и Map, что там уже это реализовано. Ну и никто тебе не мешает обмазываться нестед фрагментами
>>753698
97 Кб, 1959x1959
#144 #753592
>>753471

>Тупо заменил свои названия. Стабильную версию студии ставить не комильфо, там нет ConstraintLayout, а я уже использую его в другом проекте.


Д - долбоеб.
>>753719
#145 #753698
>>753531
только вот MapView нифига не MapFragment, а коли уж я flow-блядина, то мне MapFragment использовать ne cocher. В итоге поебавшись сделал нормальную отработку жизненного цикла, пришлось маленько абстракцией пожертвовать но хуй бы с ней, работает и на том спасибо
>>753703
#146 #753703
>>753698
Карты юзают плейсервисы, а они в себе могут юзать хоть небо хоть аллаха, потому и не сделали как обычную вьюху.
А лайфсайкл нужно соблюдать на уровне ОС.
Так что так.
>>753730>>754629
#147 #753719
>>753592
Адекватные советы по теме будут? Или это всё, на что тебя хватило?
>>753726
#148 #753726
>>753719
Не устанавливай превью билды блядь и тем более не юзай в продакшене, самый адекватный совет. Лучше не будет.
>>753989
#149 #753730
>>753703
Значит надо было вынести часть которая работает с лайфсайклами в отдельный класс и передавать туда ссылку на вьюху.

Но что бы это работало актитити и фрагменты должны:
1) Либо реализовывать единый интерфейс, типа такого
interface LifecycleManager {
void addOnResume(Runnable callback);
void remvoeOnResume(Runnable callback);
...
}


2) Либо хранить его инстанц внутри (как на FragmentManager или LoaderManager) и возвращать ссылку на него
public LifecycleManager getLifecycleManager();
>>753733>>753736
#150 #753731
>>753454

>у меня макбук про


Выебнулся так выебнулся, это жи самая мощная машина в мире.
#151 #753733
>>753730
Охуеть, ньюфажина рассуждает о проектировании сдк.
Если серьезно, то если сделали значит по другому их костыли не работают.
>>753765
#152 #753736
>>753730
Вместо одного класса теперь два, и по отдельности они не работают.
Годно придумал.
>>753765
#153 #753765
>>753733
То что они костыли делают для меня не новость, все такие over 3 года в Android деве

>>753736
В этом и суть Single Responsibility Principle
>>753773>>753792
#154 #753773
>>753765

>over 3 года


ахах, показатель, да
>>753778
sage #155 #753778
>>753773
Как ни крути на 2 года 11 месяцев больше твоего
#156 #753792
>>753765

>В этом и суть Single Responsibility Principle


Вообще-то нет, МапВью имеет одну задачу, работа с картой, то что карта в себе требует лайфсайкл уже другой вопрос.
Да и этот принцип довольно уебищным и гибкий когда абстракция на высоком уровне.
119 Кб, 1280x611
#157 #753800
У меня огромный 5 летний проект с миллионом настроек и конфигураций с кучей намешанного дерьма которое чуть потянешь не в ту сторону и все рухнет нахуй. На тестирование забит болт, так как ЗА СТАБИЛЬНОСТЬ И СКОРОСТЬ РАБОТЫ НЕ ПЛАТЯТ, А ПЛАТЯТ ЗА ФИЧИ, меня это бесит и мне кажется что я деградирую копаясь в этом кале. Посоветуйте где посмотреть как пишут код под андроид настоящие профи, чтобы все было чистенько-аккуратненько с линтом, прогуардом, без текущих активити, интентов, аллаха и мультидексов.
>>753814>>753862
#158 #753814
>>753800

>У меня огромный 5 летний проект с миллионом настроек и конфигураций


Такое бывает на ведре?
>>753824
#159 #753824
>>753814
Ну так B2B, не всем же чатики и просмотрщики сайтов и картинок писать.
>>753852
#160 #753852
>>753824
Если этой хуйне 5 лет то там пиздос должен быть, столько инструментов появилось даже на уровне сдк.
Что с рантайм пермишенами?
>>753856
#161 #753856
>>753852

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


Ну так а я про что, пиздос лютейший. Я внедряю кончено моднявые штучки иногда в новых вичах, но это как мертвому припарка.

>Что с рантайм пермишенами?


Забил на них, поставил targetSdk 22
>>753857
#162 #753857
>>753856
Сочувствую. Надеюсь хоть зп и офис норм.
#163 #753862
>>753800
Работал на таком проекте пару лет, ну и сам во многом создатель этого пиздеца.
В итоге уволился (и тебе советую) и оставил разгребать это каким-то джунам :)

Крупные проекты рано или поздно один хрен в такое превратятся,
если не делать переодически серьезный рефакторинг (на который никогда не выделяют время).
>>753877
#164 #753877
>>753862
говоришь такой, плюс 50% к зп, или я ухожу
если говорят уходи, говоришь такой, когда поймете что все плохо, позвоните мне, но тогда будет + 100%
профит
>>753885
#165 #753885
>>753877
Берут тебя на +50% на два месяца и дают джуна подручного.
#166 #753989
>>753726
Я не в продакшне, а для себя.
3 Кб, 254x381
#167 #754096
Джентельмены, как такую штуку реализовать?

Есть тулбар, есть лист и под ним ещё лист.

Я не знаю какие элевейшены задавать.

По гайдлайнам toolbar elevation — 4dp.
Я хочу чтобы, допустим, у белого листа было 16dp сколько поставить?. Получается, что мне надо тулбару выставить 16dp + 4dp, белому 16dp, серенькому 0dp?

Тогда ещё вопрос, тулбар в отдельный xml файл вынес и потом его инклудаю в активитях. В xml указал элевейшен. Как мне его переопределить, когда я его инклудаю?
>>754124>>754141
#168 #754124
>>754096
Мне кажется твоя проблема в марджинах. падинги хуево смотрятся если их делать как у тебя в пике.

Никак.
>>754126>>754133
#169 #754126
>>754124
елевейшены а не падинги
#170 #754132
>>750609 (OP)
Анон, есть проблема. Не добавляет данные в listview. Я просто уже не знаю где рыть. Проблема в методе listenNewMessages(), метод displayMessage(chatMessage). В остальных местах все работает как надо. Хелп.
http://pastebin.com/tMphiKxP
>>754134>>754292
#171 #754133
>>754124
Мне нравится как на пике. Плюс, пик с гугловских шайдлайнов
#172 #754134
>>754132
может у тебя в 137 строке надо вывести ex?
#173 #754141
>>754096
если надо 4dp - ставь 4dp, если 16 - ставь 16, в чем проблемы? Ничего высчитывать, складывать не надо
>>754143>>754144
#174 #754143
>>754141
но да elevation работает только с лолипопа
>>754145
#175 #754144
>>754141
Если я беленькой поставлю 16, а тулбару 4, то тулбар тень на беленькую не отбрасывает
>>754149
#176 #754145
>>754143
< Loli не нужны
>>754150
#177 #754149
>>754144
ну офк, потому что он выше тулбара получается, на пике вроде и у того, и у того 4dp
#178 #754150
>>754145
Это всё я же.

Почему все не обновятся до нормальной версии?
>>754153
#179 #754153
>>754150
спроси это у производителей, даже гугл поддерживает свои мобилки ~2-3 года и потом кладет хуй, аппл в этом плане молодцы
>>754174
#180 #754174
>>754153
Пидоры. Мне теперь свой второй нексус 7 менять надо будет с приходом 7 андроида =(((((
>>754794
#181 #754292
>>754132
:237 ты создаешь адаптер, но не присваиваешь его ListView
12 Кб, 476x364
#182 #754307
кароч если в студии создать активити с drawer из дефолтных шаблонов, то в сгенерированном коде можно увидеть пикрелейтед
absolutely disgusting
#183 #754313
ОП, сука, еще 10 тредов назад просил добавить в шапку годную книгу для начинающих. "Head First. Программирование для Android"
>>754424
#184 #754315
>>754307
Альтернатива switch или Map<Int, ?> ?
#185 #754345
>>754315
switch
#186 #754355
>>753454
Бамп вопросу.
Теперь я уверен, что дело не в Canary билде. Пробовал удалять приложение с телефона, чистить, ребилдить проект. НЕ ПОМОГАЕТ. Молю о помощи, ананасики.
И да, ОП-хуй, добавь в шапку ссылку на единственную конфу по андроиду в телеграме - telegram.me/AndroidChan
sage #187 #754356
>>754355
Все иди нахуй, мало того что ты дебил разрабатывающий на превью билдах, так еще социоблядок
>>754365>>754717
sage #188 #754357
>>754355
Пускай тебе в твоей сраной конфе и поясняют, хули ты сюда приперся
>>754365>>754717
#189 #754363
>>754355

>И да, ОП-хуй, добавь в шапку ссылку на единственную конфу по андроиду в телеграме - telegram.me/AndroidChan


Она не единственная.
>>754717
#190 #754365
>>754356
>>754357
Двачую этих и конфа у вас типичное унылое говно про то, кто как посрал и как добавить кнопку в лейаут.
4 Кб, 150x150
Русские мобильные конференции #191 #754399
Чет гляну программу очередной русской конфы по мобилками http://mobiusconf.com/#schedule

Боже как это банально, избито (было уже на Google IO):
"как правильно делать очередную-хуйню-View" и "как обойти эти костыли в Android/iOS".

Единственное интересное это про Scala/Kotlin, да и там будет "введение в язык" (чего на ютубе и так полно).
#192 #754410
>>754315

> Map<Int, ?>


Никогда так не делай, если тебе не важен порядок хранения.
>>754417
#193 #754417
>>754410
Дай угадаю "стажер" ты на это наткнулся в своем коде надо было сначала книжки читать?

А вообще как думаешь для switch и if из примера важен порядок?
>>754439
#194 #754424
>>754313
иди сам картинки рассматривай, по андроиду не встречал годных книг, да они и не особо нужны
#195 #754439
>>754417

> Дай угадаю "стажер" ты на это наткнулся в своем коде надо было сначала книжки читать?


Что?

> А вообще как думаешь для switch и if из примера важен порядок?


При чём здесь тот пример? Я сказал, что не стоит использовать Map с Integer в качестве ключа вообще.
>>754443
#196 #754443
>>754439
Стажер мы это и так знаем, тк книжки читаем.
>>754446
#197 #754446
>>754443
Судя по тому посту — нет, не все.
Кстати, я не стажёр.
>>754451
#198 #754451
>>754446

> Кстати, я не стажёр


Ну простите "сремящийся-в-стажеры школьник".
>>754453
#199 #754453
>>754451
Опять мимо. У тебя осталась одна попытка.
>>754470
sage #200 #754470
>>754453
ОК, теперь я тебя буду звать просто:

НУФАНЯ
У
Ф
А
Н
Я
>>754490
43 Кб, 604x452
#201 #754490
>>754470
Снова промахнулся. Но не расстраивайся, держи утешительный приз.
#202 #754516
>>754307
В этом нет ничего плохого.
>>754315

>Map<Int, ?>


В этом тоже.
>>754589
#203 #754589
>>754516
Это нелогично, не ? Хотя в исключительных ситациях м.б. Но они пиздец какие исключительные
>>754593
#204 #754593
>>754589
В том примере какой в коде, ифом делать лучше потому что если это модуль апликухи, то ты не можешь юзать идшники как константы.
Если это твоя апликуха то можно свичем.
Мапой эту штуку делать верх дибилизма в данном случае, ладно бы у нас делегаты были.
>>754698
#205 #754629
>>753703
По итогу просто сделал при том или ином триггере лайфцикла запись/получение/чистку данных о карте и соответственно теперь просто в onMapReady ставлю сохраненную CameraPosition
#206 #754698
>>754593

>В том примере какой в коде, ифом делать лучше потому что если это модуль апликухи, то ты не можешь юзать идшники как константы


шта?
>>754783
#207 #754717
>>754356
>>754357
Сём, хватит.
>>754363
В телеге - единственная, другой я не нашёл.

Причём тут социоблядство? Ну откатился я с превью билда, проблема-то осталась. Или по делу сказать ничего уже не можете?
>>754720
#208 #754720
>>754717
Ты указал signingConfig в градле?
>>754722
#209 #754722
>>754725
#210 #754725
>>754722
key.jks по какому пути лежит?
>>754761
#211 #754761
#212 #754783
>>754698
Блять, сделай помимо апликухи еще встраиваемый модуль. Проджект стороний. Хз как тебе еще сказать.
>>754788
#213 #754788
>>754783
при чем тут if ?
>>754822
#214 #754794
>>754174

CyanogenMod же
#215 #754797
>>754307
НожДляМасла поможет
#216 #754800
>>754355

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


Это говно здесь не нужно.
#217 #754822
>>754788
При том что свитч с ресурсами не работает в модулях.
>>754851
#218 #754851
>>754822
а if с ресурсами работает, да?
>>754945
#219 #754945
>>754851
Ты для начала прочти как свитч работает и как иф.
Да иф с ресурсами работает.
>>754987
#220 #754987
>>754945
проиграл с дауна в голос
>>755004
#221 #755004
>>754987
С себя что-ли?
С какими долбоебами в треде сижу, не понимают что пиздят, какие-то блять мапы суют.
Сука ну и даунята.
>>755012>>755015
#222 #755012
>>755004
найс манёвры
>>755026
#223 #755015
>>755004
Ты можешь нормальный пример привести?
Тоже не понимают чем switch хуже.

другой анон
>>755026
#224 #755026
>>755012
Маневры у тебя в жопе тупоголовый.
>>755015
Блять, он не хуже, он не работает если сделать свитч с R.id.что-то там и поместить код не в главный проект, а в дополнительные модули - читай либу.
>>755030>>755033
#225 #755029
Тем временем гугл выиграл суд у оракла.
#226 #755030
>>755026
поехавший, свич у него не работает, а иф работает, пиздец просто
>>755032
#227 #755032
>>755034>>755234
#228 #755033
>>755026
Ну емое, ты мог сразу объяснить что не работает тк:

"В доп. модулях поля в сгенеренном классе R.id не final, а switch работает только с константами".

P.S. А вот switch (when) в Kotlin работает и с такими полями.
>>755035
#229 #755034
>>755032
норм
#230 #755035
>>755033
Вообще все началось с уебана который доебался до ифа, я просто сказал что этому есть место и где тоже сказал.
Потом в меня полились тонны мочи, нахуй мне что-то объяснять?
#231 #755132
>>753454
Бамп вопросу.
http://pastebin.com/9pPafJJ4
Новый грэдл, убрал оттуда скам всякий, нихуя не взлетает. Пробовал подписывать вручную, удалять debug.keystore, даже .jks пересоздал - не помогло. Какие ещё варианты, ананасы?
>>755138>>755139
#232 #755138
>>755132
Убери вообще signing, пусть твоим дефолтным подписывается.
>>755149
#233 #755139
>>755132
версия градла
>>755149
53 Кб, 708x353
#234 #755149
>>755138
Убрал, смотри пасту.
>>755139
пикр
>>755161
#235 #755161
>>755149
это плагин, даун.
тебя про версию gradle спросили
>>755164
20 Кб, 309x139
#236 #755164
>>755161
Простите аутиста.
>>755198>>755220
#237 #755198
>>755164
Откатывай плагин до стабильного: 2.1.0
>>755231
#238 #755220
>>755164
И саму студию тоже
>>755231
#239 #755231
>>755220
>>755198
Не прокатило. Я уже откатывался до старой студии.
>>755236>>755243
#240 #755234
>>755032
как там в 2011?
#241 #755236
>>755231
переставь винду
>>755259
#242 #755243
>>755231
А плагина в buid.gradle?
>>755259
#243 #755258
Котаны, как мне почистить проект от говна?
Дохуя скопилось всяких файлов непонятных, т.к. проект был создан еще когда эклипс был актуален.
Как понять - какие файлы можно грохать?
>>755262
#244 #755259
>>755236
У меня мак
>>755243
Вместе со старой студией был старый грэдл. Не помогло.
>>755260>>755278
#245 #755260
>>755259
дык на мак же ставится винда
>>755264>>755301
#246 #755262
>>755258
В lint есть проверка на используемость ресурсов.
#247 #755264
>>755260
Вот этого двачую. Уверен, что это решение поможет
#248 #755278
>>755259
Скриншот сюда давай, что было там видно:
1) что старя студия
2) что в build.gradle/dependencies стоит 2.1.0
3) ошибка
>>755301
#249 #755301
>>755260
Но нахуя она там нужна?
>>755278
Опять это говно ставить?
>>755304
#250 #755304
>>755301
а другие проекты собираются?
>>755309
#251 #755309
>>755304
Да, все.
>>755316
#252 #755316
>>755309
ну почисти проект, еба
>>755333
#253 #755333
>>755316
Чистил и ребилдил. Это уже было.
>>755375>>755627
#254 #755375
>>755333
Винду перестанови
>>755453
#255 #755453
>>755375
Просто иди нахуй.
#256 #755627
>>755333
фоткай своё очко, я смогу помочь
#257 #755837
Обязательно ли название приложения в маркете должно один в один повторять название в манифесте?
#258 #755874
Где и как хранить Map<String, Set<Long>>? Ключей штук 10, значений в наборе ~10-200. Нужно просто не терять между запусками приложения. Для sql мелковато, для sharedprefs жирновато.
>>755889
#259 #755889
>>755874
Сериализуй и сохрани в виде бинарника.
55 Кб, 730x450
#260 #755966
>>750609 (OP)
Какими технологиями для отрисовки графики обычно пользуются успешные Android разработчики?
Не одними же Layoutами всё верстают, например, пикрелейтед.
>>755976>>755986
#261 #755976
>>755966
NDK + OpenGL.
>>755979>>755995
#262 #755979
>>755976
NDK для меня не вариант, пишу на Java. Иные варианты?
>>755999
1038 Кб, Webm
#263 #755986
>>755988
#264 #755988
>>755986
Что не так?
#265 #755995
>>755976
разве то что на пике не луще через какой-то движок написать?
>>756013
#266 #755999
>>755979
В порядке убывания:
LibGdx / Slick2D / LWJGL
Последний - API к OpenGL
>>756001>>756004
#267 #756001
>>755999

>LibGdx / Slick2D / LWJGL


Это, как я понимаю, фреймворки и сторонние движки, верно? Этого бы мне не хотелось.
А вот OpenGL отличный вариант, но как в него вкатиться?
>>756168
#268 #756004
>>755999

>Последний - API к OpenGL


Вулкан?
#269 #756013
>>755995
Конструкторы игр? В /pr/?
Уёбывай в /gd/ в свой Unity-тред.
>>756015
#270 #756015
>>756013
Да я другой анон, просто сказал что на опенгл какой-то вздрочь будет мне кажется.
26 Кб, 604x316
Крепитесь #271 #756022
Наплыв школьников-гейм-девелоперов уже начался.
#272 #756155
Сейчас заметил только, сдк занимает 30 гиг. Это норм?
>>756169>>756254
#274 #756169
>>756155
Много хуйни ненужной установлено.
У меня 9.8 Гб.
>>756243
#275 #756225
сап анон. крч пишу некую хуйню, и столкнулся просто с пиздец проблемой. есть listview или recyclerview, похую, в нем карточки, в карточке ебаных штук 40 TextView. вся это ебала листается пальцем вниз. и на отрисовке каждой карточки сука ебучая тормозит. заполнение карточки значениями я выпихнул в ASyncTask, стало тормозить меньше, но один хуй тормозит. кароч чо делать чтоб оно плавно листалось.
>>756249
#276 #756243
>>756169
Так само же предлагает установить ее с нуля, от чего отказываться?
#277 #756249
>>756225
Сразу пример кода адаптера кидай.
Можно еще пример иксемельки если итем большой.
>>756259
#278 #756254
>>756155
У тебя там образов эмуляторов дохуя просто.
>>756258>>756265
#279 #756258
>>756254
я с нуля сдк поставил, как почистить тогда?
#280 #756259
>>756249
это адаптер listview
<script src="http://ideone.com/e.js/wbgv45" type="text/javascript" ></script>

это асинктаск
<script src="http://ideone.com/e.js/s37c3D" type="text/javascript" ></script>

это xml карточки
<script src="http://ideone.com/e.js/y1UMzu" type="text/javascript" ></script>
#281 #756265
>>756254
Внезапно папка system-mages 30 гиг. 20 гиг на версию 23, и 10 на пререлиз Н.
Спасибо, удалил нахуй это говно.
#282 #756269
>>756259
Используй RecyclerView.
>>756271>>756272
#283 #756271
>>756269

использовал. никакой разницы
>>756273
#284 #756272
>>756269
там затычка проявляется в момент отрисовки нового cardview
#285 #756273
>>756271
Значит дело в твоём говнокоде
32 Кб, 604x372
#286 #756274
>>756259
У меня ссылка открывает окно в треть экрана, я не буду это читать.
#287 #756275
#288 #756276
>>756259
Нахуя тебе инфлейтер в адаптере? Конечно, у тебя всё тормозить будет. Убирай его.
#289 #756278
>>756259
мне кажется, проблема в этой поеботе - ru.workcal.ExpGridView
#290 #756279
>>756276
а куда его запхать?
#291 #756281
>>756276
Ты что псих? Несешь херню.
>>756282>>756286
#292 #756282
>>756281
А теперь увидел, нахер после консруктора еще инфлейторы создавать хуй знает.
#293 #756283
>>756276
Хуйню сказал и рад, пиздец.
>>756285>>756286
#294 #756284
>>756259
Блядь, ты еще и в асинктаске всё это делаешь. Ты ебанутый?
#295 #756285
>>756283
У него инфлейтер и в конструкторе и в гетвью создается.
>>756289
#296 #756286
>>756281
>>756283
Ну как хочешь, лол. Тогда и не удивляйся, что у тебя всё тормозит.
>>756288>>756290
#297 #756288
>>756286
это не я писал :)
#298 #756289
>>756285
Ну, это другое дело, получать его в конструкторе — явно лишнее.
А вообще он нигде не создается, на него постоянная ссылка в контексте хранится, это не может влиять на производительность.
>>756291
#299 #756290
>>756286
Инфлейтер в конструкторе сделать норма.
#300 #756291
>>756289
Да похуй, можно получить и в конструкторе и реюзать его везде.
А вот как это работает я хз, возможно там не просто ссылка.
LayoutInflater inflater = (LayoutInflater)ctx .getSystemService(Context.LAYOUT_INFLATER_SERVICE)
>>756292>>756359
#301 #756292
>>756291

> возможно там не просто ссылка.


А код глянуть, нет?
>>756293
#302 #756293
>>756292
Мне впадлу, я сериал смотрю.
#303 #756295
создание нового инфлейтора из гетвью убрал, ток один хуй ничо не изменилось
#304 #756359
>>756291

> LayoutInflater inflater = (LayoutInflater)ctx .getSystemService(Context.LAYOUT_INFLATER_SERVICE)


Палю вин
LayoutInflater inflater = LayoutInflater.from(ctx)

> А вот как это работает я хз


Один из паттернов же не помню какой. В контексте висит карта<string, object> со всеми сервисами, и ты по имени получаешь нужный.
>>756366>>756555
#305 #756366
>>756359

>Палю вин


Так говоришь будто бы это не известно хоть какому-то деву с опытом больше месяца.

>Один из паттернов же не помню какой. В контексте висит карта<string, object> со всеми сервисами, и ты по имени получаешь нужный.


Круто че, буду знать, в сорсы особо не лазил, не знаю что там, вдруг какая-то лейзи подгрузка или еще чего.
Алсо, сам юзаю эту штуку с мапой иногда, интересно как паттерн называется. А еще им удобно вешать делегаты
looking for a job offer #306 #756386
анончики подкиньте работы за еду. Моей зарплаты не хватает нихуя. Могу по вечерам и по выходным. В принципе плаваю как рыба в технология типа рхджавы, даггера батеркнайфа и ретрофита etc. Делаю все в MVP. Могу даже поучить по скайпу нубасов. Оставляйте контакты что ли...
#307 #756391
>>756386
upwork.com для даунов придумали, няш?
>>756411
#308 #756392
>>756386
Трудно верится что плаватель как рыба в довольно сложных технологиях и решениях не может себя прокормить.
>>756411
looking for a job offer #309 #756411
>>756392
а че там сложного то лол?
вот асунктаск это реально сложно.
>>756391
ага зарегался и тест прошел - у меня даже есть гугл плей с двумя аппами - да чето никто не бежит с деньгами ко мне
>>756415>>756417
97 Кб, 1959x1959
#310 #756415
>>756411

>а че там сложного то лол?


>Ровная архитектура с абстракциями.


>Депенденси инжекшн, особенно в виде даггера где куча всяких фич.


>АрИкс - функциональщина внедряемая в ооп.


>че там сложного

#311 #756417
>>756411
асинктаск сложно? Соболезную.
Тест на сколько баллов? И гп сюда вкинь. Ты сам должен подавать заявки на предложения заказчиков.
>>756419>>756493
#312 #756419
>>756417
Не корми зеленного. Я получаю свои 1200 и на еду хватает, нихуя из его перечня как следует не юзаю.
>>756421
#313 #756421
>>756419
Тебе сколько? Как работу нашёл? На собесах что спрашивали?
17-лвл студент(скоро бывшим буду), пашущий на дядю по знакомству за 25к.
>>756443
#314 #756443
>>756421
Лол, первый курс не школота?
23 уже, работать начал в 22 на 4 курсе, прогу учить целенаправленно но спустив рукава начал на 3 курсе, факультет итшный.
Что спрашивали не скажу так как спрашивают начиная от джавы заканчивая сервисами, но ничего сверхъестественного.
>>758502
#315 #756493
>>756417

>асинктаск сложно? Соболезную.


>Тест на сколько баллов? И гп сюда вкинь. Ты сам должен подавать заявки на предложения заказчиков.


Ну я кинул уже 10 и пока что пусто. Ну мб не как рыба но я знаю эти технологии и успешно их применяю. Гп кидать не буду ибо дианон. Теста на 3.15 но он не решает нихуя
#316 #756555
>>756359

> Один из паттернов же не помню какой. В контексте висит карта<string, object> со всеми сервисами, и ты по имени получаешь нужный.


Не совсем, там какая-то хуерга для ленивой инициализации, но если упростить — то можно считать, что там просто ассоциативный массив.
А LayoutInflater так вообще как поле класса хранится.
#317 #756630
HashMap<String, Long> map = new HashMap<>();
...
map.put(key, Long.valueOf(0))

Почему линт подсвечивает с unnecessary boxing? Нельзя же просто нуль передать?
>>756633
#318 #756633
>>756630
Ты в курсе что начиная с Java 1.5 есть АВТОБОКСИНГ?
>>756635
#319 #756635
>>756633
Да, в курсе. Но он не находит put(String, int), если просто ноль дать. Мне как-то особым образом инициализировать нужно?
#320 #756641
О, все, нашел - map.put(key, (long) 0).
>>756645
#321 #756645
>>756641
Еще можно: map.put(key, 0L)
>>756651
#322 #756651
>>756645
О, спасибо.
#323 #756847
Cherry Perry, если мы выпилим движущихся тянок, ты к нам вернёшься? Просто мне самому начал надоедать такой "динамический" концепт, согласно которому мы пилим всякую хуйню, которая придёт в голову. И да, у нас появился опытный и классный дизайнер.
>>756896>>757097
#324 #756896
>>756847
У вас деньги есть?
Могу присоединиться я.
другой анон
>>756935
#325 #756935
>>756896
Денег нет. Но в далёких планах запилить краудфандинговую кампанию.
>>756995
#326 #756995
>>756935
Расскажешь что вы пилите?
dlnam{c*usicANUS'+ayaPUNCTUM\f+ru
>>757088
#327 #757088
>>756995
Проверь почту.
}D wt.......ANUSgmq;AailPUNCTUMcb\$om
#328 #757097
>>756847
Еще один довод почему ненужно идти в чат в телеграмме.
#329 #757319
Мне нужно по данным с сервера генерировать относительно стабильные long айдишники (для адаптера). Элементы обязательно имеют одно уникальное поле, но оно строка (20-25 символов юникод) и не обязательно представляет собой число.

Я думал посимвольно сдвигами сделать, но что-то таксибе вариант. Порезанный SHA/MD5? CRC32? Присваивать самому и хранить мне лень. Как лучше?
#330 #757321
>>757319
hashcode?
>>757328
#331 #757322
>>757319
Можно лонги рандомайзером генерировать.
#332 #757328
>>757321
Вроде подходит, спасибо.
#333 #757335
>>757319
Если айдишники уникальны во время выполнения — завести переменную и инкрементировать её. Если всегда уникальны — порезанный md5/sha или вообще самому считать хэш строки. Вариант с отсутствием уникальности уже предложили.
#334 #757374
Есть пакет common, в нем лежат пара абстрактных классов и интерфейсов. Нужно создать util пакет со всякими статиками, адекватно ли будет положить его в common?
#335 #757377
Короче, собрал я разок проект с гугл плей сервисами 9 и все по пизде. Как быть? Не хочу переходить на fcm, я откатил обратно на 8.4, но не помогает блять.
>>757379
#336 #757379
>>757377

> все пошло по пизде


Информативненько.
>>757381
#337 #757381
>>757379
java.lang.IncompatibleClassChangeError: The method 'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' was expected to be of type virtual but instead was found to be of type direct

На стек не посылай, я думал здесь кто-то сталкивался с таким. Не хочу под firebase все в мыле переделывать.
>>757387
#338 #757387
>>757381
9.0.1 поставь, исправили
>>757389
#339 #757389
>>757387
Кхм, попробуй, спасибо.
#340 #757753
уважаемые хипстеры, поясните пердуну что там с gcm/fcm.
могу ли продолжить юзать gcm, и забить на новомодный firebase? зачем он нужен вообще?
#341 #757757
>>757753
файрбейз круче чисто внешне, да и кода поменьше будет. Всё интуитивно.
#342 #757815
Господа, я правильно понял суть SharedPreferences?
Я могу иметь несколько разных файлов(настроек) SharedPreferences для всего приложения и иметь к ним доступ из любой активити или фрагмента. А так же иметь несколько разных файлов(настроек) SharedPreferences для любого конкретного фрагмента или конкретной активити.
>>757881>>757921
#343 #757881
>>757753
Уважаемый пердун напомните мне про GCM:
1) Можно ли рассылать пуш всем юзерам, без указание конкретных senderId (или как там)?
2) GCM может сам показывать нотификаций "по умолчанию" или нужно обязательно Notification создавать и вызывать NotificationManager.show(...)?
3) Насколько увеличивается размер APK?

>>757815
SharedPreferences уникальны по имени в рамках одного приложения.
Формально это xml файлы в папке /data/data/<package name>/shared_prefs/ с именами которые ты передаешь в getSharedPreferences(...)
>>757917>>757921
#344 #757909
>>757753
По хардкору.
Теперь немного меньше кода.
Все остальное такое же примерно.
ГСМ работает как и работал.

Даже сделали миграцию с ГСМ на файербейс.
#345 #757917
>>757881
1. Шлёшь на адрес "/topics/global"
мимокрок-школьник
#346 #757921
>>757815
>>757881
Как правило, getDefaultSharedPreferences() достаточно, а что-то более сложное хранится в бд.
#347 #758085
У меня тоже вопрос по SharedPreferences.
Сохранение в них идет последовательно или параллельно?
Например, у меня есть такой некий код, который где-то в сервисе шлет через PendingIntent сообщение, а потом в onActivityResult оно обрабатывается так:

if(requestCode==ACTIVITY_AGENT_CODE && resultCode==KILL_PROCESS_CODE)
{
SharedPreferences.Editor editor= prefs.edit();
editor.putBoolean(IS_ACTIVITIES_ALIVE,false).apply();
editor.putBoolean(YPS_KILL_ORDER,false).apply();
android.os.Process.killProcess(android.os.Process.myPid() );
}

В результате IS_ACTIVITIES_ALIVE и YPS_KILL_ORDER часто так и остаются true, а вместо xml файла лежит такой же, только bak.
Как мне сделать, чтобы данные таки сохранялись в SharedPreferences перед killProcess? (его убирать нельзя, он нужен)

А еще, какая разница между
android:process=".updater"
и
android:process=":updater"
в манифесте? Вроде, и то и другое сделает сервис отдельным процессом. Или нет?
>>758134>>758466
#348 #758134
>>758085

> Как мне сделать, чтобы данные таки сохранялись в SharedPreferences перед killProcess?


Использовать commit вместо apply.
#349 #758466
>>758085
Есть какой-то смысл делать apply несско раз друг за дружкой?

> android:process=".updater"


Там как-то не совсем понятно про процесс с двоеточием. Мне видится так: двоеточие делает новый процесс приватным для твоего приложения. То есть если ты делаешь какую-то вундервафлю из разных приложений, которые шарят между собой процессы, :update запущенный в одном не будет пересекаться с :update запущенным в другом. В рамках одного приложения я даже не знаю есть ли практическая разница, но гугл советует ставить двоеточие. Позапускай и посмотри как оно распределяется по пидам или вроде того.
>>759248
#350 #758502
>>756443
а сервисы типа дофига экзотика ?
#351 #758507
>>756386
липовый скайп слеплю вечерком, поучишь ?) Я бы не отказался от небольшого пояснения за mvp и за пару тонких на мой взгляд моментов
#352 #758591
У кого был опыт с выкладкой приложений с чужыми авторскими правами?
Я написал кровлер для сайта-магазина (который не принадлежит мне), который собирает с него инфу и скидывает в бд на сервере. У бд есть рест-морда, к которой подключается приложение. При этом в приложении показываются и названия товаров, и их изображения. При этом в самом приложении покупки совершать нельзя, оно просто перекидывает на сайт.
Каким образом мне все это оформить в сторе, чтобы меня не пидорнули за нарушение авторских прав?
#353 #758627
Есть ли гайды на тему: создание API для взаимодействия с Bluetooth LE устройствами?
Ясен фиг, что полно туториалов на тему BT LE, но всё это только для приложений уровня hello world годится.
#354 #758660
Как забиндить сервис синхронно?
К примеру есть у сервиса метод do_action(), который юзер вызывает по нажатию кнопки и в итоге, если сервис еще не забиндился - получим NPE или не произойдёт ничего.
Как с этим бороться?
>>758663>>758717
#355 #758663
>>758660
Цеплять обработчик на кнопку только когда сервис забиндится, очевидно же, или делать ее кликабельной только после onBind, а до того момента кнопка должна быть тусклой.
#356 #758672
Котаны, не подскажете, как выпилить из realm скажем все объекты класса A у которых поле b имеет определенное значение c ? realm.clear(classname.class) не позволяет, а цикл, на каждой итерации делающий result.removeFromRealm(); походу просто не пашет.
>>758676>>758679
#357 #758676
>>758672
Не юзать реалм.
#358 #758679
>>758672
Попробуй так:
final RealmResults<A> result = realmInstance.where(A.class).equalTo("b", c).findAll();
realmInstance.beginTransaction();
result.clear();
realmInstance.commitTransaction();
>>758682
#359 #758682
>>758679

> clear


Выпилен с первой версией. result.removeAllFromRealm() или как то так.
>>758696
#360 #758696
>>758682

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

#361 #758717
>>758660
Расскажите, а как такое возможно, что сервис при нажатии на кнопку не будет забинден? Если я бинд делаю в onCreate, запуск и соединение — быстрая операция, сервис 100 раз успеет забиндиться, прежде чем пользователь нажмёт на экран. За исключением, быть может, ситуаций, когда сервис в другом процессе находится, но тут я понимаю уже.
>>758724
#362 #758724
>>758717
Ну вот googleApiClient хоть и не сервис (но внутри то там он есть), но как-то коннект не иногда происходит, возможно и у сервиса тоже что-то такое может случится.
>>758738
#363 #758738
>>758724
Ну, этот сервис в другом процессе находится, поэтому соединение может долго происходить.
#364 #758795
Посоны, а откуда брать новости о всяких новых плюшках для андроида? Типа коспиляция инфы о новых лэйаутах, новых версий сдк с чейнджлогами, новых версий популярных библиотек и прочего.
>>758801>>758924
#365 #758801
>>758795

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


https://github.com/ben-manes/gradle-versions-plugin
>>758805
#366 #758805
>>758801
Это не подходит, к сожалению. Нужно что-то более удобочитаемое, чем простое указание, что именно обновилось. Чтобы указаны самые важные изменения, описаны новые плюшки и т.д.
>>758806
#367 #758806
>>758805
Заходишь на гитхаб своей либы, открываешь CHANGELOG.md и радуешься жизни.
>>758807
#368 #758807
>>758806
Щас бы чейнджлоги каждый день по двадцать минут читать, в которых инфа о том, что теперь функция, которую ты не использовал, может принимать в качестве параметра новый объект, о существовании которого ты не догадывался. Или пытаться, например, понять по чейнджлогам, чем же ретрофит 2 выгодно отличается от предыдущей версии.
138 Кб, 347x329
#369 #758808
Что можно почитать хорошего про многопоточность в андроиде? Что бы объяснялось что лучше и когда использовать.
Читаю сейчас Java Concurrency in Practice 2006 года. Еще туторилы здесь http://docs.oracle.com/javase/tutorial/essential/concurrency , но дошел до использования всяких java.util.concurrent.locks.ReentrantLock, Executor Interfaces и охуел, мне кажется такое уже надо всяким мидлам и сеньорам знать.
>>758811>>758813
#370 #758811
>>758808
Посмотри курсы вандербильтского университета на курсере, можно не все, а первые 4-5 лекций. Каждая по полтора часа где-то.
>>758820
#371 #758813
>>758808
Алсо, жабадоки тут нерелевантны, потому что чистая жавамногопоточность в андроиде вообще не используется, максимум - простенький new Thread(new Runnable()).start(); А для многопоточности используются Handler+Message или AsyncTask
>>758821
#372 #758820
>>758811
Скинешь ссылку на курс? Что-то не могу найти
>>758822
#373 #758821
>>758813

> для многопоточности используются Handler+Message или AsyncTask


Как там в 2010-м?
>>758822
#374 #758822
>>758820
https://www.coursera.org/course/posaconcurrency
https://www.youtube.com/channel/UCt-Wvc_ojTzGLpjhruIXYSw/videos - поиск по Concurrency
>>758821

>Как там в 2010-м?


А что у тебя, в 2016м? Rx? Так это сторонняя либа.
>>758829
#375 #758823
>>750609 (OP)
Аноны, опять про MVP, допустим есть типичный пример: список итемов и детализация, т.е. активити с двумя фрагментами в ландскейпе, и с одним в портретной ориентации.
Как лучше реализовать тут MVP? Два презентера под каждый фрагмент? Тогда как заменять фрагменты? Сделать, чтобы фрагменты вызывали сами методы активити, и она уже сама решала че делать, это норм вариант? Или один презентер под активити, который будет отвечать сразу за два фрагмента?
>>758832
#376 #758828
Как можно сделать finish() для top-Activity в static контексте? Есть плохой вариант писать
static Activity activity=this;
где-нибудь в onCreate... Но после того как многократно поймал так NPE, больше не хочется.

Суть вообще такова, что есть BroadcastReceiver, который принимает 2 сообщения. Поймав первое он должен будет сделать finish, чтобы потухло на экране приложение и создалась видимость мгновенного его завершения. Второе сообщение уже будет немного позже (0.1 .. 2 секунды), и его обработка будет уже реально завершать работу. Но чтобы receiver пережил finish, он должен быть static, а в static нет доступа к activity. Вот эта рефлексия:
http://stackoverflow.com/questions/11411395/how-to-get-current-foreground-activity-context-in-android/28423385#28423385
выдает пустой Map, например. Но должен же быть какой-то менеджер или еще что-то, чтобы получить доступ к стеку, правда же?
56 Кб, 466x604
#377 #758829
>>758822
Ну хоть бы в early access
#378 #758832
>>758823
Слишком абстрактно расписал давай конкретнее. Так могу только сказать, что два презентера не нужны по определению MVP.

>чтобы фрагменты вызывали сами методы активити


Только если коллбэки. Фрагмент не должен иметь доступ к родительской активити.
>>758828
А если не статик ресивер сделать (бля, что это вообще за чудо), а просто интентсервис запускать? Он сделает работу, какую надо, и умрёт. А активити завершишь сразу, на это пофиг.
#379 #758833
>>758828
Ты хуйню какую-то нагородил.
#380 #758836
>>758832

> два презентера не нужны по определению MVP


Что ты несешь, больная скотина?
>>758837
#381 #758837
>>758832
>>758828
А, жопой прочёл вопрос, сорри. Пробовал регистрировать бродкастресивер не в контексте активити, а где-нибудь ещё? Или в манифесте, или сделать сервис долгоживущий?
>>758836
Сосни хуйца, ты не понимаешь сути мвп.
>>758849>>758875
#382 #758838
>>758832

>два презентера не нужны по определению MVP


почему?
мне понравился ответ тут https://toster.ru/q/225663 с двумя презентерами, что скажешь?
>>758843
#383 #758843
>>758838
А, это другое дело. Мне показалось, что ты решил лепить по презентеру для каждого фрагмента, тем самым нарушая саму концепцию мвп. Если презентер слой будет независимо от масштаба приложения предствлен только двумя классами, каждый из которых делает свою работу, то это норм.
130 Кб, 587x538
#384 #758849
>>758837
А ты понимаешь? Что-то не похоже.

У каждого View должен быть свой Presenter.
>>758851>>758853
#385 #758851
>>758849

>каждого View


Ну что давайте хуярить для всех вьюх по презентеру? Для каждого текствью?
Чего еще, добавить даже не не знаю.
>>758852>>758854
#386 #758852
>>758851
view в MVP != View в андроиде
>>758856
#387 #758853
>>758849
Ммм, бесполезные классы, вкуснаа. У меня сейчас проект на 50к строк, всё запихано в один презентер класс (строк 800 где-то), и при обновлении данных он просто уведомляет подписавшиеся на обновления фрагменты (просто паттерн обсервер с регистрацией на onAttach). Далее фрагменты получают уведомления, вместе с int кодом, который определяет, что именно было изменено, и если полученный код им важен, то они обновляют соответствующие вьюхи. У меня сейчас порядка 30-40 разнородных фрагментов и все они прекрасно работают по такой системе. Если бы я для каждого фрагмента делал бы презентер, я бы застрелился.
#388 #758854
>>758851
Ага, вот стало и понятно, в чем твоя проблема: ты не отличаешь View как компоненты архитектуры от класса android.view.View.
>>758856
#389 #758856
>>758852
По твоей логике для каждого фрагмента должен быть презентер, теперь если упустить фрагменты и заменить их на фловы допустим у тебя будут твои кастомные вью с разделением которое ты скажешь. И да это может быть 1 текствью, теперь вопрос, как остановится и перестать плодить ненужные вьюхи?

>>758854
Детектор чини.
>>758862
#390 #758857
>>758853
Ну и нахер тебе Presenter тогда? То, что ты делаешь, это не MVP.
>>758865
#391 #758860
>>758853

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


Да это же обычный eventBus, который все обсирают.
#392 #758861
>>758853
Я другой анон, так а куда ты вынес запросы например? Фрагменты же юзают разные запросы например по нажатию на кнопку а у тебя выходить один презентер со всеми листенерами?
>>758865
#393 #758862
>>758856
Какие еще фловы? О чем ты, болезненный?
>>758866
#394 #758865
>>758857
Бля, ладно. Разрешаю тебе ебаться дальше с кучей презентеров, а сам пойду попрограммирую вслать на полуавтоматизированном коде.
>>758861
Фрагменты по нажатию на кнопку отправляют каллбэк в активити, и та что-то делает. Либо формирует запрос на сервер (я использую ретрофит, запрос по коллбэку обычно обновляет мой не-презентер класс, который в свою очередь обновляет фрагменты), либо показывает другой фрагмент и активити (тут вообще не нужно никакого взаимодействия). Напрямую из фрагментов делать вызовы в презентер - зашквар, потом никогда не разберёшься, что откуда вызывается. Максимум - чтение данных из презентера, без изменения оных.
Ящитаю, что в идеале фрагменты должны вообще иметь ноль логики и управляться только за счёт вызовов родительской активити, но у меня в силу некоторых причин (отсутствие дизайна в начале проекта) не получилось это реализовать.
>>758874
#395 #758866
>>758862
Я о том что у тебя придурка вьюха это фрагмент, т.е. одновременно могут отображаться 2+ вьюх следовательно столько же презентеров будут работать. Такая абстракция ничем не мешает тебе делать презентер на каждый элемент и если начнешь пилить без фрагментов прекрасно это поймешь.
>>758871
7 Кб, 130x128
#396 #758868
>>758853

>всё запихано в один презентер класс (строк 800 где-то)


Ты сейчас жалуешься или хвастаешься?
>>758870
#397 #758870
>>758868
Показываю, какой у меня толстый презентер Это 800 строк простых геттеров-сеттеров.
>>758873
#398 #758871
>>758866

>начнешь пилить без фрагментов


не начну
>>758876
#399 #758873
>>758870
ну не переживай, потом отрефакторишь, когда время будет, станет нормальная архитектура
>>758878>>758885
#400 #758874
>>758865

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


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

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


В идеале нужно делать активити вьюхой и отказываться от фрагментов.
>>758885
#401 #758875
>>758837
не пробовал... Я пока не очень хорошо с ними знаком вообще. Знаю, что где-то должен лежать зареганный объект, принимать intent-ы и чего-то с ними делать. И что работает он по фильтру-по action. Погуглю манифест, спасибо. Только пока не понимаю как можно откуда-то издалека будет управлять этим Activity.
Все это вообще нужно было, чтобы пока сервис сделает все свои дела, отправит запросы о закрытии приложения и статусы, показать пользователю, что приложение потухло. Это не так, и после того как сервис все отработает, в контексте MainActivity еще надо было штуку одну сделать, но его живой объект уже не требуется. Просто не хочется, чтобы приложение тухло долгое зависящее от соединения время
#402 #758876
>>758871
В любом случае твой подход становится от этого не менее хуевым.
>>758881
#403 #758878
>>758873
Никогда
#404 #758881
>>758876
Это не мой подход, даун.
Ты уже обобрался, когда дал понять, что View от android.view.View не отличаешь. Твоё мнение никому теперь неинтересно.
>>758886
#405 #758885
>>758873
Ну давай, расскажи, как же мне отрефакторить? Неужели разбить на десяток классов, которые будут иметь такую же логику?
Ай в пизду, ты вообще, похоже, не понимаешь в программировании.
>>758874

>Слишком сильное заявление, тебе не кажется


Не кажется. Активити - вью компонент для связи с презентером. Если С презентером связана не только активити, но и фрагменты - это лишние связи в архитектуре.

>Рили у тебя не мвп, у тебя своя архитектура, твой презентер это практически ивентбас.


Хуй с ним, я, конечно, могу спросить, почему мвп исключает ивентбас, но только мне похуй. Я чистую реализацию ивентбаса никогда в жизни не видел и не собираюсь смотреть.
#406 #758886
>>758881
Придурок, это уровни абстракции, я тебе уже привел пример почему ты рахит с несколькими презентерами на экране одновременно.
#407 #758889
>>758885

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


да, где каждый класс выполняет свою работу, для этого и создавали ООП, это, видимо, ты чего-то не понимаешь в программировании
>>758894
#408 #758890
>>758885

>Не кажется. Активити - вью компонент для связи с презентером. Если С презентером связана не только активити, но и фрагменты - это лишние связи в архитектуре.


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

>Хуй с ним, я, конечно, могу спросить, почему мвп исключает ивентбас, но только мне похуй.


Почему исключает, нет. Просто ты ивентбас презентером называл.

>Я чистую реализацию ивентбаса никогда в жизни не видел и не собираюсь смотреть.


А это ты зря, ладно тут анонимный форум, но в реальности такие слова отметка долбоеба до конца жизни.
>>758894
#409 #758893
>>758885
Это ты не понимаешь в разработке приложений. Прочитай про SOLID на досуге, много нового узнаешь.
>>758894
#410 #758894
>>758889
Вы не правы, всего доброго.
>>758890

>А у тебя она как раз в активити.


Ну, я вынес все вызовы к серверу в отдельный класс. В активитях остались только сотни коллбэков от фрагментов, которые обрабатываются в 1-3 строчки.
>>758893
Читал, сложна без примеров. Похоже на пердёж в лужу, который неприменим в реальной жизни.
#411 #758896
>>758894

>Ну, я вынес все вызовы к серверу в отдельный класс. В активитях остались только сотни коллбэков от фрагментов, которые обрабатываются в 1-3 строчки.


дело в том что вызываешь ты эти 3 строчки не там где нужно если следовать патерну.

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


Ладно парни у нас тут неадекват, хватит кормить этого зеленого.
>>758905
#412 #758897
>>758894
эталонный дегенерат
>>758905
#413 #758899
>>758894

> В активитях остались только сотни коллбэков от фрагментов


Нахуя? Почему фрагмент у тебя сам не выполняет запросы, а в активити вынести только навигацию между фрагментами?
>>758905
#414 #758905
>>758896
>>758897
Научите солиду, посоны. Киньте примеров. Я вообще-то сюда и зашёл первый раз за дохуя месяцев, чтобы узнать, что там нового в андроиде вышло.
>>758899
Потому что это будет слишком большая паутина и трудноисправляемая вызовов. Активити сравнительно мало (штук 10), фрагментов же штук 50. А если мне захочется один из вызовов как-то поменять?
>>758913
131 Кб, 474x700
#415 #758906
>>758894

> SOLID


> пердёж в лужу, который неприменим в реальной жизни.


Понятно. Можешь не продолжать.
>>758910
#416 #758910
>>758906
Вот блядь. Нет бы направить на путь истинный, нет, нахуя, лучше оскорбить и повысить за чужой счёт свою самооценку (вот он не знает солид, а я знаю, давайте-ка я его нахуй пошлю, ай да я молодец).
#417 #758913
>>758910
>>758905
Пиздуй гуглить блять, заебали уже.
Вы блять в поисковик не можете чтоб найти инфу по принципу которому больше лет чем вам и всякий гайдов больше чем вы в свое жизни прочли.
>>758920
#418 #758915
>>758910
Объясняю: проблема не в том, что ты не знаешь SOLID. А в том, что ты называешь его

> пердёж в лужу, который неприменим в реальной жизни


А на все несогласия со своей архитектурой отвечаешь

> МНЕ ТАК УДОБНО, А ВЫ НЕПРАВЫ

>>758920>>759050
#419 #758919
>>758910
Если ты чего-то не знаешь, то какого хрена ты об этом кукарекаешь тогда? Ты себя только полном долбоёбом так выставляешь.
#420 #758920
>>758913
Бля, я когда работу искал, прочитал сотню книжек, прошёл курс по agile, читал и про solid, и mvp учил, и в жопу носорогу заглядывал. Да только вся инфа, которую я нашёл - субъективна и подходит только в конкретных случаях для маленьких приложений.
>>758915

> пердёж в лужу, который неприменим в реальной жизни


>Читал, сложна без примеров. Похоже на



>А на все несогласия со своей архитектурой отвечаешь


Ну, посоветовал мне человек разбить одиноднородный класс на 10 классов, хуй пойми зачем. Ну да, я не согласен. И да, он не прав. Хорошо, если именно это является причиной твоего недовольства, то мне нет повода расстраиваться.
32 Кб, 296x218
#421 #758922
Вас как почитаешь, вспоминается только это
#422 #758924
>>758795
Бамп.
#423 #758939
>>758828
Ну ладно, а если отвлечься от receiver-а и прочего. Разве нет какого-то обращения к системе, чтобы получить back-stack или объекты Activity? Мне кажется, это настолько же естественное действие, как получить какой нибудь очередной системный manager
#424 #758950
ДА ИДИТЕ ВЫ ВСЕ В ПИЗДУ СО СВОИМ МОДНЫМ MVP! КАК БЛЯТЬ ВОБЩЕ МОЖНО ЧТОТО ГОДНОЕ КРОМЕ ХЕЛЛОВОРЛДА НАПИСАТЬ С ПОМОЩЬЮ ЭТОЙ ПАРАШИ!? ВОТ НАПРИМЕР У МЕНЯ ЕСТЬ АКТИВИТИ С ВЬЮФЛИППЕРОМ И МНЕ НУЖНО ПЕРЕКЛЮЧАТЬ ЕГО СОСТОЯНИЯ ПО НАЖАТИЮ НА КНОПКУ, КАКИМ БЛЯТЬ ХУЕМ Я УЗНАЮ ИЗ ПРЕЗЕНТЕРА КАКОЙ ЧАЙЛД СЕЙЧАС ОТОБРАЖАЕТСЯ (ПОДСКАЗКА: НИКАКИМ БЛЯТЬ! НЕЛЬЗЯ УЗНАТЬ, ПОТОМУ ЧТО ПРЕЗЕНТЕРУ ДОЛЖНО БЫТЬ СТРОГО ПОХУЙ НА ВЬЮ) И КАК В ТАКОМ СЛУЧАЕ ХОТЬ ЧТОТО АДЕКВАТНОЕ ПОСТРОИТЬ ИЗ ЭТОГО ГОВНА И ЭТИХ ПАЛОК?! НАСЛУШАЮТСЯ НА СВОИХ КОНФЕРЕНЦИЯХ ГОВНА И ЕБУТСЯ ПОТОМ С НИМ!
>>758956>>758969
#425 #758956
>>758950
Тут явно нужно объединить ViewFliper+Button в какую-то кастомную View.
>>758965
#426 #758965
>>758956
Ты в любом случае соснешь, потому что по хардкору решение на какую вью переключать должен принимать онли презентер, грубо говоря ифы должны быть не в самой активити, а в презентере, но какая конкретно сейчас чайлдвью отображается ты узнать из презентера не можешь, короче нахуй и в пизду. Скорее всего скоро набегут синьйоры с 1ккк в минуту и обзовут меня неосилятором и позором профессии.
#427 #758969
>>758950
двачую, хуярить всё кашей намного лучше, заебали ети хипсторы
>>758974
#429 #759050
>>758915
вот вкотился в IT мир, и понял что это какая болезнь в этой сфере. Люди ну прям очень трудны в общении, что-то сказать другое, что не соответствует мнению человека невозможно. Шлют сразу нахуй, начинают обсмеивать. Эта некая свобода собенно фрилансеров просто губид пиздецки. Твой пост идельно всё описывает. Вобщем схоронил скрин...
#430 #759051
Можно как-то в студии указывать в тудушке к какому таску она относится? Вроде
// TODO remove this stub when #taskref is done
и чтобы студия это как-то понимала, автодополнение там или еще чего.
>>759052
#431 #759052
>>759051
Плагин поищи. Думаю есть такой с синхронизацией с джирой.
#432 #759105
Нубский вопрос. По клику на кнопку появляется что-то вроде плавающего фрагмента попапа, по второму клику он убирается. Мне нужно сохранить созданный фрагмент в поле и реюзать или каждый раз new Fragment()?
>>759123
#433 #759123
>>759105
Ты вообще уверен что тебе нужен фрагмент?
Как ты вообще его показываешь/скрываешь?
>>759144
#434 #759144
>>759123
Нет, думаю не нужен. Я в общем более-менее разобрался.
#435 #759248
>>758466
Я плохо помню свои мотивы. Обычно я использую эту строку, чтобы одно значение написать. А тут два пришлось, так что было ctrl-c/ctrl-v
Вообще надо получше понять разницу между commit и apply, потому что внедрив это, у меня и проблемы с многопоточностью решились, хотя целый день до этого пиал обходные пути по этой причине. Спасибо, кстати, большое

Я уже не помню почему стал писать через точку. Пробовал и тот и другой вариант, разницу почти не понял, но через точку было чем-то лучше. Кажется, через двоеточие дох вслед за процессом приложения и процесс сервиса, хотя они и должны были быть независимыми. Уже не помню
>>759251>>759408
#436 #759251
>>759248

> Вообще надо получше понять разницу между commit и apply



Commit сразу пишет в файл, apply не сразу.
#437 #759337
Ощущение, что сообщения от PendIngIntent приходят через раз. То летят, то не летят. Может такое быть?
#438 #759408
>>759248

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


Прочитай джавадок и поймёшь в чём разница. Один метод — синхронный, другой — нет.
>>759415
#439 #759415
>>759408
О, спасибо!
>>759417
#440 #759417
>>759415
С третьего раза только, дэ?
#441 #759432
Посоны а можно на ведре пользоваться управляемыми контейнерами с cdi? Какие реализации есть?
Мимо энтерпрайз-примат
>>759443
#442 #759436
Ну тип хочу что то уровня манаджедбинов с их инжекцией в контроллеры
>>759443
#443 #759443
>>759436
>>759432
Никогда такой хуйни в ведре не встречал.
>>759455
#444 #759455
>>759443
Ух епт.
А как вы с сервисами работаете? Через статические классы чтоли ?
>>759492
#445 #759460
Например я запилил бин для каких то целей.
Мне в каждом контроллере его вручную инстанцировать? А если мне синглтон нужен. Или это фабрика
>>759465
#446 #759465
>>759460
Тебе что-ли нужно Dependency Injections?
Тогда бери Dagger2, Dagger или RoboGuice если он еще жив.
>>759466
#447 #759466
>>759465
Ага.
Спс
#448 #759486
>>753437
А зачем ещё что-то? Я себе сделал в несколько строк обертку чтобы тайм-аут был и все
>>759497
#449 #759492
>>759455
Ты про системные сервисы, которые возвращает getSystemService, или android.app.Service, или о чем-то другом?
#450 #759497
>>759486
хватит траллить
#451 #759921
Какие есть способы оптимизации приложения в плане энергопотребления?
Какие инструменты есть для этого?
>>759941
#452 #759941
>>759921
чем меньше ваш код выполняется, тем лучше чувствует себя батарея.
ваш к.о.
>>760007
sage #453 #760007
>>759941
Чем меньше включен экран тем меньше тратиться батарея. Для этого асинхронщина.
Кто мутит проект и нужны люди? #454 #760009
У кого проект и нужны люди?
>>760011>>760027
#455 #760011
>>760009
Шо на каникулах нечем заняться?
#456 #760027
>>760009
Пиздуй в фурряч.
#457 #760078
Антон, покритикуй - https://github.com/pacodelavega/GithubDemo

Я никогда не устраивался и не работал андроид-разработчиком и не знаю, как там всё принято.

Тестовое задание:
Необходимо сделать приложение для поиска пользователей на github (https://developer.github.com/v3/search/#search-users)
Дизайн как в гугл плей, т.е плавающее окошко поиска в верхней части экрана, которое уезжает по свайпу вниз и выезжает по свайпу вверху (независимо от уровня прокрутки вниз, см. гугл плей). Внизу recyclerview с списком найденных пользователей. Поиск из плавающего окошка, по мере ввода символов.
Желательно использовать следующие инструменты и библиотеки: RxJava, Retrofit, Support library, Realm
>>760084>>760140
#458 #760084
>>760078
На джуна сойдет.
>>760224
#459 #760140
>>760078
Неплохо, но ничего особенного.
Хотя лично мне нравиться такая компоновка model/service/activity.

Я еще модельки сделал бы immutable (раз делаешь с упором на функциональщину).
Вот https://timboudreau.com/blog/json/read сайт генерит Java класс из JSON без сеттеров.
Ну и написал бы на котлине конечно.

Из минусов: нет обработки ошибок, нет обработки слишком частого ввода нет realm, хотя в пизду его.
>>760224
#460 #760144
А как вы обычно хуярите класс предоставляющий функционал ретрофита, с возможностью выйти из сессии и начать новую? Синглтон? Или может создавать в Application.onCreate, а потом инжектить?
>>760147
#461 #760147
>>760144
Что значит выйти из сессии?
>>760251
#462 #760224
>>760084
>>760140
Спасибо за отзывы, обработку ошибок добавил. В таком задании ожидаются подробные комментарии и юнит тесты? Хотел добавить, но толком и нечего комментировать и тестировать.

>нет обработки слишком частого ввода


Это как реализовать? Я RxAndroid не пользовался никогда до этого. Добавить в:

users.subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<Users>()

строчку:
.throttleLast(500L, TimeUnit.MILLISECONDS)

Чтобы обрабатывал последний запрос после которого прошло 500мс?
>>760235
#463 #760235
>>760224
Тебе нужен либо PublishSubject c debounce, в который ты будешь передавать текст из колбэка, либо использовать RxSearchView с тем же debounce.
Да и хули ты тупишь, это самый каноничный пример использования Rx, хоть копипасти себе весь проект у какого-нибудь хипстера на medium.com
#464 #760251
>>760147
Ну вот пусть у меня был токен ZW1haWw6IG11ZGFrQG1haWwuY29tIHBhc3M6IHBvYzEzNGF6YUxPWA==, с ним я делал всякие запросы, отправлял его в хедерах, а потом юзер нажал logout, значит надо перестать этот токен сувать в хедеры. Значит надо его стереть, вот и возникает вопрос - где и как его хранить, цеплять то понятно что в билдере прицепить интерсептор.
>>760254
#465 #760254
>>760251
В шаред преференсах, в файле с синхронной обреткой.
>>760258
#466 #760258
>>760254
Что-то как-то сомнительно, если так, то interceptor'у нужен будет доступ к SharedPreference. Не будет ли он с диска каждый ебаный запрос читать? Оно-то конечно в отдельном потоке, но все же.
#467 #760260
>>760258
Зато не сотрётся при закрытии процесса приложения. Я сделал так, мне норм.
А для реализации подобной фигни в ретрофите (а точнее в OkHttp) нужно сделать кастомный CookieStore и установить его в сессию через функцию setCookieJar.
мимо
>>760264>>760267
#468 #760264
>>760258
>>760260
Вообще, если напрячься, то можно сделать что-то типа подгрузки из sharedPreferences при иниализации сессии и дальнейшее хранение в переменной типа Map (как в дефолтной реализации CookieStore), если смущает постоянное обращение к SharedPreferences (хотя я не пойму, чего в этом плохого)
>>760267
#469 #760267
>>760260
>>760264
Действительно, при смерти процесса может хуйня случится, ну раньше я и в переменную писал и в SharedPreference и при открытии приложения смотрел есть ли валидный токен, если был, то восстанавливал его. Посмотрим на этот кукистор.
>>760269
#470 #760269
>>760267
Сорри, я тупанул немного. Мне почему-то показалось, что ты в кукисах токен передаёшь. Если он отдельным хедэром, то можно в интерсептере передавать, как ты и делаешь, просто стирать при логауте из преференсов.
Просто в OkHttp в интерсепторах нельзя передавать кукисы, они перезаписываются, поэтому мне пришлось велосипедить. К тебе это не относится, забудь.
#471 #760274
>>760258

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


Не будет, ведь шаред преференсы кэширующие в памяти.
>>760291
#472 #760291
>>760274
Тогда заебись вообще.
19 Кб, 508x325
#473 #760397
Аноны, есть один старый проект, который юзает карты. import com.google.android.maps. почему то не находит, хотя подключил google-play-services.jar из того самого проекта. Но странно, что он находит вот это - import com.google.android.gms.maps., но там измененные классы и мне не очень хочется все переписывать
>>760476
#474 #760476
>>760397
Очень старые сервисы у вас батенька. Уже 9 вышли. Боюсь проект нужно переделывать под новые. Но тут я смотрю вообще говно динозавра, если обратить внимание на способ подключения facebook'a и actionbarsherlok/
#475 #760708
Нуб. Нужно вытащить 1-50 записей из базы, зная их айдишники (уникальные поля). Лучше делать один селект с WHERE IN (id, id...) или много селектов? Какой вариант хуже и насколько?
#476 #760713
>>760708
Я считаю, лучше один, чем несколько.
>>760720
#477 #760720
>>760713
Ящитаю тоже, но основу для этого не имею, точнее имею, но учитывая мое незнание того как на самом деле работают базы, эта мысль вряд ли верна.
#478 #760727
>>760708
Один конечно, так как один реквест к базе.
>>760730
#479 #760730
>>760727
Окей, спасибо.
#480 #760733
>>760708
Можно создать временную таблицу, заполнить ее айдишниками и SELECT... JOIN...
>>760749>>760824
#481 #760749
>>760733
И это 100% лучше чем where in?
>>760762
#482 #760762
>>760749
42% Я ебу что ли ты задачу вообще не описал.
Только учти что у SQLite есть ограничение на размер текста запроса.
>>760773
518 Кб, 2500x1443
#483 #760765
Господа, а знание какого еще языка будет очень полезным для андроид разработчика? Может кто пояснить? В голову приходит C, C++, так как сам андроид на них написан. Ну Kotlin еще.
119 Кб, 788x443
#484 #760772
>>760765
Clojure оффкозз, в будущем все будем писать под мобилки на ClojureScript + ReactNative
>>761005
#485 #760773
>>760762
А задача важна? Ну записей ~500 с 7 полями, айдишники в них это BaseColumn._ID primary key, как-то получаю список 10-50 этих айдишников, и нужно вытащить что-то с данными сделать.
Я уже решил делать на where in, но если джоином 100% лучше, то запомню на будущее.
#486 #760774
>>760765
Haskell, Perl, Verilog. Так или иначе пригодится.
#487 #760775
ктонибудь юзал AccountManager системный? думаю не засунуть ли туда логин со своего аппа? как считаете, а? а?
>>760781
#488 #760781
>>760775
Не связывайся ты с Android "сервисами" пока этого явно не потребует бизнес-задачи.

Меньше нахлебаешся с фрагментированностью/"изменением поведения" его API.
#489 #760824
>>760733
Вот так майндфак ты тут разводишь.
217 Кб, 1159x1654
#490 #760946
Че вы книг в шапку не добавите? Думал, что кроме The Busy Coder’s Guide to Android Development нихуя книг нормальных по андроиду и нет. А тут порылся, а их не так уж и мало, накачал вот, сижу читаю.
Bill Phillips, Chris Stewart, Brian Hardy, Kristin Marsicano - Android Programming: The Big Nerd Ranch Guide (2nd Edition) - 2015 - Вот эту прям вообще все хвалят, добавьте в шапку, если кто читал и может подтвердить, годно или нет.
>>760958
#491 #760958
>>760946
Ну давай расскажи чем это лучше d.android.com/training
>>761081
#492 #761005
>>760772
Нахуй такое будущее.
>>761085
#493 #761081
>>760958

Потому что есть разные способы подачи информации. Одним удобно учиться по одной книжке, другим по другой, 3-м вообще по видеоурокам.
>>761085
#494 #761085
>>761081

> неосилил


Печаль, я думал там что-то интересное чего нет офф. доках.

>>761005

> Нахуй такое будущее.


Чому?
Clojure язык богов + в ReactNative работаешь с нативным UI (это тебе не парашный фонгап с JS).
>>761102
#495 #761102
>>761085

>офф. доках


>Clojure язык богов + в ReactNative работаешь с нативным UI (это тебе не парашный фонгап с JS)


А вот и илита /pr подъехала, с охуительными историями, ясно.
#496 #761239
Кто знает как получить папку карты памяти? Я написал приложение, использовал Environment.getExternalStorageDirectory(), и уже думал, что справился, но вчера дал другу потестить. Говорит, что да, он открывает ExternalStorage, но он не равен sd-карте. Рылся в гугле, пытался понять. Нашел, что есть какой-то SecondaryStorage, но что-то уже голова кипит от всех этих неожиданных знаний.
С другим другом общались, он сказал, что то у первого телефон странный, херня какая-то. Ну, я написал тогда такой код:
http://pastebin.com/PziFL1s2
Просто чтобы проверить что прочитается. На одном моем устройстве работает хорошо. На другом выдает или карту памяти, или другое хранилище, если карта отсутствует. А друг так вообще сказал:
"крешится при открытии"
Нихрена не понимаю в чем дело
#497 #761244
>>761239
У меня 2.3.3
Второй 4.1
У друзей 5.1, но разные устройства
#498 #761260
Есть фрагмент во вьюпейджере, onCreateView фрагмента создает какие-то вьюхи, типа mTextView = (TextView)...
После onDestroyView мне о созданных вьюхах нужно забыть? Или стоит делать if (mTextView == null)... в onCreateView?
>>761309
#499 #761309
А какой самый компактный и удобный фреймворк для автоматического определения вьюшек? заебался писать столбцы findviewbyid, хочется что-то типа

@Inject{R.id.textview}
TextView mTextView

и чтобы этим функционалом всё и ограничивалось.
>>761260
Быстрее самому затестить:
if (mTextView == null)
Log.i(TAG,"обнуляется");
else
Log.i(TAG,"не обнуляется");

и попрыгай по вьюпейджеру
#500 #761312
>>761309

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


Butterknife

@Bind(R.id.huy)
Huy pesda

в onCreate
ButterKnife.bind(this);
>>761313
#501 #761313
>>761312
Спасибо.
#502 #761316
>>761309
Тка я прыгал, они не нулятся, я ведь их нулями не забивал в onDestroyView. Просто думал адекватная ли это вообще практика что-то делать с вьюхами после onDestroyView фрагмента. Доки только говорят, мол, освободить ресурсы относящиеся к вьюхам в ондестройвью.
>>761318
#503 #761318
>>761316
Ты, возможно, просто недалеко прыгал, потому что вьюпейджер не всегда уничтожает фрагмент при смене страницы, это зависит от используемого адаптера. В каком-то адаптере сохраняются 1-2 соседних фрагмента, в каком-то сохраняются все.
>>761325
#504 #761325
>>761318
Анон, я все стадии логировал, обычный (не StatePager) адаптер просто делает onDestroyView табам, которые дальше +1 с обеих сторон. Думаю все же можно реюзать созданные вьюхи, ведь пересоздавать стоит только когда это имеет смысл для логики фрагмента.
Просто боюсь если вдруг не знаю какую заковырку, которая потом встанет боком.
>>761356
#506 #761375
>>761309
Android DataBinding, мне зашло на отлично.
#507 #761410
>>761239

> Кто знает как получить папку карты памяти


Просто забей. Это анальная боль еще та, ведь то, что возвращается Environment.getExternalStorageDirectory() задается производителем девайса. Если он ленивый ублюдок и сделал еще внутренней памятью первый слот под флешку а второй доступен для пользователя, то тебе будет возвращаться именно первая внутренняя память.
И лечится это только костылями уровня проверки монтированных каталогов в /mount.
А на 4.4 ты вообще туда хуй че запишешь.
#508 #761429
>>761410
Ну с китката уже завезли документ провайдер, а на лолипопе он уже вменяемый. Только вот на некоторых китайцах его нет, такой-то лол. А до него только ебля: http://stackoverflow.com/questions/11281010/how-can-i-get-external-sd-card-path-for-android-4-0
#509 #761434
А чего за столько времени никто не сделал супер библиотеку, которая со всем этим зоопарком разбирается?
>>761440
#510 #761440
>>761434
Сделай, хули.
>>761445
#511 #761442
>>760765
Asm, brainfuck, f#
#512 #761445
>>761440
У меня нет возможность такое как следует оттестировать. Не то чтобы я собирался.
>>761459
#513 #761459
>>761445
Никто не хочет давать не гарантированное решение, потом еще хуями закидают.
#514 #761554
Как совместить VK SDK с RXJava?
>>761562>>761570
#515 #761562
>>761554
что тебе именно надо совместить?
#516 #761570
>>761554
Берешь и оборачиваешь колбэк в Observable.create.
#517 #761594
>>761410

>Просто забей


Ну как тут забить, если мое приложение работает с пользовательскими файлами... На карте они или где-то еще - не так принципиально. Просто нужен проводник по местам, где эти файлы могут оказаться (скорее всего, они были переброшены с ПК, и пользователь ожидал использовать их через всяке приложения). Но если все будут игнорировать эти носители, то что, скоро не останется плееров, файл-менеджеров, галерей, читалок? Как они работают, и на каждом устройстве? Или в каждом файл-менеджере написана тысяча костылей, чтобы он мог везде работать? Я просто думал, что андроид позиционируется как платформонезависимая система. Иначе бы в требованиях писали, что нужен не 4.2 андроид, а самсунги такие-то, соньки такие-то и т.д.
12 Кб, 724x316
9 Кб, 481x320
#518 #761597
>>761309

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



Что же вы юродивые какие, на вот мой (написал за 5 минут):
пик 1 - фреймворк
пик 2 - пример использования (просто тип и типов в дженерике)

Писать надо на нормальных языках.
>>761601
#519 #761601
>>761597
Нормальноязычный, у тебя же есть kotlinx.android.synthetic
>>761608
#520 #761608
>>761601
Это как пример захотелось самому такой написать.

Для себя я юзаю собственный DSL для связки UI и MVVM, общий для Android/iOS.
В итоге кода получается столько же как с кодогенераторами.
>>761612>>761661
#521 #761612
>>761608
Ты себе не представляешь, как ты меня бесишь этим италикболдом. Перекатывай тред давай лучше
>>761621
#522 #761621
>>761612
Я тебе сейчас перекачу, будет:

Разработка на Kotlin под Android тред №21
>>761748
#523 #761661
>>761608
А как ты под гейос ебашишь?
#524 #761727
посоны, реально ли в ведре юзать svg для иконок? сервер хочет присылать, но чет я погуглил, svg походу только можно сконвертить в vector-drawable, которые завезли только в lollipop
>>761737>>761986
#525 #761737
>>761727

>Сервер


>присылать svg-картинки


Вы там ебнулись? Нихуя у тебя работать не будет. Если это иконки действий то засунь из сразу в апк. И студиия сможет сконвертить их в png, сможешь ограниченно пользоваться ими почти как vector-drawable до лолипопа. Но смысл в том что она сгенерит фолбэк из пггшек при сборке, а никак не в рантайме.
#526 #761745
>>761410

> Просто забей. Это анальная боль еще та, ведь то, что возвращается Environment.getExternalStorageDirectory() задается производителем девайса. Если он ленивый ублюдок и сделал еще внутренней памятью первый слот под флешку а второй доступен для пользователя, то тебе будет возвращаться именно первая внутренняя память.


Это нормальная ситуация. External Storage был картой памяти лет 5 назад, сейчас это всегда внутренняя память для свободного использования.
#527 #761748
>>761621

> Разработка на Kotlin под Android тред №21


Охуенно. Там и сиди только.
#528 #761934
>>761239
Продолжение истории.
Прошлый код хорошо пошел на моих устройствах, на устройстве первого друга выдал внутреннюю память, а еще у троих тупо вылетел и не стал запускаться.
Я взялся воплощать понятный моим мозгам способ:
http://stackoverflow.com/a/19831522
В результате, на моих оно по прежнему работает, у первого друга вылетает с ошибкой, а от второго ответа пока нет. Ошибка в последнем коде у первого друга совпадает с ошибкой в первом коде у остальных:
java.lang.NullPointerException: Attempt to get length of null array
http://pastebin.com/hAq7yuAm
Т.е, я получил Environment.getExternalStorageDirectory(), который был не null
Потом я получил его родителя rootFile, файл по которому существует и не является файлом. Однако rootFile.listFiles() возвращает null, потому что...

>Returns an array of files contained in the directory represented by this file. The result is null if this file is not a directory.


Значит rootFile не файл, не папка. Но что это, мать вашу, такое вообще? Как такое может быть?
>>761978
#529 #761978
>>761934

> Environment.getExternalStorageDirectory().getParent();


Плохая идея.

> Но что это, мать вашу, такое вообще?


https://en.wikipedia.org/wiki/Inode
#530 #761986
>>761727

> реально ли в ведре юзать svg для иконок


Реально, но лучше не надо.
compile com.caverock:androidsvg
#531 #762030
Привет, андроиды.
Меня интересует вопрос, можно как-нибудь захватить изображения с телефона и передать на компьютер, без установки на компе IDE?
Что-то не гуглится ничего по этому поводу.
>>762033>>762034
#532 #762033
>>762030
Сделать скриншот - обычно кнопка питания + кнопка громкости вниз.
#533 #762034
Тред утонул или удален.
Это копия, сохраненная 21 июня 2016 года.

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

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