Продолжаем верить в нативную разработку.Предыдущий тред тут:https://2ch.hk/pr/res/790312.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.Привет клиент-серверка.Пишите в треде что добавить
ПродублируюАноны, у меня есть лоадер, который отправляет сообщения на сервер, следовательно, юзер может отправить сообщения одновременно, но в таком случае лоадер возвращает результат только для первого сообщения, а если рестартить его, то только для последнего, что делать? Думаю инкрементить айдишник у лоадера, но это, наверное, слишком костыльно, что скажите?
>>801023НЕ ИСПОЛЬЗУЙ ЛОАДЕРЫОни годятся только для быстрых идемпотентных запросов (вроде запросов к базе/диску).Само слово Loader подразумевает что он просто загружает что-то в память без изменения стейта.Если решил обмазаться Android API, то бери сервисы/JobScheduler/GcmNetworkManager
>>801054ну а что использовать? Ретеин фрагменты? где мне хранить мой observable?
>>801063> где мне хранить мой observable?А зачем ты его хранишь?
>>801089я юзаю у него cache, поэтому мне надо, чтобы запрос завершился
>>801096Retain fragment / singleton.
>>801096Что-то ты там намутил переусложненное (лоадеры и rx все вместе).Теперь разобраться в этом можешь только ты сам, Люк.Могут только рассказать про свою архитектуру.1 Есть синглтон-очередь для web операций, с таким API:1.1 Можно добавить асинхронную задачу по ключу1.2 Можно проверить состояние задачи (in-progress, finished, finishedWithError), передав ключ1.3 При изменение статус таски - бросается бродкаст с ее ID1.4 При завершение таски, иформация о ней стираетсяКлюч формируется из "название операции" + "уникальный ID".Допустим для загрузки треда 2ch.hk/pr/801015, будет что-нибудь типа "sync-thread-" + "pr/801015"2. Данные сохраняются в локальную базу (SQLite)3. Актитивит/фрагменты/VM может только 3.1 Подисываться на бродкасты (в onResume(), отписываться в onPause())3.2 Загружать данные из локальной базы, при обновление обсерверов3.3 Проверять состояние web-таски по ее ID (пункт 1.2)
>>801105Тоже делал такую очередь с сохранением id задач. Их можно даже в сейв инстансы пихать и после переворота спокойно проверять, идет сейчас загрузка или нет. Но с переходом на мвп, презентеры выживают при переворотах и необходимость в этом пуле задач отпала.
>>801134У меня MVVM и это слишком муторно каждый binding отписывать/подписывать.Проще грохнуть все вместе с активити.
>>801134а как ты сейвишь презентеры?
>>801105>finished>1.4 При завершение таски, иформация о ней стираетсякак так то?
>>801206map.remove(key)потом если приходит запрос состояния таски, то возвращается "finished"Плюс еще мелкий хак, что информация о том то завершилось с ошибкой стирается не сразу, а с задержкой.Что бы можно было показать пользователю сообщение об ошибке.Я сейчас подумал, что возможно лучше не стирать, хотя тогда (теоретически) может память кончится от этих тасок.Вообще я эту архитектуру придумал на днях :), еще не продумал все мелочи.
Вопрос по ContentProvider и Cursor. Делаю подсказки для поиска в тулбаре. В перегруженном методе query у своего ContentProvider'а получаю что ввел пользователь в поиск и запускаю asynxTask для получения данных с сервера. После паршу и заношу в курсор, который возвращаю.Проблема в том что выводимые подсказки отстают на символ из-за того что asynxTask не выполнился сразу к моменту создания курсора.Чо заюзать то нужно?
Как объвить у своего класса метод, который можно перегрузить при инициализации, как на пике?
>>801292Это не инициализация, а создание иннер анонимного класса. Ты можешь таким образом любые видимые не финал методы, можешь объявить его абстрактным. Но на твоем пике судя по всему сделан интерфейс.
>>801292с любым методом любого класса так можно сделать
Увидел у чувака BroadcastReceiver, который активируется на BOOT_COMPLETED вместо логики в onReceive стартует сервис. Сервис по сути ничего не делает: в onStartCommand дёргает бд, создаёт Alarm, в общем-то и всё. Т.е. с сервисом никакого взаимодействия нет, висеть ему долго не нужно, выполнил код и умер.Вопрос: нужно ли так всегда делать и почему? Можно ли просто засунуть логику в onReceive?
>>801336> Once you return from onReceive(), the BroadcastReceiver is no longer active, and its hosting process is only as important as any other application components that are running in it. This is especially important because if that process was only hosting the BroadcastReceiver (a common case for applications that the user has never or not recently interacted with), then upon returning from onReceive() the system will consider its process to be empty and aggressively kill it so that resources are available for other more important processes.> This means that for longer-running operations you will often use a Service in conjunction with a BroadcastReceiver to keep the containing process active for the entire time of your operation.А еще они выполняются последовательно, и если какой то бут ревивер выполняется слишком долго, остальные будут его ждать.
>>801339Ну вообще я не собирался возвращаться из onReceive() пока не закончу дела, но в целом понял, спасибо, буду использовать сервис.
>>801105>Есть синглтонДальше не читал. Уебывай.
>>801413Научись читать, и понимать - это тебе пригодится в работе.Говорю, как android программист с ~5 лет стажем.
>>801196В json сериализую.
>>801244> Чо заюзать то нужно? StroIO и Rx
>>801492а что у тебя в презенторе?
>>801607view state
>>801623а запрос как и где делаешь, как сейвишь результат?
Аноны, а нужно ли вообще делать release-сборку на CI-сервере? По идее, если в debug-версии всё собирается и тестируется, то и другой build variant тоже будет. Разве нет? Или есть какой-то смысл в этом?
>>801660Смысл в том что на серваке будут лежать все пароли-сертификаты и каждая макак не будет их таскать и терять.
>>801689Что? Причем тут пароли-сертификаты? Я вообще не про подпись приложения спрашивал.
Аноны, кто нибудь работал с сокетами? SocketIO норм штука?
>>801723RxSocket юзай
>>801726можешь сбросить гитхаб либы? че то я не нашел
>>801767> https://github.com/LoranceChen/RxSocket
>>801773А ты юзал её, все ок? А то всего две звездочки
>>801781И вообще это скала
>>801782> 2016> писать на чем-то кроме скалы
Господа, посоветуйте открытое API какого-нибудь полезного сервиса. На programmableweb какая-то хуита.Хочу написать клиент.
>>8018112ch.hk
>>801787Правда говорят что новая скала требует Java8 и по этому не будет работать на старых андроидах?
>>801844Неправда.И кстати, Java 8 прекрасно компилируется для андроида если использовать Retrolambda или новенький Jack Compiler от Гугла
>>801873Хуйня, ничего там на уровне байт-кода не компилируется.Как не было у тебя default методов, так и не будет.
>>801880Это ты хуйня, а оно компилируется.Понятно, что с ограничениями. Большинство нововведений восьмерки работают.И default методы тоже, если захочешь: Backporting default methods and static methods on interfaces requires all backported interfaces and all classes which implement them or call their static methods to be backported together, with one execution of Retrolambda. In other words, you must always do a clean build. Also, backporting default methods won't work across module or dependency boundaries.
>>801873> НеправдаНу что же ты за пиздаболhttp://www.scala-lang.org/news/2.12-roadmap/> Scala 2.12 will require Java 8. Here’s how we plan to make this transition as smooth as possible.
>>801893И там же ниже:> Continue Java 6 support for a while longer (only in Scala 2.11).Будет две параллельные ветки, поэтому "будет работать на старых андроидах"
>>801899Да да охуенная перспектива, как с python 2/3
Двач. Делаю страничку активити, нужно, чтобы вверху страницы была пикча. Вытягиваю картинку с помощью пикассо. На первом пике( с графиком) получилось как и планировалось(хотя пусота по бокам расстраивает).На втором пике какого-то хуя оно гораздо ниже села.С разными пикчами разный эффект, хотя код не меняю и везде стоит привязка к топу страницы.Что сделать и что прописать? Я так понимаю, нужно что-то с Picasso прокрутить.Задача: разместить пикчу в топе активити, при этом растянув её по ширине экрана
>>802043Картинка врап контент по высоте?
>>802046была матч пэрент. поменял на врап. сейчас проверю
>>802046ничего не поменялось
Парни, если я поставлю .resize(700,400)(пиксели), то у меня на эмултяоре оторажается как надо. а на других устройствах тоже будет нормально? или там пиздец всё перекорёжит?
Господа, какой layout лучше использовать и как указывать размеры элементов приложения
>>802058Никогда не указывай размеры в пикселях. Только dp, иначе на каждом устройстве всё будет По-разному криво косо. Открой документацию, прочитай про scale type и про значения match_parent и wrap_content.
>>802061В документации есть однозначный ответ. Нужно использовать читай сам
>>802083Пидор ты :(
>>802061>какой layout лучше использоватьБудешь все использовать
>>802058Для четкого ресайза - вытаскивай денсити и умножай на пиксели.
>>802156Пикассо умеет в resizeDimen
>>802170>>802156решил вопрос вот так:resize(getWindowManager().getDefaultDisplay().getWidth(),getWindowManager().getDefaultDisplay().getHeight()/3)Терь всё будет на любом устройстве работать одинаково
>>802089Нет, ты. Никто не собирается пересказывать тебе базовые статьи. Если ты их не читал, не поймёшь, что тебе отвечают. Если читал, но не понял - то ты ни одного приложения не сможешь разработать. Так что, либо читай и понимай, либо вон из профессии.
>>802184Привет, говнокод.
>>802205ееееее
>>802204> либо вон из профессии. Всегда охуевал с высокомерия программистов. Программист — обслуживающий персонал, на которого можно надресировать абсолютно любого, как и на любую другую рабочую специальность. Знай своё место.
Есть такая библиотека, которой можно скормить массив урлов фото, а она мне их подгружает по мере пролистывания? Галерея.
>>802216Василий, это делается элементарно.
>>802216Ты к нам из JS треда что-ли пожаловал?Без npm install vasya-gallery уже ничего не можете.
>>802209Ну попробуй, надрессируйся.
>>802216Glide.
>>802232>это делается элементарноА можно по подробнее? На iOS я, к примеру, помещу на view imageview и буду ловить жест скрола. Дальше анимировать смещение в сторону и загружать новое фото.
>>802272Неа, не сработает.
>>802216GridView/RecyclerView + Picasso
>>802277А zoom in/out по двойному тапу, зум пальцами?
>>802287Ха-ха-ха-ха! Глядите-ка, у нас тут непуганый в треде!
Аноны, кто нить имел дело с mosby? Как там презентер переживает повороты?
>>802328открой исходники и посмотри.
>>802272Ну тут примерно тоже самое:1) Подключаешь Picasso/Glide (кеширование из коробки, трансформации, удобное API и тд);2) Вставляешь ViewPager/RecyclerView, с помощью адаптера нужно будет задать верстку, что содержится внутри элемента;3) Цепляешь обработчик на скролл страницы, в котором начинаешь загрузку нужного урла в кеш;4) Цепляешь обработчик на показ конкретного итема, то есть когда в нем уже должна быть картинка или еще какой контент, в нем вызываешь загрузку (вдруг запрос на загрузку в кеш еще не отработал) и вставку изображения в нужное место;
>>802287Тут нужно посмотреть готовое решение, таких полно, я правда ни одним не пользовался, но такое на тестовых заданиях я слышал дают.
>>802412да толковых готовых, проще самому с viewproperty сделать
>>802414нету
>>802415Как же нету. Берешь и разковыриваешь вк/фэйсбук/галерею и адаптируешь.
>>802418Ну я и говорю самому проще сделать, чем искать либу
Сап, как поставить картинку с большим разрешением на фон в android приложении. Когда ставлю через android:backgroud - вылетает ошибка, о том что нет памяти OutOfMemoryError. Что делать?
>>802584https://developer.android.com/training/displaying-bitmaps/index.html
Почему котлин говно?
Как убрать этот ебанный ToolBar?
>>802692Тему NoActionBar поставь.
>>802584Используй вектор, Люк.Для старых Android можешь заюзать отдельную либу работы с SVG.
Привет всем. Кто делал свой менеджер будильников? Желательно на гитхабе.
>>802784> Голосовой и тестовый чат для геймеров
>>802694Что-то не работает.
Какую библиотеку или какие карты нужно использовать, если я планирую сделать городскую приложуху? Нужна карта города, причём достаточно детальная, как у 2ГИС.Гугл вроде не такой крутой, или я ошибаюсь? Ставлю себе, например, посетить магазин "Ромашка" и когда я буду возле него, программка выдаст мне ЗЗЗЗЗЗЗЗЗ Вы у магазина! Думаю, концепт объяснил. теперь вопрос по карте
>>802797>google>не такой крутой
>>802796У тебя тулбара в xml?
>>802796<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> <!-- Customize your theme here. --> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> </style>
>>802799я про карту.просто у 2гис она пиздец детализирована и все организации прописаны
>>802784Нахуй пошёл со своим говном.
>>802815><style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">><!-- Customize your theme here. -->><item name="android:windowNoTitle">true</item>><item name="android:windowActionBar">false</item>></style>>>802815>>802815О, спасибо! А как убрать, если не ошибаюсь NotificationBar там где время и так далее?
>>802856>>802815Уже разобрался, но все равно спасибо! Надо это добавить.<item name="android:windowFullscreen">true</item>
>>802859Window win = getWindow(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { win.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); }
Аноны, у меня есть ресайклвью, в нем итемы, у которых по клику на кнопку большая часть становится visible, т.е. такие раскрывающиеся хуевины. И мне надо, чтобы по клику ресайклвью скроллился к концу итема, на который кликнули, пробовал с scrollToPosition, но он скроллит к началу итема, что делать?
>>802867Попробуй скролить к следующему итему. Иди используй scrollBy, но тогда прийдется подсчитать сколько скролить самому.
>>802863>if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
>>803647И?
>>803656горь
>>802790Бамп
Делаем ставки, когда Swift станет основным языком для нативной разработки для Андроида.Я думаю, через 2-3 года.
>>803859Делаем ставки, когда JavaScript станет основным языком для разработки ядра Linux.Я думаю, через 2-3 года.
>>803875http://thenextweb.com/dd/2016/04/07/google-facebook-uber-swift/
Блядь, кто нибудь портируйте fb2 читалку на линух! Захотел на своем маке почитать а тут и нет нихуя. Пришлось кочать епуб.
Кто нибудь знает когда конвертер в цвете из PNG в SVG?
>>804016*годный конвертер
>>804016Inkscape
Сап, проблема ужасных 65535. Появляется она канонично с решением использовать google-play-services. Все было бы хорошо, если бы не нужно было использовать Places API. Но к сожалению compile 'com.google.android.gms:play-services-places:9.0.1' говорит, что не может найти ничего. При этом compile 'com.google.android.gms:play-services:9.0.1' отлично работает. Но какбэ 65,535 не дремлют, а мультидекс - очень и очень плохо отразится на разработке. Может я идиот и что-то не так пишу ? Прошу вашей помощи, котаны :)
>>804176Вроде как откатом на 9.0.1 исправил. Занятно, что gmaps тоже не хотят подключаться на 9.2.1 ...
Теперь юзаю location 9.0.1, но типа это не очень хорошо :D
>>804176com.google.android.gms:play-services-places:9.2.1Есть такой пакет. Но все равно 65к получить как делать нехуй. Заебался уже с прогвардом билдить дебаг сборки.>>804180>>804182Локальный репозиторий сервисов обнови в сдк менеджере.
>>804183Уже обновил, в том то и дело, что я не понимаю какого нехорошего лешего оно не пашет
Вот же сука, все равно пришлось multi-dex юзать. Теперь все работает со скоростью унылого говна :(
>>804190Прогвардом режь.
>>804195С прогуардом раньше не сталкивался, может кто годный гайд ( в идеале - на русском ) скинуть ?
>>804216minifyEnabled true
Как убрать паддинг на пике? Иконку устанавливаю вот так: ab.setHomeAsUpIndicator(resId);
>>804262Совсем изощренно - закастомизировать тулбар и юзать его :D
Кто-нибудь работал с векторами в Android? Как это пофиксить?
>>804270Написано же, не поддерживается. Берешь и ручками правишь.
>>804267> :D
>>804230Дальше разбираешь почему не компилится.Дальше почему крашится.
Есть один Spinner, который населяется значениями из массива, при нажатии показывает диалог со значениями.Использую стандартный layout для андроида, что-то вроде android.R.layout.spinner_item_simple. Выглядит как говно, но главное, что никак не выделен текущий элемент. Я могу поменять стандартный layout, но как отобразить активный элемент, например каким-нибудь кружочком а-ля RadioButton?
>>802043Покажи код загрузки картинки
Аноны, писал свою приложуху для вк около года назад.Сейчас хочу вернуться, таки дописать и добавить себе в портфолио.Распишите, что у вас там новенькое за этот период есть, что обязательно нужно добавить тру-ведроидерам в приложуху. Без Rx, я так понимаю, теперь уже никуда? И как дела сейчас на рынке? С двумая приложениями в маркете реально вкатиться (ДС-2)?
>>805287> что у вас там новенькое за этот период есть, что обязательно нужно добавить тру-ведроидерам в приложуху. 1) Immutable данные / списки2) First-class functions3) Coroutines4) Элементы Java 8 (streams, completablefuture)
>>805287> что у вас там новенькое за этот период есть, что обязательно нужно добавить тру-ведроидерам в приложуху. 1) Бизнесс-логика выделена в отдельный модуль, где нет зависимостей от Андроида2) Весь Андроидо-зависимый код — на Котлине3) Функторы и теории категорий4) Тесты на Хаскелле
Видели уже? Интел представил новую йобу для кроссплатформенной разработки на Джаве и на Котлине тоже.https://software.intel.com/en-us/multi-os-engineПомянем RoboVM
>>805386> 2) Весь Андроидо-зависимый код — на КотлинеНе согласен, весь платформоНЕзависимый тоже>>805386>Видели уже?Ебать ты слоупок. Пытаюсь (пока выходит херово) это юзать уже больше года.Разработку кстати ведут (как минимум частично) в России.https://www.youtube.com/watch?v=SrujAdCdAjEМинусы: # Половину любого класса занимаются аннотации (их реально ДОХЕРА), в RoboVM этого дерьма небыло# IPA толще чем у RoboVM, # Нет удобных методов-хелперов к стандартным Object-C классам (в RoboVM были)# В последнем билде сделали разработку на Kotlin почти не возможноP.S.После последних новостей о сокращение Intel 12000 человк, перспективы этого НЕ профильного проекта весьма туманныhttp://www.bbc.com/russian/news/2016/04/160420_intel_cuts
>>805402Да, забыл про плюсы:# ART (хотя это еще вопрос)# Они портировали даже android.database.sqlite.SQLiteDatabase / Cursor на iOS(те можно ШАРИТЬ один и тотже код работы с Sqlite базой данных)
>>805408> # ART (хотя это еще вопрос)В смысле? Dalvik-то ведь уже давно всё. Или ты про что?
>>805402>>805408Ну и поделись своим опытом использования, раз пытаешься уже больше года использовать.Я про эту штуку только сегодня вот узнал. Надеюсь, что её не забросят а будут допиливать дальше. Может хоть одна нормальная альтернатива богомерскому Ксамарину будет.
>>805460> В смысле? Dalvik-то ведь уже давно всё. Или ты про что?В том смысле что они запустили ART на iOS.Скомпилированный им код более оптимизирован под мобильники (спасибо за наработки гуглу).В RoboVM компилировали просто какой-то компилятором JAVA->"EXE" (забыл название), не заточенным под мобилки.Зато он мог еще компилировать еще под macOS. P.S.RoboVM не совсем еще мерт, на его открытой части сделали BugVM (к сожалению сейчас он не поддерживает storyboard)
>>805462Ну так задавай конкретны вопросы. Я им не пользовался с последнего билда (когда они совместимость с котлином сломали)Ты только посмотри на это, разве это не прекрасно сарказмhttps://github.com/moe-java-samples/moe-java-samples/blob/master/RssReader/ios/src/main/java/com/intel/moe/samples/rssreader/ios/RSSCell.java> альтернатива богомерскому Ксамарину будетКак я уже говорил уже есть BugVM, + компания "Excelsior Jet" обещали сделать на базе своего компилятора.+ еще натыкался на другие поделки, но почти не известные широкому кругу (гуг тебе поможет)
>>804176Чем тебя мультидекс не устраивает?
>>804262>tulpar.setContentInsetsAbsolute(0,0);
Вкатываюсь с нубовопросами: в тридцатник поздновато начинать или еще можно? При условии что: >"Я хуярил на делфи 15 лет назад а теперь хочу вкатится в андроид"Просто стартовые условия таковы что я сейчас живу в мухосрани и съебать отсюда ближайшие лет десять не получится точно, по личным причинам. Есть ли шанс что такого старпера возьмут куда-то джуниором да еще сразу на удаленку?
>>805554> съебать отсюда ближайшие лет десять не получится точно, по личным причинамШансов не особо много, лучше дальше задроть делфи или что-то что не популярно у молодежи.
>>805560>когда не успел вытащитьНет, слава яйцам, дело не в личинке.>лучше дальше задроть делфиЕптить, а она еще в тренде?И насколько повышаются шансы устроиться не на удаленку если все-таки съебать получится?
>>805568Знаю парочку фрилансиров из мухосрани на нем работающих.На делфи сейчас можно в кросплатформу (Windows/macOS точно).Если найдешь заказчика кому в 2016 нужно десктопное приложение, то делфи неплохой выбор.
>>805579Мда, плохи мои дела видимо. Чтож, спасибо и на этом.
>>801494>StorIOКакое-то новое говно, чем знаменито?
Аноны, вот есть статья https://medium.com/android-news/easy-android-shared-element-transition-ac36952a4a4#.uqh9m6rhm И видеj из неё https://www.youtube.com/watch?v=xvy7KUe492g Как мне сделать такую же анимацию, только между фрагментами? Я так понял во фрагментах все делается также, как и в активити, только ещё можно менять типы анимаций всякими setSharedElementEnterTransition, так вот, как называется анимация как на видео?
>>805560> Шансов не особо много,А почему в 30 не выйдет в ведро вкатиться?
>>802204Чет захотелось тебе на ебало поссатьмимоскролил
>>805735Relative+Linear как основаFrame не используетсяConstraint ещё в багахGrid прикольныйTable не довелось пока использовать
>>802043centerCrop ?
>>805744> Frame не используетсяЯсно.
>>805953Ну и где ты используешь фрейм? Ты под разные экраны разрабатываешь, не забывай.
>>805963Да везде, где можно. Например, картинка с текстом поверх неё.
>>805970Relative + padding
>>805972Тем временем у фрейма 1 measure вызов, а у relative 2. Оптимизация!Хотя сам тоже вообще везде использую релайтивку, легче потом добавлять и уберать элементы.
Какое сделать приложение, работающее по Bluetooth?
>>805972А можно frame + padding, что ничем не будет отличаться внешне, но будет производительнее.
В StorIO же нет вложенных объектов?Т.е. в одном классе не может быть списка другого класса?
>>806083Ну так это же на уровне запроса решается. Join там, все дела.
Двач, нужно реализовать онКлик картинки, чтобы она становилась большой на весь экран.Какой метод лучше всего для этого использовать? Я думаю сделать это в dialog, который по клику будет закрываться. Или можно как-то иначе сделать? Ваши варианты
>>806212Fullscreen activity
>>806235а. я не рассказал: у меня в шапке активити есть картинка, как в медузе, если ты видел. вот на неё и будет клик)картинка парсится пикассо, после чего занимает своё место.предлагаешь на клик открывать новое активити что ли?
Аноны, есть такая задачка: ставится будильник, я указываю свой ресивер, в нём делаю нотификейшн и опять бросаю сообщение на ресивер, который в моей активити, и уже ресивер в активити убирает нотификейшн и делате то, что нужно. Т.е. если активити открыта, мне не надо создавать нотификацию, а если закрыта, то надо. В таком подходе иногда становится видно как появляется и исчезает иконка в статус баре, как исправить?
Для тех кто хотел узнать какой гов##код генерируется из Kоtlin, но боялся спросить :)https://www.youtube.com/watch?v=35GACInsZsk
>>806322Пошел нахуй со своим говном.
Анончики, помогите молю. Пол года эклипс не открывал тут захожу такие ошибки появились. Как их исправить? Fix project setup не помогает. В чем может быть проблема?
>>806363А какую версию Google Play Services используешь? Если у тебя автоматически обновились они, то в этом может быть проблема. Попробуй явно указать версию (старую).И вообще, выкинь уже нахуй Эклипс.
>>806341>>806335
Анончик, хочу написать простую RSS читалку для сайта, можешь подкинуть гайд?
>>801015 (OP)норм ли в 2016 юзать ormlite? Или есть другая orm, которая может работать с gson?
>>806451Ты вообще понимаешь, что такое ORM? GSON тут вообще не при чем, любая ORM может с ним работать.> норм ли в 2016 юзать ormlite?Нет> Или есть другая ormИспользуй StorIO. Но это не ORM.
>>806457нихуя, green dao сама делает себе объекты, я не могу там юзать аннотации gson
>>806457а если я юзаю storio, где я должен вот это делать ( http://pastebin.com/dePkM78d ), как у них написано? в он криейте апликейшена?
>>806461Так же, как если бы ты работал с обычным SQLite или другой БД: зависит от твоей задачи. Если у тебя есть activity, показывающая лист с твитами, то да, логично запросить данные из БД при создании activity.
>>806471так не, это же не сам запрос, а настройка, чтобы работали put, get и delete, я только не пойму её надо один раз делать или всегда?
>>806472А, да. Один раз. В Application.onCreate().Вообще, у них sample-app есть. https://github.com/pushtorefresh/storio/blob/master/storio-sample-app/src/main/java/com/pushtorefresh/storio/sample/db/DbModule.javaЕсли не используешь DI, то просто делаешь в Application.OnCreate()
>>806371>А какую версию Google Play Services используешь? Если у тебя автоматически обновились они, то в этом может быть проблемаДа, похоже обновились до 31.>Попробуй явно указать версию (старую)Как это сделать если в сдк она уже обновилась?
>>806497В build.gradle в разделе dependecies ты можешь указать версию так, что всегда будет использоваться последняя:complie 'com.example.library:2.+'А можешь (и всгда должен!) указать её явно:complie 'com.example.library:2.4.7'Где это настраивается в Экслипсе, который не использует Gradle, я не ебу.
вечер в хату посоныиспользую recycleViewAdapter для списка.данные в него загружаются из бдтакже есть метод, который заполняет БД даннымиэтот метод я вызваю в onCreate()но пробелма в том, что при каждом открытии приложения этот метод вызывается и в итоге количество айтемов в списке увеличивается в 2 разакак сделать, что бы список отобразился только с нужным количеством айтемов, не добавляя уже существующие?
>>806544Сделайть айдишники итемов в бд уникальными? Тогда они будут перезаписываться.
>>806545как это сделать, если я юзаю Шугар ОРМ?
>>806568Я ебу. Читай доку.
>>802699С февраля этого года vectordrawable завезли в суппорт лайбрари. Выкидывай все левые либы для работы с свг.
Анон, а подскажи как происходит авторизация во всяких мессенджерах типа ватсаппа? Конкретнее интересует что из себя представляет пара логин-пароль (с логином вроде все понятно - номер телефона, а в качестве пароля-то что?)
>>806609Ты сам хоть раз видел WhatsApp? Видимо нет, раз такие вопросы задаешь. Там нет пароля. Авторизация по смс с подтверждением.
>>806597Её завезли, но потом убрали, а потом снова вернули, но с ограниченным функционалом. Так что, если нужно сделать с изображением что-то более сложные, чем просто показать его в заранее определённом ImageView, то нужно использовать либо растровую графику либо сторонние костыли. Другой анон
>>806451> норм ли в 2016 юзать ormlite?Абсолютно, сам юзаю его с котлином.К сожалению OrmLite осталась единственной ORM которая 1) НЕ вставляет тебе свой плагин в билд процесс2) может работать БЕЗ привязи к gradle/maven/ant - это просто jar файл
>>806621Какой же ты всё-таки говноед.
>>806623По факту возразить нечего?Обмазываешься фреймворками и кодогенераторами, что бы скрыть фактическое убожество java-android-разработки.
>>806621Опять таки плюс OrmLite, что ты используешь один код и под десктоп и под iOS (через RoboVM/IntelMOE/BugVM)Те можешь делать кросплатформенные приложения/игры (на libgdx) и хранить данные в sqlite.
>>806639> что ты используешь один кодНет, только ты здесь такой извращенец, обмазывающийся кроссплатформой.
>>806647Двачую. Я уже выше высказался, что он говноед.
>>806647 >>806654
>>806616Странно как-то. Даже для видоизмененного XMPP. Вутсупп должен периодически восстанавливать соединение. Если бы дело ограничивалось одним смс - он бы их после каждого продолжительного онлайна просил.
>>806820>онлайнаоффлайна, блджад.
>>806394Бамп
>>806618У меня довольно старое приложение. Графики там по минимому. Всякая мелочь, типа иконок и т.п. тупо только в одном разрешении - xhdpi (так выглядит более или менее норм, да и дизайнерам проще объяснить - типа делайте как для айпадов). Минимальное апи 14 ( андроид 4.0). Как появилась поддержка в старых версиях векторов, начал требовать новую графику в свгшках. Ниче, вроде все что требуется, пока работает. Ни на какие существенные ограничения не натыкался. Хотя, из-за старости приложения, материал дизайну соответсвуем весьма условно и сильно местами. Новый функционал делаем с намеками, старый не трогаем )). Анимаций очень по минимому, да и в приложении это особо не нужно, оно для суровых корпоративщиков/бухгалтеров, а не любителей смузи. Да и пилится по остаточному принципу, чтобы было. Типа у всех нормальных пацанов есть мобильные версии, должны быть и у нашей шарашкиной конторки.Где-нибудь можно почитать про ограничение vectorDrawable в support library по сравнению с нативными?Первый анон
>>807179>почитать про ограничение vectorDrawable в support library по сравнению с нативнымиСорян, анон, не получается нагуглить, но я где-то читал что для support library она по-моему просто тупо пре-рендерит их в битмапки и все.
>>806237> картинка парсится пикассо> картинка> парсится> пикассо
>клон airbnb вывесил вакансию с оплатой в размере "большое человеческое спасибо" и упоминание в эбаут>подался>нам нужен миддл+ с портфолио, сорянГоспода, кто-нибудь из вас работает ведроёбом? Как вкатывались?
Как думаете, реально написать мобильное приложение в функциональном стиле, без ООП, на одних функция и immutable структурах?Уже неделю об этом думаю, не дает покоя.Самым сложным пока видится отказ от DepenInjection подхода.Теперь все зависимости должны передаваться вместе с данным в параметрах.
>>807357Это что за клон такой? ООО "МухосраньОтельСервис"
>>807377ЗеЛокалс
>>807357Кто такой мидл+? Какими навыками он обладает?
>>807386Это у них нужно спрашивать. Может быть я señor, а меня даже за мидла не считаютПравда, я сам виноват. Писал неуверенно.
Может кто подсказать за retrofit 2.0 и multipart ?Суть в следующем - MultipartBody.Builder предлагает мне в метод addFormDataPart при добавлении файла передать параметр name и fileName ну и плюс RequestBody, содержащий сам файл. В api с которым я работаю нет ни намека на то, что body должен иметь какое-то название. Тащемта что туда пихать нада ?
>>807357А у тебя проекты то есть?
>>807422А какие проекты можно представить в портфолио?
>>807417Не знаешь, пихай имя файла с расширением (так браузеры поступают)
>>807438окей, а что где это название то отображаться будет ? То-ли я не проснулся еще, то-ли туплю
>>807422Нет.В своё время я хорошо разобрался, сделал бойлерплейт с использованием всех возможностей ОС и некоторых библиотек.
>>807439А тебе не все равно?
>>807451Хотелось бы понять все-же ;)
>>807417Ох лол чувак, я столкунулся с этим недавно, а бекендщик еще сука затейник, и я мог отправлять кучу файлов за раз. Сделал я вот так://декларация метода для отправки@Multipart@POST("scripts/upload/")Call<ResponseBody> uploadFiles( @PartMap Map<String,RequestBody> files);final RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file); //для кажого файликаfinal Map<String, RequestBody> map = new HashMap<>();map.put(createKey("files[]", file.getName()), requestBody); //вот так файлики пихал в итоге в body получается files[] для каждой части с именем какое есть у файла.final Call<ResponseBody> uploadCall = service.uploadFiles(map);То есть если козел на бекенде не указал никакого имени для части, пиши туда все что угодно мало мальски осмысленное. Я советую тебе пользоваться Postman'ом, так намного прозрачнее все получается. Но если ты конечно хочешь понять нахуй это все, то RTFM.
>>807463Большая человеческая (хотя какой я к черту человек - я программист под ведро) спасиба :D
>>807466Не за что, и вообще программисты под ведро таки же люди как энтерпрайз макаки. Да и все остальные.
>>807466Упс я забыл добавить самый хуевый этап этой отправки. А именно createKey:private static String createKey(String fieldName, String fileName) {____return String.format(Locale.US, "%s\"; filename=\"%s", fieldName, fileName);}И на всякий случай упомяну, что так каждую пару нужно в мапку засунуть я этого не написал.
>>807463Окей, если с простыми параметрами а-ля key-value и файлами так же key-value все понятно, то как впихнуть в эту херню массив других key-value пар ?К примеру добавить туда что-то такое:[{id:1,value:2},{id:2,value:1}]
>>807372https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs
>>807475> Да и все остальные.И пхпшники тоже?
>>807496Да да, уже видел, но что-то с JNI не хочется возиться (да и хаскель я не знаю).Есть другой JVM язык с свободными функциями и иммутабельными структурами и при этом статический.
Однако, вопрос актуален - как запихнуть массив, содержащий key-value пары, в okhttp3.RequestBody
>>807552Единственный вариант оказался ручным преобразованием списка в json-образный формат и передача его как text/plain. Оно таки заработало
>>807498Даже они (если на седьмом пишут). Только не 1Сники.
Пацаны, что написать для портфолио?
>>807605Стихи о весне.
Аноны, а как у вас организованна работа с базой данных в приложении? С точки зрения архитектуры, а не реализации.Repository pattern? Один жирный сингтон? Или как?
Я не понимаю чистую архитектуру. А точнее синхранизацию данных в ней.Берем стандартное список-детали. Презентер списка получает модели с которыми может работать вьюха и закидывает их туда.Осуществляем переход на конкретный айтем, он подгрузился по ид из репозитория презентером деталей и закинут во вьюху. Изменяем данные на детале, например ставим лайк, и тут собственно встает вопрос. Как оповестить презентер об изменении одного айтема того списка, который он показывает.1. Самое очевидное - евентбас. Презентер получит сообщение о том, что лайк проставлен и вызовет у конкретного элемента notifyItemChanged. Очевидный минус - презентер должен сам найти индекс измененного элемента, презентер начинает толстеть из-за таких бродкастов.2. Презентер является хостом для колбэка лоадера базы данных / реалма / ОРМ который поддерживает обсервабл запросы. Во время обновления базы - происходит полный реквери и нам приходится обновлять все элементы списка, а не конкретный. Так же получаем возможные проблемы с синхранизацией пагинации и оффлайн данных в бд. Неосуществимо, если эти данные вообще не зеркалируются в бд, а хранятся только в памяти. Так же нарушаем абстракцию и презентер становится зависим от реализации репозитория, а именно выбора бд в нем.
>>807701Вот, меня тоже все эти решения заебали.Сейчас даже Uncle Bob топит за функциональность.Соберусь вот с сила и напишу все на чистных функциях и UI компонентах (яля ReactJS, только на JVM)>>807372 -кун
>>807701Ты тупой блядь? Про ContentResolver не слышал?
>>807730Это даже толще чем советовать хаскель
>>807734Ага, значит первое.
>>807730Расскажи, как контент провайдер встраивается в эту архитектуру.
>>807746CursorAdaptor и нет проблем, на все обновления будет нотификейшн
>>807752> CursorAdaptor Курсор адаптер нельзя использовать в чистой архитектуре. У тебя получается что аж вьюха! знает о реализации бд. Если мы этот курсор оставляем в презентере, то получаем 2 пункт.
Ведроидеры - а вы тоже работаете в openspace-конюшнях? Или вы один такой пишете мобайл, и у вас отдельный кабинет?
>>807759Я работаю лёжа в гамаке, попивая кальвадос и трахая твою мамку.
>>807755Чистая архитектура - это миф.
>>807780Это идеал, к которому нужно стремиться.Да и опять же, курсор отвечает за сущности БД, а не сущности презентера/вьюх. Пусть у нас будет список с чекбоксами, причем значения чекбокса нас интересует только в контексте вьюхи/презентера. Самое удобное - иметь отдельные сущности, которые обладают свойствами сущности бд и имеют это булевское поле отмеченности. В итоге привязываясь чисто к курсору мы проебываем это поле и приходится заводить отдельный список с id выделенных элементов. А вдруг эти элементы без id?
>>807789У тебя какая-то каша в голове. Шизофазия, а не текст.
Есть карта. Есть БД с маркерами. Есть fragment с кнопками.Посоветуйте как это архитектурно сделать, чтобы не охуеть.Только без всякой ебани, типа RXJava.
>>807807https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs
>>807809Говно.
>>807814Очень приятно, Гремлин.
>>807752Ох, этот дух старой школы.Помнится я так кодил в 2011, когда джуном вкатывался.Эх золотое время было: Android 2.1, пуши только завезли, все телефоны с физической клавиатурой.
>>80783916 MB хватит всем :3
Репостну тутЧем заменить parse.com?Нарыл много статей со списками альтернатив, но реальных отзывов как-то не много. Я бы и простой бэкенд запилил на пыхе, но клиент хочет подешевле.У кого есть отзывы по таким бекендам? Может какие-то подводные камни.Ествественно хотелось бы подешевле, побольше бесплатных записей в базе данных, максимально простую конфигурацию, чтоб хуяк, хуяк и работалоВот наверно самая большая конпиляция https://github.com/relatedcode/ParseAlternativesИ обсуждение на реддитеhttps://www.reddit.com/r/webdev/comments/435teq/parse_is_shutting_down_what_are_good_alternatives/https://www.reddit.com/r/iOSProgramming/comments/436kcd/parse_alternatives/
>>808142Объясни нафиг он вообще нужен?Мне когда нужны были бэкенды к моим пэт-проектам, просто делал на ASP.NET Core, потом в докер-контейнер и на личный VPS.
>>807839И чем по твоему это решение в 2016 плохо? Что предложишь взамен?
>>808142Firebase или backendless
>>808193> И чем по твоему это решение в 2016 плохо? Тем, что был разработан во времена 16mb MemoryClass, когда за каждый мегабайт был на счету.Тогда было не до АРХИТЕКТУРЫ, мы же здесь не юзаем C++/Obj-C, у нас тут Java VM.> Что предложишь взамен?Это тебе на подумать:https://www.youtube.com/watch?v=o_TH-Y78tt4https://www.youtube.com/watch?v=7Zlp9rKHGD4Конкретные решения предлогать не буду - уже сто раз обсасывали.Да и нет одного-универсального решения, даже CursorAdapter+ContentProvider имеет какие-то плюсы.
>>808161У меня не пэт проект. На своём серваке не хочу держать. Вдруг дохуя юзеров набежит и положит его. А облачные бэкенды многие вообще бесплатные до какого-то лимита
>>808315> Нужно что бы бесплатно> Вдруг дохуя юзеров набежит и положит его.Ну ну, я вижу у тебя тут сириус-бизнес> А облачные бэкендыТак, я все равно не понял, у тебя там бэкенд уровня firebase?Или что-то реально сложное: много бизнес-логики/базы/транзакции/хитрожопое кэширование.Если да, то на чем ты ее пишешь? И тебе не стремно отдавать самое ценное (информация о юзерах) на какой-то халявный сервис?
>>808325Ничего сложного. Клиенту влом выбирать, где будет бэкенд, но он хочет максимально дешёвое решение. Но, возможно клиент будет раскручивать приложение, может и набежит. А у меня сервер не дорогой, не так много места. Нахуй ещё хостить клиентские приложения? Да и там у меня свои личные сервисы, ценные для меня данные. Они должны быть всегда доступны
>>808342Шли нахуй, пост-прод суппорт всегда в разы дороже девелопимента, если денег на это нет, то пусть, сука, ищет сервак и индуса.
>>805985где почитать про 2 вызова у relative ?
>>808419https://stackoverflow.com/questions/4069037/android-is-a-relativelayout-more-expensive-than-a-linearlayout> A RelativeLayout always has to do two measure passes.
Поясните за такие вопросы:0. Проги пишите на java или в 2016 все юзают более высокоуровневые вещи типа скалки или котлина?(хамарины, кордовы, реактнейтивы не в счет)1. Какие api, части фреймворка должен хорошо знать нормальный мидл, сениор? Требуют ли сейчас лезть в дебри ndk?Какие библиотеки в тренде(orm, di)?2.Труднее ли сейчас реверсить прилаги? Вангую что с распостранением тучи фреймворков(roboVm, cordova, react), библиоткет типа moxy, даггеров, сложность реверса выросла на порядок) + в андройд студио по умолчанию намекают что неплохо бы использовать прогуард. Art какой-то вместа далвика появился. Если ли в треде мамкины хакеры для квалифицированного ответа? Охуел как засрали тредами pr школьники на каникулах
>>808690> Проги пишите на java или в 2016 все юзают более высокоуровневые вещи типа скалки или котлина?Иногда юзают, но джава наиболее ходовая.> Какие api, части фреймворка должен хорошо знать нормальный мидл, сениор?Все, очевидно же.> Требуют ли сейчас лезть в дебри ndk?Нет. Ндк нужен тогда, когда он нужен, это не то, что каждый обязан знать.> Труднее ли сейчас реверсить прилаги?Немного труднее, но в целом — всё так же легко.
>>808774Пошел нахуй со своим говном.
>>808855>Все, очевидно же.Ну не скажи, куча классных вещей появилась, замен, которые далеко не сразу схватишь: list view, action bar, activity->fragments, преференсы. Хотяб напиши что сейчас не юзают, я последний раз говнокодил на эклипсе прилаги на gingerbread
>>809155>list view-> recycle>action bar-> toolbarБыстрофиксАпи камеры еще нихуево так поменялись
>>809155Даже не знаю сходу не назову. Не юзают то, что помечено как deprecated, и то далеко не всегда. А вообще любой разработчик обязан от корки до корки знать API системы, по крайней мере, в той области, что от него требуется.ListView используется, ActionBar используется, зря ты так, никуда они не ушли и никогда не уйдут.
>>809156> Апи камеры еще нихуево так поменялись Правда, как было говном, так им и осталось.
>>809156> Апи камеры еще нихуево так поменялисьАга, только тебе будет похуй уще лет 5, пока не станет minSdk 21.>>809169> ActionBar используетсяЗачем? Какие преимущества перед тулбарой?
>>809169>листвью>используется Кем?
>>809214> Зачем? Какие преимущества перед тулбарой?Никаких, кроме того, что он стоит по дефолту. Нужна кастомизация — ставишь тулбар. Не нужна — оставляешь экшнбар.>>809216Кем угодно.
А есть какое-то преимущество в плане быстродействия у ресайклервью перед листвью с реализованным холдерпаттерном?
Андроидо куны, нужна помощь.В общем, есть у меня один клик, по которому должно открываться новое окно.иногда оно не открывается из-за ИндексАутОфБаунд эксепшн.Исправлять я её не хочу, пусть ловится, но я хочу в том месте, где она появляется поставить вместо ебучего окна "Приложение завершит работу из-за ошибки" тоаст или аналогичную хуйню, типа "Уппс, с этой кнопнокй что-то не так".Вопрос: где ловить этот эксепшн и ставить трай-кэтч? В онКриейт не работает.
>>809214> Ага, только тебе будет похуй уще лет 5, пока не станет minSdk 21.Вообще-то, нужно проверять в рантайме версию СДК и использовать соответствующий класс камеры.
>>809428Пиздец у тебя там говнокод.
>>809429> нужно> Note: The following guide is for the older, deprecated Camera API. For new or advanced camera applications, the newer android.hardware.camera2 API is recommended.Рекомендуется. Есть много вещей которые гугл рекомендует, но на них кладется хуй.
>>809431исправил, лол. просто не все объекты в листе были указаны
Аноны, как вы делаете переходы между фрагментами в MVP? Интерфейс у активити с методами openMocha(int mochaId) и фрагменты вызывают эти методы?
Здравсвуйте, тут поговаривают кому-то нечего написать для портфолио. Есть один реквест, но хотелось бы чтобы писал человек для которого удобство>дизайн.Существующие приложения по реквесту имеют несколько состояний, так что думаю может даже быть востребовано в маркете1. Полное говно.2. Красивое, но нефункциональное и неудобное говно.3. Сдохшее говно.4. Кривое говно.
>>809743И в чем проблема написать его прямо сюда под спойлером, а не разводить воду?
>>809743Пошел нахуй, плиз.
Ананасы, я так понимаю, хентай из Гугл Плэя будет выпилен стопроцентно? Где граница между "содержащие материалы" и "акцентирующие внимание "?
>>810013Как дела обстоят с фуррятинкой?
>>809743Твои реквесты нахуй не нужны.
поясните, в чем профит rxjava?Ну вот перевел я retrofit запросы на observable и что? считай тоже самое что и было (тот же листенер, тот же call на который нужно отписаться в onDestroy)почитал про zip, amb, еще там занимательные методы - ну прикольно конечно, но ведь это не то что используется часто?Где это супер удобство и улучшение структуры кода о котором все так кричат?
>>810147map, flatMap, doOnNext для кэширования, onErrorReturn для получения из кэша если запрос проебался.
>>810147>поясните, в чем профит rxjava?А нету его, особенно учитываю android-жизненные-циклы у тебя появляется только доп. головная боль.В итоге в подавляющем кол-ве юзкейсов тебе достаточно промисов или completablefutureВот тут я рассписал >>799500 >>799528>>810157>map, flatMap, doOnNext для кэширования, onErrorReturnВот все это барахло есть в том же CF
Надо отобразить список, список всегда будет короткий, вряд ли даже за пределы экрана вылезет. Стоит ли использовать RecyclerView, если там собственно никакого recycling не будет происходить или можно обойтись ListView?
>>810189>ListViewТы же в курсе что ListView тоже "recycling" дочерние вью?Может ты хотел сказать LinearLayout+ScrollView ?
>>810189Пользуйся чем хочешь. Скоро издам книгу под лозунгом: "Нормально делай - нормально будет." Вместе с романом: "Как делать нормально не только спрашивая у обмудков с двачей."Если тебя смущает что пацаны засмеют, то делай ресайклер. Как мне он лучше по апи.
>>810191Я забыл, запутался из-за названий. Однако RecyclerView заставляет использовать ViewHolder паттерн и не создавать новые вьюхи и не гонять по ним findViewById. Что мне в общем-то не нужно.Пишут что у RecyclerView больше возможностей по расширению, можно допилить анимации по клику, разделители итд почти без ебли. Мне пока не особо нужно.>>810193Я делаю учебное приложение чтобы меня потом взяли на работу, поэтому меня смущает если пацаны засмеют. Сделаю ресайклер знач.
>>810203Бля, что-то я уже запутался кто ресайклит а кто нет, однако похуй раз уж я решил что брать.
>>810205Все ресайклят, только в ListView тебе нужно сделать ветвление если вдруг нечего ресайклить. А в RecyclerView создание и заполнение отдельно. ну и он действительно более кастомизируемый.
>>808690>пралаги
>>810161Пошёл нахуй со своими промисами, даун. Как они по твоему решают проблемы асинхронного кода?
>>810230>Как они по твоему решают проблемы асинхронного кода?1) Обучись манерам общения2) Погугли что такое промисыПосле этого будем что-то обсуждать.
>>810193Долбит #нормально
>>810235#НОРМАЛЬНО
>>810234Как и ожидалось, лишь кукареканье вместо аргументов.
>>810234И да, обучился тебе за щеку. Проверяй.
>>810147Rx - это не про архитектуру, а про лечение проблем, связанным с асинхронными вызовами: большое количество скрытых состояний, сложная обработка ошибок, callback hell, проблемы при работе с несколькими источниками данных и кэшированием. Если у тебя лишь один вызов по типу "сходил в сеть, отобразил результаты", то да, большого преимущества ты не увидишь.
>>810239> Эти типичный фразочки разорванной жопкиТак легко детектят в тебе школьники.Извини, с тобой общаться - ниже моего достоинства.
У меня есть сервис, который может работать в бекграунде.Когда запускаю активити, нужно проверить запущен ли сервис. Сейчас написал костыль который проверяет все запущенные сервисы и спрашивает у них имя класса.Как сделать по-нормальному? В книге которую я читал недавно делали ordered broadcast, и подписывались на него в двух местах, и возвращали разные результаты в разных местах, но тоже какой-то пиздец по-моему.Слышал про какой-то event bus, но не пробовал, используют ли сейчас это?
Аноны, дайте примеры прог, которые не стыдно будет показать на собеседовании синьора
>>810245> Перейду на грмнтекст и скажу, что Я ВЫШЕ ЭТОГО, как будто это поможет мне не слиться.
>>810264Wishmaster
>>810249А зачем тебе это?
>>810264Трекер твоего передвижения без гпс и интернета (иногда они конечно работают что бы найти позицию от которой отталкиваться).
>>810277Затем, чтобы показывать разные активити в зависимости от того, работает сервис или нет.У меня в будильнике музыка играет сервисом, если запустить хочу показать интерфейс для его выключения, если не играет тогда список будильников.
>>810301А синглтон ты не используешь потому что... (что?)
>>810311Хороший вопрос, не вижу для него проблемы в onCreate сервиса вызвать у синглтона setAlarming true, а при открытии/onDestroy сбросить в false.
>>810311Хуй его знает, а насколько это идиоматично в андроиде? Не хочу делать явных костылей, если у проблемы есть решение в SDK.Если делать синглтон, то сделать отдельный класс типа AlarmState, как например делают Repository?
>>810352> Android> идиоматичноТы же в курсе что Android == Просто набор костылейЛучше делать как идиоматичней в чистой Java (а еще лучше Groovy/Kotlin/Scala),завязываясь по минимуму на Android "архитектуру".
Так, аноняши, какой сейчас статус Jack & Jill?Могу я сейчас начать новый проект в AndroidStudio для API 14 и юзать волшебные лямбды и Stream API?
>>810355>Ты же в курсе что Android == Просто набор костылейНет, не в курсе, я вообще зелёный ещё.Читал пост разработчика о том, что свою архитектуру пусть каждый себе сам выдумывает, а андроид это чуть ли не набор системных вызовов. Но я подумал: наверняка уже у людей сформировались какие-то best-practices за это время.Effective Java норм будет для некоторого просветления?
>>810365Хуевый статус. Юзай ретролямбду с бэкпортом стримов и не выебывайся.
>>810383> Хуевый статусЧто с ними не так?
>>810385Всё.
>>810388Аргументов нет, так и запишем.
>>810385Transform API is not supported by Jack - there is no intermediate Java bytecode you can modify, so some plugins I didn't mention here will stop workingAnnotation processing is not currently supported by Jack, so if you heavily depend on libraries like Dagger, AutoValue, etc., you should think twice before switching to Jack. EDIT: As pointed out by Jake Wharton, Jack in N Preview has annotation processing support, but it is not exposed yet through Gradle.Lint detectors which operate on a Java bytecode level are not supportedJack is currently slower than javac + dxJacoco is not supported - well, I personally find Jacoco questionable (it doesnt really show what you want to see), so can totally live without itDexguard - enterprise version of Proguard is not currently supported
>>810385И кстати, какой нахуй стрим апи? Нет его там.
>>810407А, что-то подобное я слышал, хотя я думал, что список будет более солидным. Просто странно, так громко кричали о поддержке фич из Java 8 уже в следующей версии сдк, а получилось как всегда, ну по крайней скорее пока что.Ещё заметил, что нельзя библиотеки через provided подключать, Jack их полностью игнорирует.
>>810407Как хорошо что я давно на котлин перекатился :3
>>810425Ну из списка только трансформейшон апи критично. apt много какие либы используют.>>810445Ну и котлин не поддерживается. Джетбреинсы даже вроде все сами написали для поддержки, но их динамят с пуллом ревестом.
>>810452>Ну и котлин не поддерживаетсяНу и нафиг он мне вообще нужен, если в нем даже портов восмерочного апи не будет?..
Юзал кто-нибудь такую хуетень для реверсинга?https://redmine.honeynet.org/projects/are/wiki
>>809480ну, никто не юзает мвп?
>>810147Его нет.Начиная возню с rxjava, ты надеешься красивенько и ладненько сделать асинхронные вызовы с сопутствующими операциями, вместо громоздких лоадеров.В итоге ты подстраиваешь архитектуру под то, чтобы твой rx вменяемо работал с жизненным циклом
>>809480Да. Только при чем тут мвп? У тебя и фрагмент, и активити - это view
>>810445> Как хорошо что я давно на котлин перекатился :3Ну так у котлина треть из перечисленных проблем Jack'a присутствует. Непонятно, чему ты радуешься.
>>810694 То есть это rxjava виновата, что у тебя говно вместо архитектуры, но никак не ты? Понятно, понятно.
>>810755Нет у меня никаких проблем, уже пару месяцев в продакнеш пишу на 1.0.3.В личном проекте на 1.1-preview перешел и все ок.Кодо-генерацию не использую по идейным соображениям.Хотя он поддерживает и Dagger2 и какой-нибудь Realm.
>>810855У тебя нет, у котлина есть.
итак, пацаныподскажите че за хуйннянаписал кастомный адаптер наследующий RecyclerViewAdapterпытаюсь написать обработчик кликов в адаптеревроде бы все получаетсяа теперь, когда мне в мейн активити надо вызвать метод из класса адаптера, то он его тупо не видит, хотя метод паблик и все с ним нормальноподскажите что не такадаптер - http://pastebin.com/yKrbaPE5мейн активити - http://pastebin.com/51cYJj2qбуду благодарен
>>810855>Кодо-генерацию не использую по идейным соображениямРасскажи-ка, рефлексия наше все или ты любишь мануальную терапию?
>>810972DSL + inline functions + extension lambdas
>>810934>пытаюсь написать обработчик кликов в адаптереЕму там немного не место. Вот этот твой инер класс с итем клик листенером в адаптере, это пиздец как по мне. Я все клики обрабатываю в специальных хендлерах которые вешаются на созданные вьюшки через датабайндинг. А метод твой не рабоатет потому что у RecyclerView.Adapter его тупо нет, или кастую к своему горе адаптеру или подсмотри как это делают другие, но такого подхода я не видел нигде. Ты или невнимательный, или пытаешься сделать как в динамической дрисне, или не понимаешь механизма ООП как его реализует джавка.
>>810977Ясно.
>>810978делал по этому гайдуhttp://www.codexpedia.com/android/defining-item-click-listener-for-recyclerview-in-android/типо сам гайд неправильный?
>>810934Нихуя не понятно мне в твоём коде, но в тех 2.5 приложений которые я делал, я делал следующее (допустим, у меня список хуёв):1. HuiHolder extends RecyclerView.ViewHolder implements onClickListener2. добавляю onClick метод в HuiHolder3. В конструкторе HuiHolder: itemView.setOnClickListener(this);
>>810986http://pastebin.com/yKrbaPE5с 41-ой строчки все то, что ты написал
>>810982Гайд с технической стороны правильный, но лично мне не нравится.>>810992Ты не понимаешь видимо разницы между тем что делает он и что делаешь ты.И да, у тебя ошибка в типе адаптера.private CityAdapter mAdapter; а не RecyclerView.AdapterПодумай над всем еще раз или иди в js-тред.
>>810996всмысле разницу не понимаю?он написал как он делал, я сказал, что делал точно также поменял тип, вроде нажатие работает
>>810992Да, точно. Не дочитал, лол.Не знаю, на позиции ли я что-то советовать, но я бы для начала попереименовывал классы и методы, чтобы было понятно кто что делает.MainActivity::onClick - метод ничего не делате с аргументом view, название не отражает его сути, да и вообще по-моему он лишний. Я бы всю логику внутри него перенёс внутрь HuiHolder.MyAdapter.ViewHolder и ViewHolder extends RecyclerView.ViewHolder тоже нихуя не понятно что там к чему.Если у тебя эти костыли с кучей методов для того, чтобы выковырять твой StepDB step по клику, то я делал следующее:1. в HuiHolder добавил метод bind(Hui hui) и поле Hui mHui.2. Всю логику, которая сейчас в onBindViewHolder перенёс туда в метод bind выше. В onBindViewHolder же просто Hui hui = huis.get(i); holder.bind(hui);3. Внутри onClickListener, который находится в HuiHolder Intent i = HuiDetailActivity.makeIntent(mHui); startActivity(i);
>>801015 (OP)>Разработка под Android Как тут обстоят дела с фрилансом, господа?Ньюфаг
>>811003Ты не так делаешь, подумай о разнице между внутренними классами и тем как делает он. У него листенером работает сам холдер, и холдер не имеет неявной ссылки на адаптер. Так что ты не делаешь точно так же.
>>811024Миллионы индусов и школьников. Я беспруфный, так что просто кукарекаю, попробуй посмотреть заказы на одеске и еще где-то.
>>811012ну во-первых эта версия кода далека от нормального так как это мое первое приложение и рефракторингом и прочей фигней буду заниматься попозже, когда распишу весь функционала вот насчет метода биндне совсем понял что ты имеешь ввидупросто я все это делал по туториалу по созданию ресайклвью и там было сказаноо, что надо прописывать все в onBindViewHolderтипо этот метод правильнее будет создавать?
>>811026а ну в этом плане согласенно все равно же работает
>>811044onBindViewHolder нужно реализовать обязательно, т.к. это часть контракта по использованию адаптера. А что делать внутри него ты уже решаешь сам, как царь и бог своей laba1, можешь весь функционал внутри держать, можешь вынести в отдельный метод что-то.В случае с bind, можешь перенести функционал внутрь объекта, надо которым работаешь и передавать туда необходимые параметры. Теперь твой ViewHolder сможет хранить ссылку на объект, упаковать его в интент и запустить активити по клику.Это не я придумал, так делали в книге Android Nerd's ranch guide, но мне понравилось.
>>810378>Effective Java норм будет для некоторого просветления?Это тебе в java-тред. Я бы посоветовал "Чистый код", может быть еще "Code Complete".Видео от автора: https://www.youtube.com/watch?v=Nltqi7ODZTMТам в примере RubyOnRails как фреймворк, который ограничивает твою свободу,но думаю ты сможешь провести параллели в Android.
>>811052советуешь эту книгу для начинающего?
>>811071Да. Я сам в принципе начинающий, но лучше ресурса не видел. Вводный курс на udacity - параша (вроде бы скоро должны обновить), курсы на coursera вообще ебануться говно, The Busy Coder’s Guide to Android Development - справочник а не учебник.
>>811054Заебок, спасибо большое.
>>811082а джаву скоко до этого учил?
>>811087Целенаправленно джаву отдельно от андроида не учил, но подучивал-почитывал параллельно.Я любитель онлайн-курсов вообще, проходил курс по алгоритмам на курсере, он на джаве, до него джаву не знал, там набрался каких-то основ, года два назад или три.Почитывал книги и посматривал курсы вместе с андроидом, но не увлекался. Читать объёмные талмуды по джаве где треть книги объясняют циклы и типы данных и ещё треть какую-то библиотеку для гуя желания не было.
>>811082> Вводный курс на udacity - параша Это ты параша.
>>811124Оу, любитель жаба-раша пожаловал
Сап, а какие есть нестандартные паттерны для разработки под ведро ?
>>811149>нестандартные паттерны для разработки под ведро ?>>807372 я правда еще не проверял
>>811124Я имею в виду не курс для начинающих, а самый старый курс интермидиейт сложности, на который ещё ссылка есть с официального сайта.Непоследовательная подача информации, с задачами уровня "отредактируй этот код, добавь в него список и он заработает :^)" причём с первых недель.Курс не объясняет мотивации принятых решений, почему это делается так или так, зачем нужны компоненты. Очень много информации вразнобой.Недавно на /r/androiddev мелькал пацанчик из стаффа этого курса и сам признался, что курс устаревший и хуёвый, и что сейчас идёт работа над доведением курса до ума. Сам жду новой версии посмотреть что там будет.
>>811149HaskellActivityNativeActivity, но в меньшей степени.React Native + ClojureScript + KotlinScript
>>811162Не проще ли чем по курсам учиться - взять и прочитать пару книжек параллельно пытаясь сделать что-нибудь свое консультируясь по всем сложностям здесь и на стэке ?
Какое можно сделать приложение, использующее Bluetooth?
>>811185Банально позволяющее вывести список устройств неподалеку с их названиями, возможностью подключения и обмена данными, не ?
>>811182Нет, курсы это гораздо проще и эффективнее чем книги (если нормальный курс), но как правило это справедливо только для начинающего (курсы обычно делают с минимальным порогом вхождения чтобы охватить бОльшую аудиторию).В такой сфере как андроид книги по-видимому вообще выпадают, вместо них блоги и туториалы всякие.
>>811208а я говорю про то, как стать нормальным разрабом, а не новичком :) То что проходится на курсах гораздо проще на проекте изучить и понять, почему должно быть именно так :)))
Последнее время начал косячить rx - пишу например post-запрос на серв, добавляю observeOn(Schedulers.io()).subscibeOn(AndroidSchedulers.mainThread()) и мне кидает networkOnMainThread. При том в любых комбинациях, даже и там и там Schedulers.io()
>>811226>observeOn(Schedulers.io()).subscibeOn(AndroidSchedulers.mainThread())ты аргументы observerOn/subscribeOn перепутал :)
>>811218)))))))))))))))))))))))
>>811228Даже когда я пишу в оба Schedulers.io() оно выдает эту ошибку
>>811244observeOn(AndroidSchedulers.mainThread()).subscibeOn(Schedulers.io())
Пацаны как вкатится в ведроид разработку с IDEA?Не хочу менять её на какие-то студии. Что мне нужно знать?В ведроид разработке есть фриланс?
>>811515> её на какие-то студииЭто тож самое.
>>811517>тож самоеНу если ведростудия может в контрл+пробел, контрлшифт интер, контрл альт Л и прочие комбинации из IDEA то ладно.
>>811539Ты тупой?
>>811620Да все глянул, что там фичи идеи. Окей. В ведроид фриланс есть?
>>811646Ты тупой.
>>811185Берешь любой BT гаджет с открытым исходным кодом и фигачишь.
>>811763Фубля, что-то я с утра чушь пишу.Не с открытым кодом, а с документацией.
Судари, у меня к вам вопрос. Предложили работу, Android Junioro'м. Собственно, в Java чувствую себя уверенно, с базами данных тоже дружу.От меня требуется только знание basics of Android SDK. Очевидно, что иду на сайт Google и читаю гайды. Есть ли ещё какие-то ресурсы, где кратко поясняются принципы и архитектура приложения? Чтобы без воды, самая суть. Можно с "высоты" птичьего полёта.
>>811870> принципы и архитектура приложенияКаждый строит свой костыль поверх костылей андроид сдк. Даже в реализации мвп от разных людей есть различия.
Да ну ебаный в рот сука, чего ему сука не хватает, я уже прописал блять STUDIO_SDK на 8 джаву, запустил из кокококнсольки, а ему похуй.
>>811897JAVA_HOME поставил?
>>811965Конечно.
Анон, памаги с ВкАпи. Есть один тупой вопрос насчет диалогов - как получить имя собеседника? Если использовать title сообщения(dialogs.message.title), то я получу только названия беседы, а вместо имя обычного собеседника - троеточие. Могу получить user id (dialogs.message.title), но как с него получить имя\фамилию - хз
>>812277Может быть messages.getChatUsers?
>>811763Нужно что-то без специальных гаджетов. Только между телефоном (или планшетом)
Котаны, почему под андроид нет chatrandom или его аналога?
>>812432Я б написал с кем-нибудь
>>812432Дохуя аналогов же в Play сторе.
>>812277имеешь userId ==> можешь юзать users.get()
>>812471Покажи хотя бы один.
>mHui, mContext, mDermoVengerca, mPenisКогда вы перестанете это говно писать?
>>812692Почему так нельзя писать?
>>812693Потому что со времен адекватных ide твоя ебаная венгерская нотация не имеет никакого значения.
>>812694Продолжай.
>>812692Двачую, бомбит люто. Использую, потому что везде используют и студия сама предлагает такие имена переменных. Решил быть во всём конформистом, подыскивая работу.Никакой информативной ценности эти префиксы не представляют.
>>811870https://plus.google.com/+DianneHackborn/posts/FXCCYxepsDU
>>812755> Никакой информативной ценности эти префиксы не представляют.Они легко позволяют отличить поле класса от переменной внутри метода.
>>812771>>812694
>>812771Господа, к нам пожаловал последователь Шилдта "пиши в блокноте / компиль консоле"
>>812774Я тебе уже ответил >>812697>>812792Почему бы да?
Как создать ещё одну папку для ресурсов (аналогичную res)?
>>812816Его подход устарел, в Java 9 (уже можно юзать) есть JShell - это repl для джавы с комплишеном.
>>812816Конкретно префикс m тебе дает ровным счетом ничего. Если тебе нужно явно указать принадлежность к классу, то есть this, неявно подсветит ide. Если ты боишься потеряться в переменных, то с твоим классом / методом скорей всего что-то не так, и лучше его раздробить. А об твою m взгляд всегда спотыкается при просмотре кода.
>>812851> Конкретно префикс m тебе дает ровным счетом ничего.Даёт. Я точно знаю, что это поле класса.> Если тебе нужно явно указать принадлежность к классу, то есть this, неявно подсветит ide.Конечно подсветит в случае присваивания. А в случае обращения далеко не факт. Одно дело ты пишешь код, другое — читаешь через некоторое время или даёшь его читать другим.> А об твою m взгляд всегда спотыкается при просмотре кода.У меня не спотыкается, проблемы на вашей стороне. Давно уже воспринимаю этот стиль как само собой разумеющееся.
>>812855Ох ребята, развели тут опять нюфага-java-срач.А нормальные люди пишут на котлине, где вообще нет полей и есть primary-конструкторы.
>>812885> А три с половиной инвалида пишут на котлинеПофиксил.
>>811024Если совсем ньюфаня можешь сразу навернуть соленых без гречки. На одеске в основной массе хотят кроссплатформенность либо предлагают допилить почти готовое приложение и тебе кроме андроеда придется освоить еще херову тучу вещей, оставшейся немногочиленная прослойка занята ебанутыми с размытыми требованиями, которые сами не знают чего хотят или "плачу 200$ после того как приложение начнет приносить прибыль не меньше чем 100500$ в месяц". Готов ли ты к такому сынок?>>812692Двачую люто, а таких ушлепенцев море, все от того что тупо, по обезьяньи копируют гайды гугла в котором добавлять эту поеботу "code convention". Небось гугловцев еще и взъебывают на ревью если 'м' не поставили.
>>812892>code conventionЭто даже не официальная конвенция, я где-то видел пост где какие-то гугловцы от этой параши открещивались.
Двачаны, нужно загружать текст из файла txt, который должен висеть где-то в онлайне и быть доступным для редактирования. Ссылку свою он менять не должен.Подскажите, какой файлообменник(или что там) юзать, куда загружать текстовый файл и как мне его прочесть потом? Полагаю, что открыть ссылку через jsoup или просто http connect будет изи ,но как потом прочесть файл, висящий где-то в облаке?
>>812963Гитхаб.
>>812964а. постой. гит не вариант, так как файл в последствии будут редактировать "зеленые" люди, которые особо не секут в этих делах.Им надо просто зайти будет в файлообменик и отредактировать файл, вставив туда свои ссылки/цифры/тексты.От гита они ебанутся.Как открыть файл я уже понял, но нужно такой обменник(облака или что), чтоб андроид особо не ебался с защитой и т.д. В общем, чтоб файл могли редактировать определенные зеленые люди(человек с аккаунтом в одноклассниках), но чтоб никто к нему доступа, кроме этого человека и андроид приложухи не имел.
>>812964Как файлообменник.>>812963Остальное прочтешь в любых гайдах по андроиду, а пока сажа.
>>812965В гитхабе файл можно изменять прямо в вебе. Дашь ему доступ на изменение.
>>812969>>812969>>812967http://www.puzzlers.org/pub/wordlists/pocket.txtНужно что-то вроде такого
Читается спокойно вот так try { URL url = new URL("http://www.puzzlers.org/pub/wordlists/pocket.txt"); Scanner scn = new Scanner(url.openStream()); while(scn.hasNextLine()){ String s = scn.nextLine(); System.out.println(s); }Теперь надо такое же найти. про сервак я
>>812981>>812979>>812969с дропбокс не работает. инфа сотка
>>813024там одни веб-мрази.
>>812679Чат вдвоём, nekto me
Линуксоиды, выручайте. Как в студии сделать шрифты, чтобы были как справа? Я так понимаю, нужно поставить хинтинг, на стековерфлоу постят какие-то настройки, но они не настраивают хинтинг. Может, есть какой-нибудь другой способ, ну, пропатчить там что-то.И посоветуйте, пожалуйста, годную светлую тему, с не самым ярким цветом фона.
>>813238пересесть на macOS/Windows
>>813242Там adb не авторизует мой основной телефон
>>813246Поставь USB дрова от Google, идут в комплекте Android SDK
>>813246На макоси всё авторизовало с первого раза.
Помогите нюфане плиз. Что произойдет если в основном потоке выполняется какой-либо метод и в другом потоке в этот момент эвентбас отправит объект субскрайберу (тоже в основном потоке)? Завершится ли корректно выполняемый метод? Или начнет выполнение субскрайбер?
>>813259Выбрать "переустановить драйвера" в диспетчере устройств?>>813286Накатить что-ли хакинтош потом
>>802043>пикассоВ очко тебе лассо.мимо адепт фресколиб
>>813302Не знаток веброд разработки, но обычно есть отдельный момент времени в тике главного потока когда идет обработка всех лиснеров.То есть мейн поток выполнит твой метод, пойдет дальше работать, дойдет до участка где он обрабатывает колбеки и отправляет их субскрайберам.
Каким образом в крупных компаниях тестируют приложения, которые работают с Bluetooth устройствами?
>>813325https://riggaroo.co.za/introduction-automated-android-testing/
>>813325Мокают ответ блютуза?Ну это на стадии юнит тестирования.А потом все равно надо потестить собственно физически.
Какое место в архитектуре MVP занимает Loader?Модель? Юзается в презентере?
>>813338в презентере колбэки.
>>813338Покажите как выглядит мвп
>>813316Фейсбучное говно? Нет, спасибо.мимо глайдобог
>>813302А потом такие как он рассказывают в треде, что RXJAVA НЕНУЖНА!11
>>813327У меня, кстати, иногда припекает с этой тётки. Абсолютно бессмысленные статьи, наполненные водой процентов на 70%. Но зато звезда android-тусовки и Google Developer Expert.
>>813377я только сервис с презентером связываю с помощью эвентбаса. Все остальное с помощью RxJava. И я если честно не представляю в чем была бы разница касаемо моего вопроса. Если знаешь ответ, прошу объясни
>>813391Ты так вопрос сформулировал, что нихуя не понятно, кроме того, что у тебя там какая-то хуйня с потоками и коллбэками.Код показывай.
>>813375>глайд>не говно
>>813400Ну а что по-твоему не говно? UIL какой-нибудь древний?
>>813402fresco не говно. Всё остальное говно.
>>813302Выполнение методов в потоке синхронизировано. Выполнится первый метод, потом коллбэк
>>813377Конечно ненужна.Нет - она нужна какому-нибудь клиенту телеграмма, или основному приложению вк.Для твоей хуйни с тремя реквестами и возвращаемым "hello, word" - ненужна
>>813404Ну-ну, лол.
>>813406> ненужнаСпасибо за авторитетное мнение! Как же мы тут без тебя справимся, когда сентябрь начнется?
>>813410Да, без тебя в сентябре тут будет скучно
>>813394Ну кароч есть сервис, в котором в io треде выполняется тяжелый код. По окончании выполнения, через эвентбас, происходит отправка эвента. В презентере на этот эвент подписан каллбэк. Вопрос: если в презентере в мейнтреде выполняется код, и в этот же момент произошла отправка эвента из сервиса, то какая будет очередность? Я вроде попробовал, и каллбэк начинает выполнение только после завершения метода, но всегда ли так будет?
>>813405Благодарю
Господа, подскажите что за феномен. Собираю я короч релиз версию, а он мне такой - 64k соси хуй. Ну я такой, вставил мультидекс врубил прогвард на все что можно. Прирост на картинке. ЧТО ЗА ГОВНО НАХУЙ? И знаете что меня больше всего смущает? ДЕБАГ СБОРКА РАБОЧАЯ И БЕЗ МУЛЬТИДЕКСА ВСЕ ВЛЕЗАЕТ. Кто виноват и что делать? Отличия релиза от дебага - включенный прогвард и выкидывание несипользуемых ресурсов, не то что они у меня есть, но на всякий случай. Я значит чего-то не понимаю, как может один и тот же код собиратсья без мультидекса если у меня куча методов, или это баг?
>>813434Ну так ProGuard и вырезает неиспользуемые методы. Что тебя смущает?
>>813437Меня смущает, что дебаг сборка собирается без МУЛЬТИДЕКСА. А релиз с прогвардом без него не собирается, мол методов уже 64к, в один dex файл не влезает. Ты же понимаешь что мультидекс тормозит старт приложения да и потом небось тоже есть оверхед?
>>813439Нихуя он не тормозит, он лишь компиляцию замедляет.А в debug-сборку всё влезает - это наверное из-за инстант рана, внутри него что-то вроде принудительного мультидекса есть.
>>813441Кхм, нужно будет проверить мои знания про мультидекс. Очень даже возможно что ты прав насчет инстант рана, заметил что после того как включил его в лог писалась какая-то хуйня про несколько декс файлов при установке приложения мдаа.
Каким образом искать регресс после включения proguard?Ведь часто это приводит к крашам где попало.
>>813565UI-Tests / monkey runner
>>813565Т Е С Т ЫЕСТЫ
>>813406пока такие нюфани юзают всякие новомодные либы, не зная как работает обычный поток, я могу быть спокоен за свое будущее
>>813631многопоточнасть #НЕНУЖНА
>>813380Зато увеличивает энтропию джендер дайвёсити.
Сап, котаны. Последняя сборка проекта длилась 15 минут, и меня что-то перекрыло. Есть возможность заставить эту машину смерти работать быстрее ? ( обновил сейчас с 1.5 до 2.1.2 gradle tools, посмотрим что выйдет )
>>813782с 2.1.2 забилдилось за 3 минуты 30 секунд, что тоже треш
>>813783Попробуй отключить "instant run"
>>813788уже, также все в properties поставил что нужно, сделал дебаг сборку по 21 api level minSdk
>>813782Дай больше оперативы градлу.
Андроидо-куны, дайте инфу, как русскоязычный текст сделать нормальным при парсинге? Пизжу из файла в вебе, если текст русский - какие-то знаки вопроса в ромбиках.С ангельским всё норм.Как можно перевести его в UTF или во что там
>>813804больше 4гб ?) Сейчас потестил, вроде в оффлайне от 30 сек до 1.5 минут, т.e. более-менее стало нормально...
>>813859Use UTF-8.
>>813900да я понял. подскажи как это сделать.как перекодировать стринг, полученный из веба?Там текст "Привет, Друг!". Хуй знает, что он ебёт мозги. сайты парсит нормально
>>813900>>813859Блять, мужики, что делать? В консоль выводит на русском, всё нормально. Пробный код для проверки написал в эклипсе.Вот код:http://pastebin.com/Ttt9KHPzВ андроиде же выходит пикрелейтед
>>813914бамп
>>813914хелп плез
>>813952>>813919С бампами в бэ плиз.
>>813958бамп
>>801015 (OP)Ребзя, собираюсь писать сервер чата для андройда. Там с сокетами тоже есть свои костыли или как?
>>813998юзай gcm
Аноны, что щас спрашивают на собеседованиях в таки конторах, как легион или роботы?
>>814015"В вилку в глаз или в жопу раз?""Почему люки круглые?""Кем вы видите себя через 5 лет в нашей компании"
>>814051В жопу, я принят?
>>814053Что на ней написано?
>>813782В оффлайне пускай хуярит.
>>813914Лови, я пофиксил http://pastebin.com/EmqYDATr
>>814095бля, какой толк от этого авэйта, так же при перевороте все течет
>>814145Ну так не переворачивай, очевидно_же.jpg
>>814095>val title by lazy { findViewById(R.id.title) as TextView }> override fun onCreate(savedInstanceState: Bundle?)>const val url>class MainActivity : AppCompatActivity()это точно жава? что за хуйня?
>>814153K O T L I NOTLIN
>>814011Для чата? Ты ебанутый?
>>814158поясни почему плохо?мимо другой анон
>>814214Как минимум отсутсвием истории переписки и проебом сообщений, если ты офлайн и их скапливается больше 100.
>>814227А бд у тебя на сервере нет? Все что ты юзаешь работает через gcm если че
>>814250> Все что ты юзаешь работает через gcm што?
Сап, котаны, суть вопроса - при быстром вводе в searchview, в которую подсказки подгружаются при событии onTextChanged со сторонней апишки, происходит фатал - данные для адаптера были изменены но метод notifydatasetchanged не был вызван. Но только при быстром вводе/слабом интернете
>>814336Мессенджеры
>>814400Юзай rx и оператор debounce
>>814403дежурный пост про хипстерское говно>>814400> адаптера были изменены но метод notifydatasetchanged не был вызванБез кода хуйня. Ты у адаптера источник данных меняешь в бэкграунде или меин треде? Как ты вообще ходишь в стороннюю апишку?
>>801063Ананас! У меня как раз на такой случай есть для тебя библиотека, которую я написал недавно:https://github.com/DrBreen/BeRetainedСуть такая - помечаешь поле, которое тебе нужно сохранить при пересоздании Activity аннотацией @Retain, вызываешь пару специальных методов - и все, остальное за тебя сделает сгенерированный код. У меня на гитхабе есть пример, как с этим работать.
>>814420>Rx - хипстерское говноОкей, Маня, обмазывайся тоннами вложенных callback'ов на каждый чих.
>>814473>сгенерированный кодФу фу нахуй
>>814484И в чем проблема со сгенерированным кодом? Dagger 2 тоже не используешь? Небось еще и у тебя в onCreate строк 15 вызовов findViewById?
>>814484Не, конечно, если тебе не нравится генерированный код - вперед, переопределяй onRetainCustomNonConfigurationInstance().
>>814227REST + push, не ? Через REST грузим историю, контакты и пр. а через пуши обмениваемся данными в real-time
>>814400В стороннюю апишку я хожу через retrofit+rx, по потокам все правильно, но как я понимаю, если прилетает одновременно ( при слабом интернете/быстром вводе ) несколько ответов, то адаптер тупо не успевает делать notify после добавления. А, ну да, я тут же понял как решить это говно - не позволять выплевывать больше 1 пака данных после обновления, т.e. текст изменился -> грузим данные -> флаг поставили -> если текст изменился и !флаг -> цикл иначе игнорируем запрос на данные от вьюхи
>>814562> то адаптер тупо не успевает делать notify после добавленияnotifyDataSetChanged же отрабатывает полностью в текущем фреме, а не в следующем, разве нет?
>>814604Фишка в том что между вызовами может произойти подписка на новые данные и гипотетически ( при особых условиях ) произойдет описанное выше
>>814607Не понимаю все равно. Если ты в один фрейм изменяешь данные адаптера и нотифаешь его, то проблем не должно быть. У тебя новые данные придут уже в следующий фрейм.> между вызовами может произойти подпискаУ тебя подписка происходит на главном потоке. А значит между быть не может -> (данные+нотифай) - (подписка) - (данные+нотифай)Если у тебя изменения данных в адаптере происходит в другом потоке иди в другой фрейм (через handler.post), то вопрос зачем так делать.
>>814621Нужно будет посмотреть, гляну - отпишу. Вроде все на AndroidSchedulers.mainThread() стояло
>>814621Да нет, все вроде в одном потоке.
>>814627>>814624Ну вот тест тебе. Если ставить данные и нотифаить адаптер сразу же, то все ок работает.https://github.com/CherryPerry/test-fast-notify
>>814562А мог бы просто использовать debounce в RxJava. Но нет, я ж один не хипстер, все остальные хипстеры и пидорасы, поэтому используют RxJava, а я один такой умный, буду пердолиться с флагами.
Народ, есть бд, и я хочу подключить к приложению логин через гугл, чтобы пользователь мог пользоваться этой бд на любых девайсах под его аккаунтом. Как лучше это сделать?
>>801015 (OP)ПЕРЕКАТhttps://2ch.hk/pr/res/814733.htmlhttps://2ch.hk/pr/res/814733.htmlhttps://2ch.hk/pr/res/814733.htmlhttps://2ch.hk/pr/res/814733.html
>>812610спс, но сам додумался
>>812963Может, тебе вики-движок навернуть? С готовым приложением.
Я захотел стать у мамы читором и украсть у тутошних мамкиных програмистов сраные два бакса.Накатил рут, скачал гейгвардин, но что то нихуя не получается хакать игрули. Нечетким поиском нахожу какие то значения, но что с ними дальше делать чтобы стать бохатым не пойму.
>>812963http://www.note-pad.net/
Учил вот джаву, но что-то очень скучно, решил попробовать андроид, расскажите чем занимаетесь, сколько времени идет на обучение. Советы и ответы на ФАК приветствууются