М.Двач / Программирование

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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

46 Кб, 600x338

Разработка под Android тред №24 20 Июл, 09:37 #801015 В конец треда | Веб

Продолжаем верить в нативную разработку.

Предыдущий тред тут:
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.
Привет клиент-серверка.

Пишите в треде что добавить

Ответы>>806451>>811024>>813998>>814734

20 Июл, 09:46 #2 #801023

Продублирую

Аноны, у меня есть лоадер, который отправляет сообщения на сервер, следовательно, юзер может отправить сообщения одновременно, но в таком случае лоадер возвращает результат только для первого сообщения, а если рестартить его, то только для последнего, что делать? Думаю инкрементить айдишник у лоадера, но это, наверное, слишком костыльно, что скажите?

Ответы>>801054

20 Июл, 10:52 #3 #801054

>>801023
НЕ ИСПОЛЬЗУЙ ЛОАДЕРЫ

Они годятся только для быстрых идемпотентных запросов (вроде запросов к базе/диску).
Само слово Loader подразумевает что он просто загружает что-то в память без изменения стейта.
Если решил обмазаться Android API, то бери сервисы/JobScheduler/GcmNetworkManager

Ответы>>801063

20 Июл, 11:14 #4 #801063

>>801054
ну а что использовать? Ретеин фрагменты? где мне хранить мой observable?

Ответы>>801089>>814473

20 Июл, 12:00 #5 #801089

>>801063
> где мне хранить мой observable?
А зачем ты его хранишь?

Ответы>>801096

20 Июл, 12:08 #6 #801096

>>801089
я юзаю у него cache, поэтому мне надо, чтобы запрос завершился

Ответы>>801104>>801105

20 Июл, 12:30 #7 #801104

>>801096
Retain fragment / singleton.

20 Июл, 12:32 #8 #801105

>>801096
Что-то ты там намутил переусложненное (лоадеры и rx все вместе).
Теперь разобраться в этом можешь только ты сам, Люк.

Могут только рассказать про свою архитектуру.
1 Есть синглтон-очередь для web операций, с таким API:
1.1 Можно добавить асинхронную задачу по ключу
1.2 Можно проверить состояние задачи (in-progress, finished, finishedWithError), передав ключ
1.3 При изменение статус таски - бросается бродкаст с ее ID
1.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)

Ответы>>801134>>801206>>801413

20 Июл, 13:08 #9 #801134

>>801105
Тоже делал такую очередь с сохранением id задач. Их можно даже в сейв инстансы пихать и после переворота спокойно проверять, идет сейчас загрузка или нет. Но с переходом на мвп, презентеры выживают при переворотах и необходимость в этом пуле задач отпала.

Ответы>>801147>>801196

20 Июл, 13:22 #10 #801147

>>801134
У меня MVVM и это слишком муторно каждый binding отписывать/подписывать.
Проще грохнуть все вместе с активити.

20 Июл, 14:16 #11 #801196

>>801134
а как ты сейвишь презентеры?

Ответы>>801492

20 Июл, 14:36 #12 #801206

>>801105
>finished
>1.4 При завершение таски, иформация о ней стирается
как так то?

Ответы>>801215

20 Июл, 14:45 #13 #801215

>>801206
map.remove(key)
потом если приходит запрос состояния таски, то возвращается "finished"

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

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

20 Июл, 15:22 #14 #801244

Вопрос по ContentProvider и Cursor. Делаю подсказки для поиска в тулбаре.
В перегруженном методе query у своего ContentProvider'а получаю что ввел пользователь в поиск и запускаю asynxTask для получения данных с сервера. После паршу и заношу в курсор, который возвращаю.
Проблема в том что выводимые подсказки отстают на символ из-за того что asynxTask не выполнился сразу к моменту создания курсора.
Чо заюзать то нужно?

Ответы>>801494

82 Кб, 1750x350

20 Июл, 15:48 #15 #801292

Как объвить у своего класса метод, который можно перегрузить при инициализации, как на пике?

Ответы>>801301>>801302

20 Июл, 16:00 #16 #801301

>>801292
Это не инициализация, а создание иннер анонимного класса. Ты можешь таким образом любые видимые не финал методы, можешь объявить его абстрактным. Но на твоем пике судя по всему сделан интерфейс.

20 Июл, 16:01 #17 #801302

>>801292
с любым методом любого класса так можно сделать

20 Июл, 16:39 #18 #801336

Увидел у чувака BroadcastReceiver, который активируется на BOOT_COMPLETED вместо логики в onReceive стартует сервис.
Сервис по сути ничего не делает: в onStartCommand дёргает бд, создаёт Alarm, в общем-то и всё. Т.е. с сервисом никакого взаимодействия нет, висеть ему долго не нужно, выполнил код и умер.
Вопрос: нужно ли так всегда делать и почему? Можно ли просто засунуть логику в onReceive?

Ответы>>801339

20 Июл, 16:45 #19 #801339

>>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.

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

Ответы>>801341

20 Июл, 16:51 #20 #801341

>>801339
Ну вообще я не собирался возвращаться из onReceive() пока не закончу дела, но в целом понял, спасибо, буду использовать сервис.

20 Июл, 18:06 #21 #801413

>>801105
>Есть синглтон
Дальше не читал. Уебывай.

Ответы>>801421

20 Июл, 18:09 #22 #801421

>>801413
Научись читать, и понимать - это тебе пригодится в работе.

Говорю, как android программист с ~5 лет стажем.

20 Июл, 19:22 #23 #801492

>>801196
В json сериализую.

Ответы>>801607

20 Июл, 19:23 #24 #801494

>>801244
> Чо заюзать то нужно?
StroIO и Rx

Ответы>>805589

20 Июл, 21:17 #25 #801607

>>801492
а что у тебя в презенторе?

Ответы>>801623

20 Июл, 21:38 #26 #801623

>>801607
view state

Ответы>>801624

20 Июл, 21:40 #27 #801624

>>801623
а запрос как и где делаешь, как сейвишь результат?

20 Июл, 22:37 #28 #801660

Аноны, а нужно ли вообще делать release-сборку на CI-сервере? По идее, если в debug-версии всё собирается и тестируется, то и другой build variant тоже будет. Разве нет? Или есть какой-то смысл в этом?

Ответы>>801689

20 Июл, 23:06 #29 #801689

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

Ответы>>801700

20 Июл, 23:17 #30 #801700

>>801689
Что? Причем тут пароли-сертификаты?
Я вообще не про подпись приложения спрашивал.

20 Июл, 23:42 #31 #801723

Аноны, кто нибудь работал с сокетами? SocketIO норм штука?

Ответы>>801726

20 Июл, 23:46 #32 #801726

>>801723
RxSocket юзай

Ответы>>801767

21 Июл, 01:19 #33 #801767

>>801726
можешь сбросить гитхаб либы? че то я не нашел

Ответы>>801773

21 Июл, 01:35 #34 #801773

>>801767
>
https://github.com/LoranceChen/RxSocket

Ответы>>801781

21 Июл, 02:07 #35 #801781

>>801773
А ты юзал её, все ок? А то всего две звездочки

Ответы>>801782

21 Июл, 02:09 #36 #801782

>>801781
И вообще это скала

Ответы>>801787

21 Июл, 02:35 #37 #801787

>>801782
> 2016
> писать на чем-то кроме скалы

Ответы>>801844

21 Июл, 05:39 #38 #801811

Господа, посоветуйте открытое API какого-нибудь полезного сервиса. На programmableweb какая-то хуита.
Хочу написать клиент.

Ответы>>801823

21 Июл, 07:27 #39 #801823

>>801811
2ch.hk

21 Июл, 08:34 #40 #801844

>>801787
Правда говорят что новая скала требует Java8 и по этому не будет работать на старых андроидах?

Ответы>>801873

21 Июл, 09:32 #41 #801873

>>801844
Неправда.

И кстати, Java 8 прекрасно компилируется для андроида если использовать Retrolambda или новенький Jack Compiler от Гугла

Ответы>>801880>>801893

21 Июл, 09:46 #42 #801880

>>801873
Хуйня, ничего там на уровне байт-кода не компилируется.
Как не было у тебя default методов, так и не будет.

Ответы>>801890

21 Июл, 09:54 #43 #801890

>>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.

21 Июл, 09:55 #44 #801893

>>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.

Ответы>>801899

21 Июл, 10:07 #45 #801899

>>801893
И там же ниже:
> Continue Java 6 support for a while longer (only in Scala 2.11).

Будет две параллельные ветки, поэтому "будет работать на старых андроидах"

Ответы>>801905

21 Июл, 10:17 #46 #801905

>>801899
Да да охуенная перспектива, как с python 2/3

32 Кб, 394x560

41 Кб, 372x549

21 Июл, 13:07 #47 #802043

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

С разными пикчами разный эффект, хотя код не меняю и везде стоит привязка к топу страницы.
Что сделать и что прописать? Я так понимаю, нужно что-то с Picasso прокрутить.

Задача: разместить пикчу в топе активити, при этом растянув её по ширине экрана

Ответы>>802046>>805205>>805905>>813316

21 Июл, 13:09 #48 #802046

>>802043
Картинка врап контент по высоте?

Ответы>>802048>>802051

21 Июл, 13:11 #49 #802048

>>802046
была матч пэрент. поменял на врап. сейчас проверю

21 Июл, 13:14 #50 #802051

>>802046
ничего не поменялось

21 Июл, 13:25 #51 #802058

Парни, если я поставлю .resize(700,400)(пиксели), то у меня на эмултяоре оторажается как надо. а на других устройствах тоже будет нормально? или там пиздец всё перекорёжит?

Ответы>>802080>>802156

93 Кб, 916x662

21 Июл, 13:27 #52 #802061

Господа, какой layout лучше использовать и как указывать размеры элементов приложения

Ответы>>802083>>802155

21 Июл, 13:41 #53 #802080

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

Открой документацию, прочитай про scale type и про значения match_parent и wrap_content.

21 Июл, 13:41 #54 #802083

>>802061
В документации есть однозначный ответ. Нужно использовать читай сам

Ответы>>802089

21 Июл, 13:49 #55 #802089

>>802083
Пидор ты :(

Ответы>>802204

21 Июл, 15:08 #56 #802155

>>802061
>какой layout лучше использовать
Будешь все использовать

21 Июл, 15:09 #57 #802156

>>802058
Для четкого ресайза - вытаскивай денсити и умножай на пиксели.

Ответы>>802170>>802184

21 Июл, 15:23 #58 #802170

>>802156
Пикассо умеет в resizeDimen

Ответы>>802184

21 Июл, 15:48 #59 #802184

>>802170
>>802156
решил вопрос вот так:
resize(getWindowManager().getDefaultDisplay().getWidth(),getWindowManager().getDefaultDisplay().getHeight()/3)

Терь всё будет на любом устройстве работать одинаково

Ответы>>802205

21 Июл, 16:30 #60 #802204

>>802089
Нет, ты. Никто не собирается пересказывать тебе базовые статьи. Если ты их не читал, не поймёшь, что тебе отвечают. Если читал, но не понял - то ты ни одного приложения не сможешь разработать.
Так что, либо читай и понимай, либо вон из профессии.

Ответы>>802209>>805735

21 Июл, 16:31 #61 #802205

>>802184
Привет, говнокод.

Ответы>>802207

21 Июл, 16:33 #62 #802207

>>802205
ееееее

21 Июл, 16:36 #63 #802209

>>802204
> либо вон из профессии.
Всегда охуевал с высокомерия программистов. Программист — обслуживающий персонал, на которого можно надресировать абсолютно любого, как и на любую другую рабочую специальность. Знай своё место.

Ответы>>802246

21 Июл, 16:49 #64 #802216

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

Ответы>>802232>>802242>>802247>>802277

21 Июл, 17:12 #65 #802232

>>802216
Василий, это делается элементарно.

Ответы>>802272

21 Июл, 17:29 #66 #802242

>>802216
Ты к нам из JS треда что-ли пожаловал?

Без npm install vasya-gallery уже ничего не можете.

21 Июл, 17:48 #67 #802246

>>802209
Ну попробуй, надрессируйся.

21 Июл, 17:49 #68 #802247

>>802216
Glide.

21 Июл, 19:14 #69 #802272

>>802232
>это делается элементарно
А можно по подробнее?
На iOS я, к примеру, помещу на view imageview и буду ловить жест скрола. Дальше анимировать смещение в сторону и загружать новое фото.

Ответы>>802274>>802411

21 Июл, 19:15 #70 #802274

>>802272
Неа, не сработает.

21 Июл, 19:19 #71 #802277

>>802216
GridView/RecyclerView + Picasso

Ответы>>802287

21 Июл, 19:37 #72 #802287

>>802277
А zoom in/out по двойному тапу, зум пальцами?

Ответы>>802303>>802412

21 Июл, 20:06 #73 #802303

>>802287
Ха-ха-ха-ха! Глядите-ка, у нас тут непуганый в треде!

21 Июл, 20:58 #74 #802328

Аноны, кто нить имел дело с mosby? Как там презентер переживает повороты?

Ответы>>802359

21 Июл, 21:37 #75 #802359

>>802328
открой исходники и посмотри.

21 Июл, 23:33 #76 #802411

>>802272
Ну тут примерно тоже самое:
1) Подключаешь Picasso/Glide (кеширование из коробки, трансформации, удобное API и тд);
2) Вставляешь ViewPager/RecyclerView, с помощью адаптера нужно будет задать верстку, что содержится внутри элемента;
3) Цепляешь обработчик на скролл страницы, в котором начинаешь загрузку нужного урла в кеш;
4) Цепляешь обработчик на показ конкретного итема, то есть когда в нем уже должна быть картинка или еще какой контент, в нем вызываешь загрузку (вдруг запрос на загрузку в кеш еще не отработал) и вставку изображения в нужное место;

21 Июл, 23:34 #77 #802412

>>802287
Тут нужно посмотреть готовое решение, таких полно, я правда ни одним не пользовался, но такое на тестовых заданиях я слышал дают.

Ответы>>802414

21 Июл, 23:36 #78 #802414

>>802412
да толковых готовых, проще самому с viewproperty сделать

Ответы>>802415

21 Июл, 23:37 #79 #802415

>>802414
нету

Ответы>>802418

21 Июл, 23:43 #80 #802418

>>802415
Как же нету. Берешь и разковыриваешь вк/фэйсбук/галерею и адаптируешь.

Ответы>>802429

22 Июл, 00:26 #81 #802429

>>802418
Ну я и говорю самому проще сделать, чем искать либу

22 Июл, 10:16 #82 #802584

Сап, как поставить картинку с большим разрешением на фон в android приложении. Когда ставлю через android:backgroud - вылетает ошибка, о том что нет памяти OutOfMemoryError. Что делать?

Ответы>>802586>>802699

22 Июл, 10:17 #83 #802586

>>802584
https://developer.android.com/training/displaying-bitmaps/index.html

22 Июл, 10:17 #84 #802587

Почему котлин говно?

20 Кб, 1166x280

22 Июл, 12:38 #85 #802692

Как убрать этот ебанный ToolBar?

Ответы>>802694

22 Июл, 12:41 #86 #802694

>>802692
Тему NoActionBar поставь.

Ответы>>802796

22 Июл, 12:43 #87 #802699

>>802584
Используй вектор, Люк.
Для старых Android можешь заюзать отдельную либу работы с SVG.

Ответы>>806597

22 Июл, 15:50 #88 #802790

Привет всем. Кто делал свой менеджер будильников? Желательно на гитхабе.

Ответы>>803708

22 Июл, 15:50 #89 #802791

>>802784
> Голосовой и тестовый чат для геймеров

22 Июл, 16:00 #90 #802796

>>802694
Что-то не работает.

Ответы>>802813>>802815

22 Июл, 16:04 #91 #802797

Какую библиотеку или какие карты нужно использовать, если я планирую сделать городскую приложуху?
Нужна карта города, причём достаточно детальная, как у 2ГИС.
Гугл вроде не такой крутой, или я ошибаюсь?
Ставлю себе, например, посетить магазин "Ромашка" и когда я буду возле него, программка выдаст мне ЗЗЗЗЗЗЗЗЗ Вы у магазина!

Думаю, концепт объяснил. теперь вопрос по карте

Ответы>>802799

22 Июл, 16:22 #92 #802799

>>802797
>google
>не такой крутой

Ответы>>802837

22 Июл, 17:03 #93 #802813

>>802796
У тебя тулбара в xml?

22 Июл, 17:05 #94 #802815

>>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>

Ответы>>802856>>802859

22 Июл, 17:41 #95 #802837

>>802799
я про карту.
просто у 2гис она пиздец детализирована и все организации прописаны

22 Июл, 17:56 #96 #802850

>>802784
Нахуй пошёл со своим говном.

22 Июл, 18:26 #97 #802856

>>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 там где время и так далее?

Ответы>>802859

22 Июл, 18:34 #98 #802859

>>802856
>>802815
Уже разобрался, но все равно спасибо! Надо это добавить.
<item name="android:windowFullscreen">true</item>

Ответы>>802863

22 Июл, 18:44 #99 #802863

>>802859
Window 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);
}

Ответы>>803647

22 Июл, 18:54 #100 #802867

Аноны, у меня есть ресайклвью, в нем итемы, у которых по клику на кнопку большая часть становится visible, т.е. такие раскрывающиеся хуевины. И мне надо, чтобы по клику ресайклвью скроллился к концу итема, на который кликнули, пробовал с scrollToPosition, но он скроллит к началу итема, что делать?

Ответы>>802967

22 Июл, 22:05 #101 #802967

>>802867
Попробуй скролить к следующему итему. Иди используй scrollBy, но тогда прийдется подсчитать сколько скролить самому.

23 Июл, 20:15 #102 #803647

>>802863
>if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)

Ответы>>803656

23 Июл, 20:27 #103 #803656

>>803647
И?

Ответы>>803675

23 Июл, 21:08 #104 #803675

>>803656
горь

23 Июл, 22:04 #105 #803708

>>802790
Бамп

24 Июл, 02:02 #106 #803859

Делаем ставки, когда Swift станет основным языком для нативной разработки для Андроида.

Я думаю, через 2-3 года.

Ответы>>803875

24 Июл, 02:40 #107 #803875

>>803859
Делаем ставки, когда JavaScript станет основным языком для разработки ядра Linux.

Я думаю, через 2-3 года.

Ответы>>803881

24 Июл, 03:00 #108 #803881

>>803875
http://thenextweb.com/dd/2016/04/07/google-facebook-uber-swift/

24 Июл, 11:59 #109 #803989

Блядь, кто нибудь портируйте fb2 читалку на линух! Захотел на своем маке почитать а тут и нет нихуя. Пришлось кочать епуб.

24 Июл, 12:34 #110 #804016

Кто нибудь знает когда конвертер в цвете из PNG в SVG?

Ответы>>804022>>804032

24 Июл, 12:40 #111 #804022

>>804016
*годный конвертер

24 Июл, 12:53 #112 #804032

>>804016
Inkscape

24 Июл, 16:03 #113 #804176

Сап, проблема ужасных 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 не дремлют, а мультидекс - очень и очень плохо отразится на разработке. Может я идиот и что-то не так пишу ? Прошу вашей помощи, котаны :)

Ответы>>804180>>804183>>805544

24 Июл, 16:13 #114 #804180

>>804176
Вроде как откатом на 9.0.1 исправил. Занятно, что gmaps тоже не хотят подключаться на 9.2.1 ...

Ответы>>804183

24 Июл, 16:13 #115 #804182

Теперь юзаю location 9.0.1, но типа это не очень хорошо :D

Ответы>>804183

24 Июл, 16:14 #116 #804183

>>804176
com.google.android.gms:play-services-places:9.2.1
Есть такой пакет. Но все равно 65к получить как делать нехуй. Заебался уже с прогвардом билдить дебаг сборки.
>>804180
>>804182
Локальный репозиторий сервисов обнови в сдк менеджере.

Ответы>>804184

24 Июл, 16:16 #117 #804184

>>804183
Уже обновил, в том то и дело, что я не понимаю какого нехорошего лешего оно не пашет

24 Июл, 16:27 #118 #804190

Вот же сука, все равно пришлось multi-dex юзать. Теперь все работает со скоростью унылого говна :(

Ответы>>804195

24 Июл, 16:33 #119 #804195

>>804190
Прогвардом режь.

Ответы>>804216

24 Июл, 17:00 #120 #804216

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

Ответы>>804230

24 Июл, 17:25 #121 #804230

>>804216
minifyEnabled true

Ответы>>804656

2 Кб, 571x80

24 Июл, 17:56 #122 #804262

Как убрать паддинг на пике? Иконку устанавливаю вот так: ab.setHomeAsUpIndicator(resId);

Ответы>>804267>>805546

24 Июл, 18:01 #123 #804267

>>804262
Совсем изощренно - закастомизировать тулбар и юзать его :D

Ответы>>804350

37 Кб, 748x689

24 Июл, 18:02 #124 #804270

Кто-нибудь работал с векторами в Android? Как это пофиксить?

Ответы>>804303

24 Июл, 18:33 #125 #804303

>>804270
Написано же, не поддерживается. Берешь и ручками правишь.

24 Июл, 19:00 #126 #804350

>>804267
> :D

25 Июл, 00:04 #127 #804656

>>804230
Дальше разбираешь почему не компилится.
Дальше почему крашится.

25 Июл, 14:38 #128 #805041

Есть один Spinner, который населяется значениями из массива, при нажатии показывает диалог со значениями.
Использую стандартный layout для андроида, что-то вроде android.R.layout.spinner_item_simple.
Выглядит как говно, но главное, что никак не выделен текущий элемент. Я могу поменять стандартный layout, но как отобразить активный элемент, например каким-нибудь кружочком а-ля RadioButton?

25 Июл, 16:50 #129 #805205

>>802043
Покажи код загрузки картинки

25 Июл, 18:06 #130 #805287

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

И как дела сейчас на рынке? С двумая приложениями в маркете реально вкатиться (ДС-2)?

Ответы>>805295>>805364

25 Июл, 18:10 #131 #805295

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

1) Immutable данные / списки
2) First-class functions
3) Coroutines
4) Элементы Java 8 (streams, completablefuture)

25 Июл, 19:46 #132 #805364

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

1) Бизнесс-логика выделена в отдельный модуль, где нет зависимостей от Андроида
2) Весь Андроидо-зависимый код — на Котлине
3) Функторы и теории категорий
4) Тесты на Хаскелле

130 Кб, 1280x720

25 Июл, 20:02 #133 #805386

Видели уже? Интел представил новую йобу для кроссплатформенной разработки на Джаве и на Котлине тоже.

https://software.intel.com/en-us/multi-os-engine

Помянем RoboVM

Ответы>>805402

25 Июл, 20:10 #134 #805402

>>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

Ответы>>805408>>805462

25 Июл, 20:14 #135 #805408

>>805402
Да, забыл про плюсы:
# ART (хотя это еще вопрос)
# Они портировали даже android.database.sqlite.SQLiteDatabase / Cursor на iOS
(те можно ШАРИТЬ один и тотже код работы с Sqlite базой данных)

Ответы>>805460>>805462

25 Июл, 20:47 #136 #805460

>>805408
> # ART (хотя это еще вопрос)
В смысле? Dalvik-то ведь уже давно всё. Или ты про что?

Ответы>>805522

25 Июл, 20:48 #137 #805462

>>805402
>>805408
Ну и поделись своим опытом использования, раз пытаешься уже больше года использовать.

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

Ответы>>805534

25 Июл, 21:44 #138 #805522

>>805460
> В смысле? Dalvik-то ведь уже давно всё. Или ты про что?
В том смысле что они запустили ART на iOS.
Скомпилированный им код более оптимизирован под мобильники (спасибо за наработки гуглу).

В RoboVM компилировали просто какой-то компилятором JAVA->"EXE" (забыл название), не заточенным под мобилки.
Зато он мог еще компилировать еще под macOS.

P.S.
RoboVM не совсем еще мерт, на его открытой части сделали BugVM (к сожалению сейчас он не поддерживает storyboard)

25 Июл, 21:53 #139 #805534

>>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" обещали сделать на базе своего компилятора.
+ еще натыкался на другие поделки, но почти не известные широкому кругу (гуг тебе поможет)

25 Июл, 22:03 #140 #805544

>>804176
Чем тебя мультидекс не устраивает?

25 Июл, 22:05 #141 #805546

>>804262
>tulpar.setContentInsetsAbsolute(0,0);

25 Июл, 22:29 #142 #805554

Вкатываюсь с нубовопросами: в тридцатник поздновато начинать или еще можно? При условии что: >"Я хуярил на делфи 15 лет назад а теперь хочу вкатится в андроид"
Просто стартовые условия таковы что я сейчас живу в мухосрани и съебать отсюда ближайшие лет десять не получится точно, по личным причинам. Есть ли шанс что такого старпера возьмут куда-то джуниором да еще сразу на удаленку?

Ответы>>805560

20 Кб, 500x332

25 Июл, 22:35 #143 #805560

>>805554
> съебать отсюда ближайшие лет десять не получится точно, по личным причинам
Шансов не особо много, лучше дальше задроть делфи или что-то что не популярно у молодежи.

Ответы>>805568>>805723

25 Июл, 22:46 #144 #805568

>>805560
>когда не успел вытащить
Нет, слава яйцам, дело не в личинке.
>лучше дальше задроть делфи
Ептить, а она еще в тренде?
И насколько повышаются шансы устроиться не на удаленку если все-таки съебать получится?

Ответы>>805579

25 Июл, 22:57 #145 #805579

>>805568
Знаю парочку фрилансиров из мухосрани на нем работающих.

На делфи сейчас можно в кросплатформу (Windows/macOS точно).
Если найдешь заказчика кому в 2016 нужно десктопное приложение, то делфи неплохой выбор.

Ответы>>805582

25 Июл, 22:58 #146 #805582

>>805579
Мда, плохи мои дела видимо. Чтож, спасибо и на этом.

25 Июл, 23:07 #147 #805589

>>801494
>StorIO
Какое-то новое говно, чем знаменито?

26 Июл, 00:11 #148 #805636

Аноны, вот есть статья https://medium.com/android-news/easy-android-shared-element-transition-ac36952a4a4#.uqh9m6rhm И видеj из неё https://www.youtube.com/watch?v=xvy7KUe492g
Как мне сделать такую же анимацию, только между фрагментами? Я так понял во фрагментах все делается также, как и в активити, только ещё можно менять типы анимаций всякими setSharedElementEnterTransition, так вот, как называется анимация как на видео?

26 Июл, 08:55 #149 #805723

>>805560
> Шансов не особо много,
А почему в 30 не выйдет в ведро вкатиться?

26 Июл, 09:27 #150 #805735

>>802204
Чет захотелось тебе на ебало поссать
мимоскролил

Ответы>>805744

26 Июл, 10:10 #151 #805744

>>805735
Relative+Linear как основа
Frame не используется
Constraint ещё в багах
Grid прикольный
Table не довелось пока использовать

Ответы>>805953

26 Июл, 14:20 #152 #805905

>>802043
centerCrop ?

26 Июл, 15:26 #153 #805953

>>805744
> Frame не используется
Ясно.

Ответы>>805963

26 Июл, 15:37 #154 #805963

>>805953
Ну и где ты используешь фрейм? Ты под разные экраны разрабатываешь, не забывай.

Ответы>>805970

26 Июл, 15:49 #155 #805970

>>805963
Да везде, где можно. Например, картинка с текстом поверх неё.

Ответы>>805972

26 Июл, 15:51 #156 #805972

>>805970
Relative + padding

Ответы>>805985>>806080

26 Июл, 16:07 #157 #805985

>>805972
Тем временем у фрейма 1 measure вызов, а у relative 2. Оптимизация!
Хотя сам тоже вообще везде использую релайтивку, легче потом добавлять и уберать элементы.

Ответы>>808419

213 Кб, 1524x720

26 Июл, 17:43 #158 #806076

Какое сделать приложение, работающее по Bluetooth?

26 Июл, 17:47 #159 #806080

>>805972
А можно frame + padding, что ничем не будет отличаться внешне, но будет производительнее.

26 Июл, 17:51 #160 #806083

В StorIO же нет вложенных объектов?
Т.е. в одном классе не может быть списка другого класса?

Ответы>>806139

26 Июл, 18:40 #161 #806139

>>806083
Ну так это же на уровне запроса решается. Join там, все дела.

26 Июл, 19:37 #162 #806212

Двач, нужно реализовать онКлик картинки, чтобы она становилась большой на весь экран.

Какой метод лучше всего для этого использовать?
Я думаю сделать это в dialog, который по клику будет закрываться.

Или можно как-то иначе сделать? Ваши варианты

Ответы>>806235

26 Июл, 20:10 #163 #806235

>>806212
Fullscreen activity

Ответы>>806237

26 Июл, 20:12 #164 #806237

>>806235
а. я не рассказал:
у меня в шапке активити есть картинка, как в медузе, если ты видел.

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

предлагаешь на клик открывать новое активити что ли?

Ответы>>807263

26 Июл, 20:20 #165 #806239

Аноны, есть такая задачка: ставится будильник, я указываю свой ресивер, в нём делаю нотификейшн и опять бросаю сообщение на ресивер, который в моей активити, и уже ресивер в активити убирает нотификейшн и делате то, что нужно. Т.е. если активити открыта, мне не надо создавать нотификацию, а если закрыта, то надо. В таком подходе иногда становится видно как появляется и исчезает иконка в статус баре, как исправить?

Kоtlin Bytecode Generation and Runtime Performance 26 Июл, 20:41 #166 #806253

Для тех кто хотел узнать какой гов##код генерируется из Kоtlin, но боялся спросить :)

https://www.youtube.com/watch?v=35GACInsZsk

sage 26 Июл, 21:49 #167 #806335

>>806322
Пошел нахуй со своим говном.

Ответы>>806384

94 Кб, 632x294

26 Июл, 22:06 #168 #806363

Анончики, помогите молю. Пол года эклипс не открывал тут захожу такие ошибки появились. Как их исправить? Fix project setup не помогает. В чем может быть проблема?

Ответы>>806371

26 Июл, 22:13 #169 #806371

>>806363
А какую версию Google Play Services используешь? Если у тебя автоматически обновились они, то в этом может быть проблема. Попробуй явно указать версию (старую).

И вообще, выкинь уже нахуй Эклипс.

Ответы>>806497

26 Июл, 22:21 #170 #806384

>>806341
>>806335

26 Июл, 22:35 #171 #806394

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

Ответы>>807075

26 Июл, 23:23 #172 #806451

>>801015 (OP)
норм ли в 2016 юзать ormlite? Или есть другая orm, которая может работать с gson?

Ответы>>806457>>806621

26 Июл, 23:28 #173 #806457

>>806451
Ты вообще понимаешь, что такое ORM? GSON тут вообще не при чем, любая ORM может с ним работать.

> норм ли в 2016 юзать ormlite?
Нет

> Или есть другая orm
Используй StorIO. Но это не ORM.

Ответы>>806459>>806461

26 Июл, 23:30 #174 #806459

>>806457
нихуя, green dao сама делает себе объекты, я не могу там юзать аннотации gson

26 Июл, 23:35 #175 #806461

>>806457
а если я юзаю storio, где я должен вот это делать ( http://pastebin.com/dePkM78d ), как у них написано? в он криейте апликейшена?

Ответы>>806471

26 Июл, 23:44 #176 #806471

>>806461
Так же, как если бы ты работал с обычным SQLite или другой БД: зависит от твоей задачи. Если у тебя есть activity, показывающая лист с твитами, то да, логично запросить данные из БД при создании activity.

Ответы>>806472

26 Июл, 23:47 #177 #806472

>>806471
так не, это же не сам запрос, а настройка, чтобы работали put, get и delete, я только не пойму её надо один раз делать или всегда?

Ответы>>806474

26 Июл, 23:52 #178 #806474

>>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()

27 Июл, 00:14 #179 #806497

>>806371
>А какую версию Google Play Services используешь? Если у тебя автоматически обновились они, то в этом может быть проблема
Да, похоже обновились до 31.
>Попробуй явно указать версию (старую)
Как это сделать если в сдк она уже обновилась?

Ответы>>806502

27 Июл, 00:19 #180 #806502

>>806497
В build.gradle в разделе dependecies ты можешь указать версию так, что всегда будет использоваться последняя:
complie 'com.example.library:2.+'

А можешь (и всгда должен!) указать её явно:
complie 'com.example.library:2.4.7'

Где это настраивается в Экслипсе, который не использует Gradle, я не ебу.

27 Июл, 01:10 #181 #806544

вечер в хату посоны
использую recycleViewAdapter для списка.
данные в него загружаются из бд
также есть метод, который заполняет БД данными
этот метод я вызваю в onCreate()
но пробелма в том, что при каждом открытии приложения этот метод вызывается и в итоге количество айтемов в списке увеличивается в 2 раза
как сделать, что бы список отобразился только с нужным количеством айтемов, не добавляя уже существующие?

Ответы>>806545

27 Июл, 01:12 #182 #806545

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

Ответы>>806568

27 Июл, 01:39 #183 #806568

>>806545
как это сделать, если я юзаю Шугар ОРМ?

Ответы>>806571

27 Июл, 01:58 #184 #806571

>>806568
Я ебу. Читай доку.

27 Июл, 05:05 #185 #806597

>>802699
С февраля этого года vectordrawable завезли в суппорт лайбрари. Выкидывай все левые либы для работы с свг.

Ответы>>806618

60 Кб, 256x256

27 Июл, 07:18 #186 #806609

Анон, а подскажи как происходит авторизация во всяких мессенджерах типа ватсаппа? Конкретнее интересует что из себя представляет пара логин-пароль (с логином вроде все понятно - номер телефона, а в качестве пароля-то что?)

Ответы>>806616

27 Июл, 07:54 #187 #806616

>>806609
Ты сам хоть раз видел WhatsApp? Видимо нет, раз такие вопросы задаешь.

Там нет пароля. Авторизация по смс с подтверждением.

Ответы>>806820

27 Июл, 07:57 #188 #806618

>>806597
Её завезли, но потом убрали, а потом снова вернули, но с ограниченным функционалом. Так что, если нужно сделать с изображением что-то более сложные, чем просто показать его в заранее определённом ImageView, то нужно использовать либо растровую графику либо сторонние костыли.

Другой анон

Ответы>>807179

27 Июл, 08:25 #189 #806621

>>806451
> норм ли в 2016 юзать ormlite?
Абсолютно, сам юзаю его с котлином.

К сожалению OrmLite осталась единственной ORM которая
1) НЕ вставляет тебе свой плагин в билд процесс
2) может работать БЕЗ привязи к gradle/maven/ant - это просто jar файл

Ответы>>806623>>806639

27 Июл, 08:48 #190 #806623

>>806621
Какой же ты всё-таки говноед.

Ответы>>806624

27 Июл, 08:52 #191 #806624

>>806623
По факту возразить нечего?

Обмазываешься фреймворками и кодогенераторами,
что бы скрыть фактическое убожество java-android-разработки.

27 Июл, 09:43 #192 #806639

>>806621
Опять таки плюс OrmLite, что ты используешь один код и под десктоп и под iOS (через RoboVM/IntelMOE/BugVM)
Те можешь делать кросплатформенные приложения/игры (на libgdx) и хранить данные в sqlite.

Ответы>>806647

27 Июл, 10:02 #193 #806647

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

Ответы>>806654>>806667

27 Июл, 10:11 #194 #806654

>>806647
Двачую. Я уже выше высказался, что он говноед.

Ответы>>806667

17 Кб, 400x225

27 Июл, 11:04 #195 #806667

>>806647 >>806654

27 Июл, 15:52 #196 #806820

>>806616
Странно как-то. Даже для видоизмененного XMPP. Вутсупп должен периодически восстанавливать соединение. Если бы дело ограничивалось одним смс - он бы их после каждого продолжительного онлайна просил.

Ответы>>806823

5 Кб, 320x170

27 Июл, 15:53 #197 #806823

>>806820
>онлайна
оффлайна, блджад.

27 Июл, 22:57 #198 #807075

>>806394
Бамп

28 Июл, 02:27 #199 #807179

>>806618
У меня довольно старое приложение. Графики там по минимому. Всякая мелочь, типа иконок и т.п. тупо только в одном разрешении - xhdpi (так выглядит более или менее норм, да и дизайнерам проще объяснить - типа делайте как для айпадов). Минимальное апи 14 ( андроид 4.0). Как появилась поддержка в старых версиях векторов, начал требовать новую графику в свгшках. Ниче, вроде все что требуется, пока работает. Ни на какие существенные ограничения не натыкался. Хотя, из-за старости приложения, материал дизайну соответсвуем весьма условно и сильно местами. Новый функционал делаем с намеками, старый не трогаем )). Анимаций очень по минимому, да и в приложении это особо не нужно, оно для суровых корпоративщиков/бухгалтеров, а не любителей смузи. Да и пилится по остаточному принципу, чтобы было. Типа у всех нормальных пацанов есть мобильные версии, должны быть и у нашей шарашкиной конторки.

Где-нибудь можно почитать про ограничение vectorDrawable в support library по сравнению с нативными?

Первый анон

Ответы>>807191

28 Июл, 03:28 #200 #807191

>>807179
>почитать про ограничение vectorDrawable в support library по сравнению с нативными
Сорян, анон, не получается нагуглить, но я где-то читал что для support library она по-моему просто тупо пре-рендерит их в битмапки и все.

sage 28 Июл, 11:03 #201 #807263

>>806237
> картинка парсится пикассо
> картинка
> парсится
> пикассо

28 Июл, 13:29 #202 #807357

>клон airbnb вывесил вакансию с оплатой в размере "большое человеческое спасибо" и упоминание в эбаут
>подался
>нам нужен миддл+ с портфолио, сорян

Господа, кто-нибудь из вас работает ведроёбом? Как вкатывались?

Ответы>>807377>>807386>>807422

12 Кб, 307x331

28 Июл, 14:02 #203 #807372

Как думаете, реально написать мобильное приложение в функциональном стиле,
без ООП, на одних функция и immutable структурах?

Уже неделю об этом думаю, не дает покоя.

Самым сложным пока видится отказ от DepenInjection подхода.
Теперь все зависимости должны передаваться вместе с данным в параметрах.

Ответы>>807496>>807709>>811156

28 Июл, 14:11 #204 #807377

>>807357
Это что за клон такой? ООО "МухосраньОтельСервис"

Ответы>>807381

28 Июл, 14:16 #205 #807381

>>807377
ЗеЛокалс

28 Июл, 14:23 #206 #807386

>>807357
Кто такой мидл+? Какими навыками он обладает?

Ответы>>807388

28 Июл, 14:26 #207 #807388

>>807386
Это у них нужно спрашивать. Может быть я señor, а меня даже за мидла не считают
Правда, я сам виноват. Писал неуверенно.

28 Июл, 15:39 #208 #807417

Может кто подсказать за retrofit 2.0 и multipart ?

Суть в следующем - MultipartBody.Builder предлагает мне в метод addFormDataPart при добавлении файла передать параметр name и fileName ну и плюс RequestBody, содержащий сам файл. В api с которым я работаю нет ни намека на то, что body должен иметь какое-то название. Тащемта что туда пихать нада ?

Ответы>>807438>>807463

28 Июл, 15:49 #209 #807422

>>807357
А у тебя проекты то есть?

Ответы>>807425>>807441

28 Июл, 15:51 #210 #807425

>>807422
А какие проекты можно представить в портфолио?

28 Июл, 16:11 #211 #807438

>>807417
Не знаешь, пихай имя файла с расширением (так браузеры поступают)

Ответы>>807439

28 Июл, 16:13 #212 #807439

>>807438
окей, а что где это название то отображаться будет ? То-ли я не проснулся еще, то-ли туплю

Ответы>>807451

28 Июл, 16:15 #213 #807441

>>807422
Нет.
В своё время я хорошо разобрался, сделал бойлерплейт с использованием всех возможностей ОС и некоторых библиотек.

28 Июл, 16:31 #214 #807451

>>807439
А тебе не все равно?

Ответы>>807454

28 Июл, 16:47 #215 #807454

>>807451
Хотелось бы понять все-же ;)

28 Июл, 17:06 #216 #807463

>>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.

Ответы>>807466>>807485

28 Июл, 17:12 #217 #807466

>>807463
Большая человеческая (хотя какой я к черту человек - я программист под ведро) спасиба :D

Ответы>>807475>>807477

28 Июл, 17:21 #218 #807475

>>807466
Не за что, и вообще программисты под ведро таки же люди как энтерпрайз макаки. Да и все остальные.

Ответы>>807498

28 Июл, 17:24 #219 #807477

>>807466
Упс я забыл добавить самый хуевый этап этой отправки. А именно createKey:
private static String createKey(String fieldName, String fileName) {
____return String.format(Locale.US, "%s\"; filename=\"%s", fieldName, fileName);
}

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

28 Июл, 17:36 #220 #807485

>>807463
Окей, если с простыми параметрами а-ля key-value и файлами так же key-value все понятно, то как впихнуть в эту херню массив других key-value пар ?
К примеру добавить туда что-то такое:
[{id:1,value:2},{id:2,value:1}]

28 Июл, 17:56 #221 #807496

>>807372
https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs

Ответы>>807517

28 Июл, 17:57 #222 #807498

>>807475
> Да и все остальные.
И пхпшники тоже?

Ответы>>807572

28 Июл, 18:26 #223 #807517

>>807496
Да да, уже видел, но что-то с JNI не хочется возиться (да и хаскель я не знаю).

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

28 Июл, 19:15 #224 #807552

Однако, вопрос актуален - как запихнуть массив, содержащий key-value пары, в okhttp3.RequestBody

Ответы>>807560

28 Июл, 19:24 #225 #807560

>>807552
Единственный вариант оказался ручным преобразованием списка в json-образный формат и передача его как text/plain. Оно таки заработало

28 Июл, 19:39 #226 #807572

>>807498
Даже они (если на седьмом пишут). Только не 1Сники.

28 Июл, 20:08 #227 #807605

Пацаны, что написать для портфолио?

Ответы>>807615

28 Июл, 20:18 #228 #807615

>>807605
Стихи о весне.

28 Июл, 20:19 #229 #807618

Аноны, а как у вас организованна работа с базой данных в приложении? С точки зрения архитектуры, а не реализации.
Repository pattern? Один жирный сингтон? Или как?

28 Июл, 21:50 #230 #807701

Я не понимаю чистую архитектуру. А точнее синхранизацию данных в ней.
Берем стандартное список-детали. Презентер списка получает модели с которыми может работать вьюха и закидывает их туда.
Осуществляем переход на конкретный айтем, он подгрузился по ид из репозитория презентером деталей и закинут во вьюху. Изменяем данные на детале, например ставим лайк, и тут собственно встает вопрос. Как оповестить презентер об изменении одного айтема того списка, который он показывает.
1. Самое очевидное - евентбас. Презентер получит сообщение о том, что лайк проставлен и вызовет у конкретного элемента notifyItemChanged. Очевидный минус - презентер должен сам найти индекс измененного элемента, презентер начинает толстеть из-за таких бродкастов.
2. Презентер является хостом для колбэка лоадера базы данных / реалма / ОРМ который поддерживает обсервабл запросы. Во время обновления базы - происходит полный реквери и нам приходится обновлять все элементы списка, а не конкретный. Так же получаем возможные проблемы с синхранизацией пагинации и оффлайн данных в бд. Неосуществимо, если эти данные вообще не зеркалируются в бд, а хранятся только в памяти. Так же нарушаем абстракцию и презентер становится зависим от реализации репозитория, а именно выбора бд в нем.

Ответы>>807709>>807730

28 Июл, 21:56 #231 #807709

>>807701
Вот, меня тоже все эти решения заебали.
Сейчас даже Uncle Bob топит за функциональность.

Соберусь вот с сила и напишу все на чистных функциях и UI компонентах (яля ReactJS, только на JVM)

>>807372 -кун

28 Июл, 22:14 #232 #807730

>>807701
Ты тупой блядь? Про ContentResolver не слышал?

Ответы>>807734>>807746

28 Июл, 22:17 #233 #807734

>>807730
Это даже толще чем советовать хаскель

Ответы>>807737

28 Июл, 22:22 #234 #807737

>>807734
Ага, значит первое.

28 Июл, 22:29 #235 #807746

>>807730
Расскажи, как контент провайдер встраивается в эту архитектуру.

Ответы>>807752

28 Июл, 22:36 #236 #807752

>>807746
CursorAdaptor и нет проблем, на все обновления будет нотификейшн

Ответы>>807755>>807839

28 Июл, 22:39 #237 #807755

>>807752
> CursorAdaptor
Курсор адаптер нельзя использовать в чистой архитектуре. У тебя получается что аж вьюха! знает о реализации бд. Если мы этот курсор оставляем в презентере, то получаем 2 пункт.

Ответы>>807780

28 Июл, 22:41 #238 #807759

Ведроидеры - а вы тоже работаете в openspace-конюшнях? Или вы один такой пишете мобайл, и у вас отдельный кабинет?

Ответы>>807772

28 Июл, 22:48 #239 #807772

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

28 Июл, 22:52 #240 #807780

>>807755
Чистая архитектура - это миф.

Ответы>>807789

28 Июл, 22:59 #241 #807789

>>807780
Это идеал, к которому нужно стремиться.
Да и опять же, курсор отвечает за сущности БД, а не сущности презентера/вьюх. Пусть у нас будет список с чекбоксами, причем значения чекбокса нас интересует только в контексте вьюхи/презентера. Самое удобное - иметь отдельные сущности, которые обладают свойствами сущности бд и имеют это булевское поле отмеченности. В итоге привязываясь чисто к курсору мы проебываем это поле и приходится заводить отдельный список с id выделенных элементов. А вдруг эти элементы без id?

Ответы>>807797

28 Июл, 23:05 #242 #807797

>>807789
У тебя какая-то каша в голове. Шизофазия, а не текст.

28 Июл, 23:09 #243 #807807

Есть карта. Есть БД с маркерами. Есть fragment с кнопками.
Посоветуйте как это архитектурно сделать, чтобы не охуеть.
Только без всякой ебани, типа RXJava.

Ответы>>807809

28 Июл, 23:10 #244 #807809

>>807807

https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs

Ответы>>807814

28 Июл, 23:13 #245 #807814

>>807809
Говно.

Ответы>>807819

28 Июл, 23:19 #246 #807819

>>807814
Очень приятно, Гремлин.

1192 Кб, 2779x1870

28 Июл, 23:40 #247 #807839

>>807752
Ох, этот дух старой школы.
Помнится я так кодил в 2011, когда джуном вкатывался.

Эх золотое время было: Android 2.1, пуши только завезли, все телефоны с физической клавиатурой.

Ответы>>807843>>808193

28 Июл, 23:42 #248 #807843

>>807839
16 MB хватит всем :3

Чем заменить parse.com? 29 Июл, 12:38 #249 #808142

Репостну тут

Чем заменить 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/

Ответы>>808161>>808194

29 Июл, 13:12 #250 #808161

>>808142
Объясни нафиг он вообще нужен?

Мне когда нужны были бэкенды к моим пэт-проектам,
просто делал на ASP.NET Core, потом в докер-контейнер и на личный VPS.

Ответы>>808315

29 Июл, 14:02 #251 #808193

>>807839
И чем по твоему это решение в 2016 плохо?
Что предложишь взамен?

Ответы>>808210

29 Июл, 14:03 #252 #808194

>>808142
Firebase или backendless

29 Июл, 14:15 #253 #808210

>>808193
> И чем по твоему это решение в 2016 плохо?
Тем, что был разработан во времена 16mb MemoryClass, когда за каждый мегабайт был на счету.
Тогда было не до АРХИТЕКТУРЫ, мы же здесь не юзаем C++/Obj-C, у нас тут Java VM.

> Что предложишь взамен?
Это тебе на подумать:
https://www.youtube.com/watch?v=o_TH-Y78tt4
https://www.youtube.com/watch?v=7Zlp9rKHGD4
Конкретные решения предлогать не буду - уже сто раз обсасывали.
Да и нет одного-универсального решения, даже CursorAdapter+ContentProvider имеет какие-то плюсы.

Чем заменить parse.com? 29 Июл, 15:58 #254 #808315

>>808161
У меня не пэт проект. На своём серваке не хочу держать. Вдруг дохуя юзеров набежит и положит его. А облачные бэкенды многие вообще бесплатные до какого-то лимита

Ответы>>808325

29 Июл, 16:09 #255 #808325

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

> А облачные бэкенды
Так, я все равно не понял, у тебя там бэкенд уровня firebase?

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

Ответы>>808342

Чем заменить parse.com? 29 Июл, 16:21 #256 #808342

>>808325
Ничего сложного. Клиенту влом выбирать, где будет бэкенд, но он хочет максимально дешёвое решение. Но, возможно клиент будет раскручивать приложение, может и набежит. А у меня сервер не дорогой, не так много места. Нахуй ещё хостить клиентские приложения? Да и там у меня свои личные сервисы, ценные для меня данные. Они должны быть всегда доступны

Ответы>>808344

29 Июл, 16:24 #257 #808344

>>808342
Шли нахуй, пост-прод суппорт всегда в разы дороже девелопимента, если денег на это нет, то пусть, сука, ищет сервак и индуса.

29 Июл, 17:45 #258 #808419

>>805985
где почитать про 2 вызова у relative ?

Ответы>>808579

29 Июл, 22:53 #259 #808579

>>808419
https://stackoverflow.com/questions/4069037/android-is-a-relativelayout-more-expensive-than-a-linearlayout
> A RelativeLayout always has to do two measure passes.

30 Июл, 11:04 #260 #808690

Поясните за такие вопросы:
0. Проги пишите на java или в 2016 все юзают более высокоуровневые вещи типа скалки или котлина?(хамарины, кордовы, реактнейтивы не в счет)
1. Какие api, части фреймворка должен хорошо знать нормальный мидл, сениор? Требуют ли сейчас лезть в дебри ndk?
Какие библиотеки в тренде(orm, di)?
2.Труднее ли сейчас реверсить прилаги? Вангую что с распостранением тучи фреймворков(roboVm, cordova, react), библиоткет типа moxy, даггеров, сложность реверса выросла на порядок) + в андройд студио по умолчанию намекают что неплохо бы использовать прогуард. Art какой-то вместа далвика появился. Если ли в треде мамкины хакеры для квалифицированного ответа?

Охуел как засрали тредами pr школьники на каникулах

Ответы>>808855>>810217

sage 30 Июл, 15:23 #261 #808855

>>808690
> Проги пишите на java или в 2016 все юзают более высокоуровневые вещи типа скалки или котлина?
Иногда юзают, но джава наиболее ходовая.
> Какие api, части фреймворка должен хорошо знать нормальный мидл, сениор?
Все, очевидно же.
> Требуют ли сейчас лезть в дебри ndk?
Нет. Ндк нужен тогда, когда он нужен, это не то, что каждый обязан знать.
> Труднее ли сейчас реверсить прилаги?
Немного труднее, но в целом — всё так же легко.

Ответы>>809155

sage 30 Июл, 17:47 #262 #809023

>>808774
Пошел нахуй со своим говном.

31 Июл, 01:03 #263 #809155

>>808855
>Все, очевидно же.
Ну не скажи, куча классных вещей появилась, замен, которые далеко не сразу схватишь: list view, action bar, activity->fragments, преференсы. Хотяб напиши что сейчас не юзают, я последний раз говнокодил на эклипсе прилаги на gingerbread

Ответы>>809156>>809169

31 Июл, 01:04 #264 #809156

>>809155
>list view-> recycle
>action bar-> toolbar
Быстрофикс

Апи камеры еще нихуево так поменялись

Ответы>>809199>>809214

sage 31 Июл, 01:40 #265 #809169

>>809155
Даже не знаю сходу не назову. Не юзают то, что помечено как deprecated, и то далеко не всегда. А вообще любой разработчик обязан от корки до корки знать API системы, по крайней мере, в той области, что от него требуется.

ListView используется, ActionBar используется, зря ты так, никуда они не ушли и никогда не уйдут.

Ответы>>809214>>809216

31 Июл, 03:42 #266 #809199

>>809156
> Апи камеры еще нихуево так поменялись
Правда, как было говном, так им и осталось.

31 Июл, 08:57 #267 #809214

>>809156
> Апи камеры еще нихуево так поменялись
Ага, только тебе будет похуй уще лет 5, пока не станет minSdk 21.
>>809169
> ActionBar используется
Зачем? Какие преимущества перед тулбарой?

Ответы>>809242>>809429

31 Июл, 09:00 #268 #809216

>>809169
>листвью
>используется
Кем?

Ответы>>809242

sage 31 Июл, 10:46 #269 #809242

>>809214
> Зачем? Какие преимущества перед тулбарой?
Никаких, кроме того, что он стоит по дефолту. Нужна кастомизация — ставишь тулбар. Не нужна — оставляешь экшнбар.
>>809216
Кем угодно.

31 Июл, 12:10 #270 #809288

А есть какое-то преимущество в плане быстродействия у ресайклервью перед листвью с реализованным холдерпаттерном?

31 Июл, 15:10 #271 #809428

Андроидо куны, нужна помощь.
В общем, есть у меня один клик, по которому должно открываться новое окно.
иногда оно не открывается из-за ИндексАутОфБаунд эксепшн.
Исправлять я её не хочу, пусть ловится, но я хочу в том месте, где она появляется поставить вместо ебучего окна "Приложение завершит работу из-за ошибки" тоаст или аналогичную хуйню, типа "Уппс, с этой кнопнокй что-то не так".

Вопрос: где ловить этот эксепшн и ставить трай-кэтч?
В онКриейт не работает.

Ответы>>809431

31 Июл, 15:17 #272 #809429

>>809214
> Ага, только тебе будет похуй уще лет 5, пока не станет minSdk 21.
Вообще-то, нужно проверять в рантайме версию СДК и использовать соответствующий класс камеры.

Ответы>>809434

92 Кб, 604x427

sage 31 Июл, 15:18 #273 #809431

>>809428
Пиздец у тебя там говнокод.

Ответы>>809437

31 Июл, 15:20 #274 #809434

>>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.
Рекомендуется. Есть много вещей которые гугл рекомендует, но на них кладется хуй.

31 Июл, 15:23 #275 #809437

>>809431
исправил, лол. просто не все объекты в листе были указаны

31 Июл, 16:13 #276 #809480

Аноны, как вы делаете переходы между фрагментами в MVP? Интерфейс у активити с методами openMocha(int mochaId) и фрагменты вызывают эти методы?

Ответы>>810671>>810697

Аттеншон плиз 31 Июл, 21:34 #277 #809743

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

Ответы>>809751>>809828>>810086

31 Июл, 21:42 #278 #809751

>>809743
И в чем проблема написать его прямо сюда под спойлером, а не разводить воду?

sage 31 Июл, 22:55 #279 #809828

>>809743
Пошел нахуй, плиз.

01 Авг, 05:14 #280 #810013

Ананасы, я так понимаю, хентай из Гугл Плэя будет выпилен стопроцентно? Где граница между "содержащие материалы" и "акцентирующие внимание "?

Ответы>>810049

01 Авг, 08:07 #281 #810049

>>810013
Как дела обстоят с фуррятинкой?

01 Авг, 09:28 #282 #810086

>>809743
Твои реквесты нахуй не нужны.

01 Авг, 11:45 #283 #810147

поясните, в чем профит rxjava?
Ну вот перевел я retrofit запросы на observable и что? считай тоже самое что и было (тот же листенер, тот же call на который нужно отписаться в onDestroy)
почитал про zip, amb, еще там занимательные методы - ну прикольно конечно, но ведь это не то что используется часто?
Где это супер удобство и улучшение структуры кода о котором все так кричат?

Ответы>>810157>>810161>>810243>>810694

01 Авг, 11:56 #284 #810157

>>810147
map, flatMap, doOnNext для кэширования, onErrorReturn для получения из кэша если запрос проебался.

Ответы>>810161

01 Авг, 11:59 #285 #810161

>>810147
>поясните, в чем профит rxjava?
А нету его, особенно учитываю android-жизненные-циклы у тебя появляется только доп. головная боль.
В итоге в подавляющем кол-ве юзкейсов тебе достаточно промисов или completablefuture
Вот тут я рассписал >>799500 >>799528

>>810157
>map, flatMap, doOnNext для кэширования, onErrorReturn
Вот все это барахло есть в том же CF

Ответы>>810230

01 Авг, 13:01 #286 #810189

Надо отобразить список, список всегда будет короткий, вряд ли даже за пределы экрана вылезет.
Стоит ли использовать RecyclerView, если там собственно никакого recycling не будет происходить или можно обойтись ListView?

Ответы>>810191>>810193

01 Авг, 13:09 #287 #810191

>>810189
>ListView
Ты же в курсе что ListView тоже "recycling" дочерние вью?
Может ты хотел сказать LinearLayout+ScrollView ?

Ответы>>810203

01 Авг, 13:11 #288 #810193

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

Ответы>>810203>>810235

01 Авг, 13:28 #289 #810203

>>810191
Я забыл, запутался из-за названий. Однако RecyclerView заставляет использовать ViewHolder паттерн и не создавать новые вьюхи и не гонять по ним findViewById. Что мне в общем-то не нужно.
Пишут что у RecyclerView больше возможностей по расширению, можно допилить анимации по клику, разделители итд почти без ебли. Мне пока не особо нужно.
>>810193
Я делаю учебное приложение чтобы меня потом взяли на работу, поэтому меня смущает если пацаны засмеют. Сделаю ресайклер знач.

Ответы>>810205

01 Авг, 13:31 #290 #810205

>>810203
Бля, что-то я уже запутался кто ресайклит а кто нет, однако похуй раз уж я решил что брать.

Ответы>>810215

01 Авг, 13:48 #291 #810215

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

60 Кб, 600x450

01 Авг, 13:53 #292 #810217

>>808690
>пралаги

01 Авг, 14:11 #293 #810230

>>810161
Пошёл нахуй со своими промисами, даун. Как они по твоему решают проблемы асинхронного кода?

Ответы>>810234

01 Авг, 14:14 #294 #810234

>>810230
>Как они по твоему решают проблемы асинхронного кода?
1) Обучись манерам общения
2) Погугли что такое промисы
После этого будем что-то обсуждать.

Ответы>>810237>>810239

01 Авг, 14:17 #295 #810235

>>810193
Долбит #нормально

Ответы>>810236

01 Авг, 14:18 #296 #810236

>>810235
#НОРМАЛЬНО

01 Авг, 14:19 #297 #810237

>>810234
Как и ожидалось, лишь кукареканье вместо аргументов.

01 Авг, 14:20 #298 #810239

>>810234
И да, обучился тебе за щеку. Проверяй.

Ответы>>810245

01 Авг, 14:25 #299 #810243

>>810147
Rx - это не про архитектуру, а про лечение проблем, связанным с асинхронными вызовами: большое количество скрытых состояний, сложная обработка ошибок, callback hell, проблемы при работе с несколькими источниками данных и кэшированием. Если у тебя лишь один вызов по типу "сходил в сеть, отобразил результаты", то да, большого преимущества ты не увидишь.

sage 01 Авг, 14:27 #300 #810245

>>810239
> Эти типичный фразочки разорванной жопки
Так легко детектят в тебе школьники.
Извини, с тобой общаться - ниже моего достоинства.

Ответы>>810268

01 Авг, 14:31 #301 #810249

У меня есть сервис, который может работать в бекграунде.
Когда запускаю активити, нужно проверить запущен ли сервис. Сейчас написал костыль который проверяет все запущенные сервисы и спрашивает у них имя класса.
Как сделать по-нормальному? В книге которую я читал недавно делали ordered broadcast, и подписывались на него в двух местах, и возвращали разные результаты в разных местах, но тоже какой-то пиздец по-моему.
Слышал про какой-то event bus, но не пробовал, используют ли сейчас это?

Ответы>>810277

01 Авг, 14:48 #302 #810264

Аноны, дайте примеры прог, которые не стыдно будет показать на собеседовании синьора

Ответы>>810269>>810283

01 Авг, 15:02 #303 #810268

>>810245
> Перейду на грмнтекст и скажу, что Я ВЫШЕ ЭТОГО, как будто это поможет мне не слиться.

sage 01 Авг, 15:03 #304 #810269

>>810264
Wishmaster

01 Авг, 15:14 #305 #810277

>>810249
А зачем тебе это?

Ответы>>810301

01 Авг, 15:20 #306 #810283

>>810264
Трекер твоего передвижения без гпс и интернета (иногда они конечно работают что бы найти позицию от которой отталкиваться).

01 Авг, 16:12 #307 #810301

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

Ответы>>810311

01 Авг, 16:41 #308 #810311

>>810301
А синглтон ты не используешь потому что... (что?)

Ответы>>810320>>810352

01 Авг, 16:51 #309 #810320

>>810311
Хороший вопрос, не вижу для него проблемы в onCreate сервиса вызвать у синглтона setAlarming true, а при открытии/onDestroy сбросить в false.

01 Авг, 17:26 #310 #810352

>>810311
Хуй его знает, а насколько это идиоматично в андроиде? Не хочу делать явных костылей, если у проблемы есть решение в SDK.
Если делать синглтон, то сделать отдельный класс типа AlarmState, как например делают Repository?

Ответы>>810355

01 Авг, 17:32 #311 #810355

>>810352
> Android
> идиоматично
Ты же в курсе что Android == Просто набор костылей

Лучше делать как идиоматичней в чистой Java (а еще лучше Groovy/Kotlin/Scala),
завязываясь по минимуму на Android "архитектуру".

Ответы>>810378

38 Кб, 640x427

01 Авг, 17:44 #312 #810365

Так, аноняши, какой сейчас статус Jack & Jill?

Могу я сейчас начать новый проект в AndroidStudio для API 14 и юзать волшебные лямбды и Stream API?

Ответы>>810383

01 Авг, 18:00 #313 #810378

>>810355
>Ты же в курсе что Android == Просто набор костылей
Нет, не в курсе, я вообще зелёный ещё.
Читал пост разработчика о том, что свою архитектуру пусть каждый себе сам выдумывает, а андроид это чуть ли не набор системных вызовов. Но я подумал: наверняка уже у людей сформировались какие-то best-practices за это время.
Effective Java норм будет для некоторого просветления?

Ответы>>811054

01 Авг, 18:05 #314 #810383

>>810365
Хуевый статус. Юзай ретролямбду с бэкпортом стримов и не выебывайся.

Ответы>>810385

01 Авг, 18:10 #315 #810385

>>810383
> Хуевый статус
Что с ними не так?

Ответы>>810388>>810407>>810413

sage 01 Авг, 18:18 #316 #810388

>>810385
Всё.

Ответы>>810390

01 Авг, 18:19 #317 #810390

>>810388
Аргументов нет, так и запишем.

01 Авг, 18:43 #318 #810407

>>810385
Transform 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 working
Annotation 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 supported
Jack is currently slower than javac + dx
Jacoco is not supported - well, I personally find Jacoco questionable (it doesnt really show what you want to see), so can totally live without it
Dexguard - enterprise version of Proguard is not currently supported

Ответы>>810425>>810445

01 Авг, 18:48 #319 #810413

>>810385
И кстати, какой нахуй стрим апи? Нет его там.

01 Авг, 19:03 #320 #810425

>>810407
А, что-то подобное я слышал, хотя я думал, что список будет более солидным. Просто странно, так громко кричали о поддержке фич из Java 8 уже в следующей версии сдк, а получилось как всегда, ну по крайней скорее пока что.

Ещё заметил, что нельзя библиотеки через provided подключать, Jack их полностью игнорирует.

Ответы>>810452

13 Кб, 195x200

01 Авг, 19:25 #321 #810445

>>810407
Как хорошо что я давно на котлин перекатился :3

Ответы>>810452>>810755

01 Авг, 19:27 #322 #810452

>>810425
Ну из списка только трансформейшон апи критично. apt много какие либы используют.
>>810445
Ну и котлин не поддерживается. Джетбреинсы даже вроде все сами написали для поддержки, но их динамят с пуллом ревестом.

Ответы>>810461

01 Авг, 19:31 #323 #810461

>>810452
>Ну и котлин не поддерживается
Ну и нафиг он мне вообще нужен, если в нем даже портов восмерочного апи не будет?..

01 Авг, 23:25 #324 #810649

Юзал кто-нибудь такую хуетень для реверсинга?
https://redmine.honeynet.org/projects/are/wiki

01 Авг, 23:53 #325 #810671

>>809480
ну, никто не юзает мвп?

02 Авг, 00:16 #326 #810694

>>810147
Его нет.
Начиная возню с rxjava, ты надеешься красивенько и ладненько сделать асинхронные вызовы с сопутствующими операциями, вместо громоздких лоадеров.
В итоге ты подстраиваешь архитектуру под то, чтобы твой rx вменяемо работал с жизненным циклом

Ответы>>810774

02 Авг, 00:17 #327 #810697

>>809480
Да. Только при чем тут мвп? У тебя и фрагмент, и активити - это view

sage 02 Авг, 01:15 #328 #810755

>>810445
> Как хорошо что я давно на котлин перекатился :3
Ну так у котлина треть из перечисленных проблем Jack'a присутствует. Непонятно, чему ты радуешься.

Ответы>>810855

sage 02 Авг, 01:35 #329 #810774

>>810694
То есть это rxjava виновата, что у тебя говно вместо архитектуры, но никак не ты? Понятно, понятно.

02 Авг, 08:10 #330 #810855

>>810755
Нет у меня никаких проблем, уже пару месяцев в продакнеш пишу на 1.0.3.
В личном проекте на 1.1-preview перешел и все ок.

Кодо-генерацию не использую по идейным соображениям.
Хотя он поддерживает и Dagger2 и какой-нибудь Realm.

Ответы>>810916>>810972

sage 02 Авг, 10:29 #331 #810916

>>810855
У тебя нет, у котлина есть.

02 Авг, 11:02 #332 #810934

итак, пацаны
подскажите че за хуйння
написал кастомный адаптер наследующий RecyclerViewAdapter
пытаюсь написать обработчик кликов в адаптере
вроде бы все получается
а теперь, когда мне в мейн активити надо вызвать метод из класса адаптера, то он его тупо не видит, хотя метод паблик и все с ним нормально
подскажите что не так
адаптер - http://pastebin.com/yKrbaPE5
мейн активити - http://pastebin.com/51cYJj2q
буду благодарен

Ответы>>810978>>810986

02 Авг, 11:45 #333 #810972

>>810855
>Кодо-генерацию не использую по идейным соображениям
Расскажи-ка, рефлексия наше все или ты любишь мануальную терапию?

Ответы>>810977

02 Авг, 11:50 #334 #810977

>>810972
DSL + inline functions + extension lambdas

Ответы>>810979

02 Авг, 11:50 #335 #810978

>>810934
>пытаюсь написать обработчик кликов в адаптере
Ему там немного не место. Вот этот твой инер класс с итем клик листенером в адаптере, это пиздец как по мне. Я все клики обрабатываю в специальных хендлерах которые вешаются на созданные вьюшки через датабайндинг. А метод твой не рабоатет потому что у RecyclerView.Adapter его тупо нет, или кастую к своему горе адаптеру или подсмотри как это делают другие, но такого подхода я не видел нигде. Ты или невнимательный, или пытаешься сделать как в динамической дрисне, или не понимаешь механизма ООП как его реализует джавка.

Ответы>>810982

02 Авг, 11:51 #336 #810979

>>810977
Ясно.

02 Авг, 12:03 #337 #810982

>>810978
делал по этому гайду
http://www.codexpedia.com/android/defining-item-click-listener-for-recyclerview-in-android/

типо сам гайд неправильный?

Ответы>>810996

02 Авг, 12:09 #338 #810986

>>810934
Нихуя не понятно мне в твоём коде, но в тех 2.5 приложений которые я делал, я делал следующее (допустим, у меня список хуёв):
1. HuiHolder extends RecyclerView.ViewHolder implements onClickListener
2. добавляю onClick метод в HuiHolder
3. В конструкторе HuiHolder: itemView.setOnClickListener(this);

Ответы>>810992

02 Авг, 12:19 #339 #810992

>>810986
http://pastebin.com/yKrbaPE5
с 41-ой строчки все то, что ты написал

Ответы>>810996>>811012

02 Авг, 12:22 #340 #810996

>>810982
Гайд с технической стороны правильный, но лично мне не нравится.
>>810992
Ты не понимаешь видимо разницы между тем что делает он и что делаешь ты.

И да, у тебя ошибка в типе адаптера.
private CityAdapter mAdapter; а не RecyclerView.Adapter
Подумай над всем еще раз или иди в js-тред.

Ответы>>811003

02 Авг, 12:40 #341 #811003

>>810996
всмысле разницу не понимаю?
он написал как он делал, я сказал, что делал точно также
поменял тип, вроде нажатие работает

Ответы>>811026

02 Авг, 12:52 #342 #811012

>>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);

Ответы>>811044

02 Авг, 12:57 #343 #811024

>>801015 (OP)
>Разработка под Android
Как тут обстоят дела с фрилансом, господа?

Ньюфаг

Ответы>>811029>>812892

02 Авг, 12:58 #344 #811026

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

Ответы>>811047

02 Авг, 12:59 #345 #811029

>>811024
Миллионы индусов и школьников. Я беспруфный, так что просто кукарекаю, попробуй посмотреть заказы на одеске и еще где-то.

02 Авг, 13:08 #346 #811044

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

а вот насчет метода бинд
не совсем понял что ты имеешь ввиду
просто я все это делал по туториалу по созданию ресайклвью и там было сказаноо, что надо прописывать все в onBindViewHolder
типо этот метод правильнее будет создавать?

Ответы>>811052

02 Авг, 13:10 #347 #811047

>>811026
а ну в этом плане согласен
но все равно же работает

02 Авг, 13:17 #348 #811052

>>811044
onBindViewHolder нужно реализовать обязательно, т.к. это часть контракта по использованию адаптера. А что делать внутри него ты уже решаешь сам, как царь и бог своей laba1, можешь весь функционал внутри держать, можешь вынести в отдельный метод что-то.
В случае с bind, можешь перенести функционал внутрь объекта, надо которым работаешь и передавать туда необходимые параметры. Теперь твой ViewHolder сможет хранить ссылку на объект, упаковать его в интент и запустить активити по клику.
Это не я придумал, так делали в книге Android Nerd's ranch guide, но мне понравилось.

Ответы>>811071

02 Авг, 13:18 #349 #811054

>>810378
>Effective Java норм будет для некоторого просветления?
Это тебе в java-тред. Я бы посоветовал "Чистый код", может быть еще "Code Complete".

Видео от автора: https://www.youtube.com/watch?v=Nltqi7ODZTM
Там в примере RubyOnRails как фреймворк, который ограничивает твою свободу,
но думаю ты сможешь провести параллели в Android.

Ответы>>811085

02 Авг, 13:34 #350 #811071

>>811052
советуешь эту книгу для начинающего?

Ответы>>811082

02 Авг, 13:41 #351 #811082

>>811071
Да. Я сам в принципе начинающий, но лучше ресурса не видел. Вводный курс на udacity - параша (вроде бы скоро должны обновить), курсы на coursera вообще ебануться говно, The Busy Coder’s Guide to Android Development - справочник а не учебник.

Ответы>>811087>>811124

02 Авг, 13:41 #352 #811085

>>811054
Заебок, спасибо большое.

02 Авг, 13:43 #353 #811087

>>811082
а джаву скоко до этого учил?

Ответы>>811098

02 Авг, 13:50 #354 #811098

>>811087
Целенаправленно джаву отдельно от андроида не учил, но подучивал-почитывал параллельно.
Я любитель онлайн-курсов вообще, проходил курс по алгоритмам на курсере, он на джаве, до него джаву не знал, там набрался каких-то основ, года два назад или три.
Почитывал книги и посматривал курсы вместе с андроидом, но не увлекался. Читать объёмные талмуды по джаве где треть книги объясняют циклы и типы данных и ещё треть какую-то библиотеку для гуя желания не было.

sage 02 Авг, 14:33 #355 #811124

>>811082
> Вводный курс на udacity - параша
Это ты параша.

Ответы>>811126>>811162

sage 02 Авг, 14:36 #356 #811126

>>811124
Оу, любитель жаба-раша пожаловал

02 Авг, 15:15 #357 #811149

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

Ответы>>811156>>811163

02 Авг, 15:22 #358 #811156

>>811149
>нестандартные паттерны для разработки под ведро ?
>>807372 я правда еще не проверял

02 Авг, 15:34 #359 #811162

>>811124
Я имею в виду не курс для начинающих, а самый старый курс интермидиейт сложности, на который ещё ссылка есть с официального сайта.
Непоследовательная подача информации, с задачами уровня "отредактируй этот код, добавь в него список и он заработает :^)" причём с первых недель.
Курс не объясняет мотивации принятых решений, почему это делается так или так, зачем нужны компоненты. Очень много информации вразнобой.
Недавно на /r/androiddev мелькал пацанчик из стаффа этого курса и сам признался, что курс устаревший и хуёвый, и что сейчас идёт работа над доведением курса до ума.
Сам жду новой версии посмотреть что там будет.

Ответы>>811182

02 Авг, 15:35 #360 #811163

>>811149
HaskellActivity
NativeActivity, но в меньшей степени.
React Native + ClojureScript + KotlinScript

02 Авг, 16:07 #361 #811182

>>811162
Не проще ли чем по курсам учиться - взять и прочитать пару книжек параллельно пытаясь сделать что-нибудь свое консультируясь по всем сложностям здесь и на стэке ?

Ответы>>811208

6 Кб, 500x129

02 Авг, 16:08 #362 #811185

Какое можно сделать приложение, использующее Bluetooth?

Ответы>>811187>>811763

02 Авг, 16:09 #363 #811187

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

02 Авг, 16:49 #364 #811208

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

Ответы>>811218

02 Авг, 17:04 #365 #811218

>>811208
а я говорю про то, как стать нормальным разрабом, а не новичком :) То что проходится на курсах гораздо проще на проекте изучить и понять, почему должно быть именно так :)))

Ответы>>811235

02 Авг, 17:17 #366 #811226

Последнее время начал косячить rx - пишу например post-запрос на серв, добавляю observeOn(Schedulers.io()).subscibeOn(AndroidSchedulers.mainThread()) и мне кидает networkOnMainThread. При том в любых комбинациях, даже и там и там Schedulers.io()

Ответы>>811228

02 Авг, 17:18 #367 #811228

>>811226
>observeOn(Schedulers.io()).subscibeOn(AndroidSchedulers.mainThread())
ты аргументы observerOn/subscribeOn перепутал :)

Ответы>>811244

sage 02 Авг, 17:25 #368 #811235

>>811218
)))))))))))))))))))))))

02 Авг, 17:39 #369 #811244

>>811228
Даже когда я пишу в оба Schedulers.io() оно выдает эту ошибку

Ответы>>811246

02 Авг, 17:40 #370 #811246

>>811244
observeOn(AndroidSchedulers.mainThread()).subscibeOn(Schedulers.io())

02 Авг, 22:14 #371 #811515

Пацаны как вкатится в ведроид разработку с IDEA?

Не хочу менять её на какие-то студии. Что мне нужно знать?

В ведроид разработке есть фриланс?

Ответы>>811517

02 Авг, 22:18 #372 #811517

>>811515
> её на какие-то студии
Это тож самое.

Ответы>>811539

02 Авг, 22:35 #373 #811539

>>811517
>тож самое
Ну если ведростудия может в контрл+пробел, контрлшифт интер, контрл альт Л и прочие комбинации из IDEA то ладно.

Ответы>>811620

sage 03 Авг, 00:13 #374 #811620

>>811539
Ты тупой?

Ответы>>811646

03 Авг, 01:20 #375 #811646

>>811620
Да все глянул, что там фичи идеи. Окей. В ведроид фриланс есть?

Ответы>>811666

sage 03 Авг, 02:22 #376 #811666

>>811646
Ты тупой.

03 Авг, 08:10 #377 #811763

>>811185
Берешь любой BT гаджет с открытым исходным кодом и фигачишь.

Ответы>>811764>>812406

03 Авг, 08:11 #378 #811764

>>811763
Фубля, что-то я с утра чушь пишу.
Не с открытым кодом, а с документацией.

03 Авг, 12:01 #379 #811870

Судари, у меня к вам вопрос.
Предложили работу, Android Junioro'м. Собственно, в Java чувствую себя уверенно, с базами данных тоже дружу.

От меня требуется только знание basics of Android SDK. Очевидно, что иду на сайт Google и читаю гайды.

Есть ли ещё какие-то ресурсы, где кратко поясняются принципы и архитектура приложения? Чтобы без воды, самая суть. Можно с "высоты" птичьего полёта.

Ответы>>811896>>812758

03 Авг, 12:33 #380 #811896

>>811870
> принципы и архитектура приложения
Каждый строит свой костыль поверх костылей андроид сдк. Даже в реализации мвп от разных людей есть различия.

96 Кб, 964x1520

162 Кб, 1288x348

03 Авг, 12:33 #381 #811897

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

Ответы>>811965

03 Авг, 13:59 #382 #811965

>>811897
JAVA_HOME поставил?

Ответы>>812052

214 Кб, 1268x860

38 Кб, 1028x82

03 Авг, 14:59 #383 #812052

>>811965
Конечно.

03 Авг, 19:53 #384 #812277

Анон, памаги с ВкАпи. Есть один тупой вопрос насчет диалогов - как получить имя собеседника? Если использовать title сообщения(dialogs.message.title), то я получу только названия беседы, а вместо имя обычного собеседника - троеточие. Могу получить user id (dialogs.message.title), но как с него получить имя\фамилию - хз

Ответы>>812323>>812610

03 Авг, 20:57 #385 #812323

>>812277
Может быть messages.getChatUsers?

sage 03 Авг, 22:25 #386 #812406

>>811763
Нужно что-то без специальных гаджетов. Только между телефоном (или планшетом)

03 Авг, 22:49 #387 #812432

Котаны, почему под андроид нет chatrandom или его аналога?

Ответы>>812435>>812471

03 Авг, 22:51 #388 #812435

>>812432
Я б написал с кем-нибудь

03 Авг, 23:15 #389 #812471

>>812432
Дохуя аналогов же в Play сторе.

Ответы>>812679

04 Авг, 02:11 #390 #812610

>>812277
имеешь userId ==> можешь юзать users.get()

Ответы>>815690

04 Авг, 08:26 #391 #812679

>>812471
Покажи хотя бы один.

Ответы>>813214

04 Авг, 08:59 #392 #812692

>mHui, mContext, mDermoVengerca, mPenis
Когда вы перестанете это говно писать?

Ответы>>812693>>812755>>812892

04 Авг, 08:59 #393 #812693

>>812692
Почему так нельзя писать?

Ответы>>812694

04 Авг, 09:01 #394 #812694

>>812693
Потому что со времен адекватных ide твоя ебаная венгерская нотация не имеет никакого значения.

Ответы>>812697>>812774

04 Авг, 09:03 #395 #812697

>>812694
Продолжай.

Ответы>>812816

04 Авг, 10:57 #396 #812755

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

Ответы>>812771

04 Авг, 11:00 #397 #812758

>>811870
https://plus.google.com/+DianneHackborn/posts/FXCCYxepsDU

04 Авг, 11:16 #398 #812771

>>812755
> Никакой информативной ценности эти префиксы не представляют.
Они легко позволяют отличить поле класса от переменной внутри метода.

Ответы>>812774>>812792

04 Авг, 11:19 #399 #812774

>>812771
>>812694

Ответы>>812816

04 Авг, 11:58 #400 #812792

>>812771
Господа, к нам пожаловал последователь Шилдта "пиши в блокноте / компиль консоле"

Ответы>>812816

04 Авг, 12:18 #401 #812816

>>812774
Я тебе уже ответил >>812697
>>812792
Почему бы да?

Ответы>>812827>>812851

04 Авг, 12:31 #402 #812826

Как создать ещё одну папку для ресурсов (аналогичную res)?

04 Авг, 12:32 #403 #812827

>>812816
Его подход устарел, в Java 9 (уже можно юзать) есть JShell - это repl для джавы с комплишеном.

04 Авг, 13:10 #404 #812851

>>812816
Конкретно префикс m тебе дает ровным счетом ничего. Если тебе нужно явно указать принадлежность к классу, то есть this, неявно подсветит ide. Если ты боишься потеряться в переменных, то с твоим классом / методом скорей всего что-то не так, и лучше его раздробить. А об твою m взгляд всегда спотыкается при просмотре кода.

Ответы>>812855

04 Авг, 13:24 #405 #812855

>>812851
> Конкретно префикс m тебе дает ровным счетом ничего.
Даёт. Я точно знаю, что это поле класса.
> Если тебе нужно явно указать принадлежность к классу, то есть this, неявно подсветит ide.
Конечно подсветит в случае присваивания. А в случае обращения далеко не факт. Одно дело ты пишешь код, другое — читаешь через некоторое время или даёшь его читать другим.
> А об твою m взгляд всегда спотыкается при просмотре кода.
У меня не спотыкается, проблемы на вашей стороне. Давно уже воспринимаю этот стиль как само собой разумеющееся.

Ответы>>812885

1081 Кб, 320x240

04 Авг, 13:45 #406 #812885

>>812855
Ох ребята, развели тут опять нюфага-java-срач.

А нормальные люди пишут на котлине, где вообще нет полей и есть primary-конструкторы.

Ответы>>812890

04 Авг, 13:48 #407 #812890

>>812885
> А три с половиной инвалида пишут на котлине
Пофиксил.

04 Авг, 13:53 #408 #812892

>>811024
Если совсем ньюфаня можешь сразу навернуть соленых без гречки. На одеске в основной массе хотят кроссплатформенность либо предлагают допилить почти готовое приложение и тебе кроме андроеда придется освоить еще херову тучу вещей, оставшейся немногочиленная прослойка занята ебанутыми с размытыми требованиями, которые сами не знают чего хотят или "плачу 200$ после того как приложение начнет приносить прибыль не меньше чем 100500$ в месяц". Готов ли ты к такому сынок?

>>812692
Двачую люто, а таких ушлепенцев море, все от того что тупо, по обезьяньи копируют гайды гугла в котором добавлять эту поеботу "code convention". Небось гугловцев еще и взъебывают на ревью если 'м' не поставили.

Ответы>>812959

04 Авг, 15:02 #409 #812959

>>812892
>code convention
Это даже не официальная конвенция, я где-то видел пост где какие-то гугловцы от этой параши открещивались.

04 Авг, 15:12 #410 #812963

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

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

Полагаю, что открыть ссылку через jsoup или просто http connect будет изи ,но как потом прочесть файл, висящий где-то в облаке?

Ответы>>812964>>812967>>816220>>818096

04 Авг, 15:13 #411 #812964

>>812963
Гитхаб.

Ответы>>812965>>812967

04 Авг, 15:16 #412 #812965

>>812964
а. постой. гит не вариант, так как файл в последствии будут редактировать "зеленые" люди, которые особо не секут в этих делах.
Им надо просто зайти будет в файлообменик и отредактировать файл, вставив туда свои ссылки/цифры/тексты.

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

Ответы>>812969

sage 04 Авг, 15:17 #413 #812967

>>812964
Как файлообменник.
>>812963
Остальное прочтешь в любых гайдах по андроиду, а пока сажа.

Ответы>>812979

04 Авг, 15:18 #414 #812969

>>812965
В гитхабе файл можно изменять прямо в вебе. Дашь ему доступ на изменение.

Ответы>>812979>>812983

04 Авг, 15:34 #415 #812979

>>812969
>>812969
>>812967

http://www.puzzlers.org/pub/wordlists/pocket.txt

Нужно что-то вроде такого

Ответы>>812983

04 Авг, 15:35 #416 #812981

Читается спокойно вот так

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);
}

Теперь надо такое же найти. про сервак я

Ответы>>812983

04 Авг, 15:37 #417 #812983

>>812981
>>812979
>>812969

с дропбокс не работает. инфа сотка

04 Авг, 16:54 #418 #813063

>>813024
там одни веб-мрази.

04 Авг, 19:07 #419 #813214

>>812679
Чат вдвоём, nekto me

64 Кб, 1074x266

04 Авг, 19:38 #420 #813238

Линуксоиды, выручайте. Как в студии сделать шрифты, чтобы были как справа? Я так понимаю, нужно поставить хинтинг, на стековерфлоу постят какие-то настройки, но они не настраивают хинтинг. Может, есть какой-нибудь другой способ, ну, пропатчить там что-то.

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

Ответы>>813242

04 Авг, 19:41 #421 #813242

>>813238
пересесть на macOS/Windows

Ответы>>813246

04 Авг, 19:42 #422 #813246

>>813242
Там adb не авторизует мой основной телефон

Ответы>>813259>>813286

04 Авг, 19:51 #423 #813259

>>813246
Поставь USB дрова от Google, идут в комплекте Android SDK

Ответы>>813312

271 Кб, 1080x1920

04 Авг, 20:50 #424 #813286

>>813246
На макоси всё авторизовало с первого раза.

Ответы>>813312

04 Авг, 21:21 #425 #813302

Помогите нюфане плиз. Что произойдет если в основном потоке выполняется какой-либо метод и в другом потоке в этот момент эвентбас отправит объект субскрайберу (тоже в основном потоке)? Завершится ли корректно выполняемый метод? Или начнет выполнение субскрайбер?

Ответы>>813317>>813377>>813405

04 Авг, 21:32 #426 #813312

>>813259
Выбрать "переустановить драйвера" в диспетчере устройств?

>>813286
Накатить что-ли хакинтош потом

04 Авг, 21:39 #427 #813316

>>802043
>пикассо
В очко тебе лассо.
мимо адепт фресколиб

Ответы>>813375

04 Авг, 21:39 #428 #813317

>>813302
Не знаток веброд разработки, но обычно есть отдельный момент времени в тике главного потока когда идет обработка всех лиснеров.

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

04 Авг, 21:51 #429 #813325

Каким образом в крупных компаниях тестируют приложения, которые работают с Bluetooth устройствами?

Ответы>>813327>>813329

04 Авг, 21:52 #430 #813327

>>813325
https://riggaroo.co.za/introduction-automated-android-testing/

Ответы>>813380

04 Авг, 21:54 #431 #813329

>>813325
Мокают ответ блютуза?
Ну это на стадии юнит тестирования.
А потом все равно надо потестить собственно физически.

04 Авг, 22:12 #432 #813338

Какое место в архитектуре MVP занимает Loader?
Модель? Юзается в презентере?

Ответы>>813346>>813365

04 Авг, 22:20 #433 #813346

>>813338
в презентере колбэки.

04 Авг, 22:39 #434 #813365

>>813338
Покажите как выглядит мвп

04 Авг, 22:52 #435 #813375

>>813316
Фейсбучное говно? Нет, спасибо.

мимо глайдобог

Ответы>>813400

04 Авг, 22:53 #436 #813377

>>813302
А потом такие как он рассказывают в треде, что RXJAVA НЕНУЖНА!11

Ответы>>813391>>813406

04 Авг, 22:55 #437 #813380

>>813327
У меня, кстати, иногда припекает с этой тётки. Абсолютно бессмысленные статьи, наполненные водой процентов на 70%. Но зато звезда android-тусовки и Google Developer Expert.

Ответы>>813673

04 Авг, 23:03 #438 #813391

>>813377
я только сервис с презентером связываю с помощью эвентбаса. Все остальное с помощью RxJava. И я если честно не представляю в чем была бы разница касаемо моего вопроса. Если знаешь ответ, прошу объясни

Ответы>>813394

04 Авг, 23:07 #439 #813394

>>813391
Ты так вопрос сформулировал, что нихуя не понятно, кроме того, что у тебя там какая-то хуйня с потоками и коллбэками.
Код показывай.

Ответы>>813421

04 Авг, 23:11 #440 #813400

>>813375
>глайд
>не говно

Ответы>>813402

04 Авг, 23:12 #441 #813402

>>813400
Ну а что по-твоему не говно? UIL какой-нибудь древний?

Ответы>>813404

04 Авг, 23:12 #442 #813404

>>813402
fresco не говно. Всё остальное говно.

Ответы>>813407

04 Авг, 23:13 #443 #813405

>>813302
Выполнение методов в потоке синхронизировано. Выполнится первый метод, потом коллбэк

Ответы>>813423

04 Авг, 23:15 #444 #813406

>>813377
Конечно ненужна.
Нет - она нужна какому-нибудь клиенту телеграмма, или основному приложению вк.
Для твоей хуйни с тремя реквестами и возвращаемым "hello, word" - ненужна

Ответы>>813410>>813631

04 Авг, 23:15 #445 #813407

>>813404
Ну-ну, лол.

04 Авг, 23:16 #446 #813410

>>813406
> ненужна
Спасибо за авторитетное мнение! Как же мы тут без тебя справимся, когда сентябрь начнется?

Ответы>>813413

04 Авг, 23:17 #447 #813413

>>813410
Да, без тебя в сентябре тут будет скучно

04 Авг, 23:27 #448 #813421

>>813394
Ну кароч есть сервис, в котором в io треде выполняется тяжелый код. По окончании выполнения, через эвентбас, происходит отправка эвента. В презентере на этот эвент подписан каллбэк. Вопрос: если в презентере в мейнтреде выполняется код, и в этот же момент произошла отправка эвента из сервиса, то какая будет очередность? Я вроде попробовал, и каллбэк начинает выполнение только после завершения метода, но всегда ли так будет?

04 Авг, 23:28 #449 #813423

>>813405
Благодарю

26 Кб, 696x114

04 Авг, 23:54 #450 #813434

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

Ответы>>813437

04 Авг, 23:58 #451 #813437

>>813434
Ну так ProGuard и вырезает неиспользуемые методы. Что тебя смущает?

Ответы>>813439

05 Авг, 00:00 #452 #813439

>>813437
Меня смущает, что дебаг сборка собирается без МУЛЬТИДЕКСА. А релиз с прогвардом без него не собирается, мол методов уже 64к, в один dex файл не влезает. Ты же понимаешь что мультидекс тормозит старт приложения да и потом небось тоже есть оверхед?

Ответы>>813441

05 Авг, 00:02 #453 #813441

>>813439
Нихуя он не тормозит, он лишь компиляцию замедляет.

А в debug-сборку всё влезает - это наверное из-за инстант рана, внутри него что-то вроде принудительного мультидекса есть.

Ответы>>813446

05 Авг, 00:14 #454 #813446

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

05 Авг, 07:55 #455 #813565

Каким образом искать регресс после включения proguard?
Ведь часто это приводит к крашам где попало.

Ответы>>813594>>813615

05 Авг, 09:27 #456 #813594

>>813565
UI-Tests / monkey runner

05 Авг, 10:03 #457 #813615

>>813565
Т Е С Т Ы
Е
С
Т
Ы

05 Авг, 10:33 #458 #813631

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

Ответы>>813659

05 Авг, 11:54 #459 #813659

>>813631
многопоточнасть #НЕНУЖНА

05 Авг, 12:19 #460 #813673

>>813380
Зато увеличивает энтропию джендер дайвёсити.

gradle-пиздец 05 Авг, 15:05 #461 #813782

Сап, котаны. Последняя сборка проекта длилась 15 минут, и меня что-то перекрыло. Есть возможность заставить эту машину смерти работать быстрее ? ( обновил сейчас с 1.5 до 2.1.2 gradle tools, посмотрим что выйдет )

Ответы>>813783>>813804>>814076

05 Авг, 15:06 #462 #813783

>>813782
с 2.1.2 забилдилось за 3 минуты 30 секунд, что тоже треш

Ответы>>813788

05 Авг, 15:14 #463 #813788

>>813783
Попробуй отключить "instant run"

Ответы>>813803

05 Авг, 15:38 #464 #813803

>>813788
уже, также все в properties поставил что нужно, сделал дебаг сборку по 21 api level minSdk

05 Авг, 15:38 #465 #813804

>>813782
Дай больше оперативы градлу.

Ответы>>813862

05 Авг, 16:42 #466 #813859

Андроидо-куны, дайте инфу, как русскоязычный текст сделать нормальным при парсинге?
Пизжу из файла в вебе, если текст русский - какие-то знаки вопроса в ромбиках.
С ангельским всё норм.
Как можно перевести его в UTF или во что там

Ответы>>813900>>813914

05 Авг, 16:46 #467 #813862

>>813804
больше 4гб ?) Сейчас потестил, вроде в оффлайне от 30 сек до 1.5 минут, т.e. более-менее стало нормально...

05 Авг, 17:18 #468 #813900

>>813859
Use UTF-8.

Ответы>>813903>>813914

05 Авг, 17:20 #469 #813903

>>813900
да я понял. подскажи как это сделать.
как перекодировать стринг, полученный из веба?
Там текст "Привет, Друг!".
Хуй знает, что он ебёт мозги. сайты парсит нормально

22 Кб, 312x229

05 Авг, 17:43 #470 #813914

>>813900
>>813859
Блять, мужики, что делать? В консоль выводит на русском, всё нормально.
Пробный код для проверки написал в эклипсе.
Вот код:
http://pastebin.com/Ttt9KHPz

В андроиде же выходит пикрелейтед

Ответы>>813919>>813952>>814095

05 Авг, 17:52 #471 #813919

>>813914
бамп

Ответы>>813958

05 Авг, 18:44 #472 #813952

>>813914
хелп плез

Ответы>>813958

05 Авг, 18:55 #473 #813958

>>813952
>>813919
С бампами в бэ плиз.

Ответы>>813960

05 Авг, 19:04 #474 #813960

>>813958
бамп

35 Кб, 402x604

05 Авг, 19:48 #475 #813998

>>801015 (OP)
Ребзя, собираюсь писать сервер чата для андройда. Там с сокетами тоже есть свои костыли или как?

Ответы>>814011

05 Авг, 20:10 #476 #814011

>>813998
юзай gcm

Ответы>>814158

05 Авг, 20:16 #477 #814015

Аноны, что щас спрашивают на собеседованиях в таки конторах, как легион или роботы?

Ответы>>814051

05 Авг, 20:49 #478 #814051

>>814015
"В вилку в глаз или в жопу раз?"
"Почему люки круглые?"
"Кем вы видите себя через 5 лет в нашей компании"

Ответы>>814053

05 Авг, 20:51 #479 #814053

>>814051
В жопу, я принят?

Ответы>>814059

05 Авг, 20:56 #480 #814059

>>814053
Что на ней написано?

05 Авг, 21:10 #481 #814076

>>813782
В оффлайне пускай хуярит.

43 Кб, 483x290

05 Авг, 21:30 #482 #814095

>>813914
Лови, я пофиксил http://pastebin.com/EmqYDATr

Ответы>>814145>>814153

05 Авг, 22:22 #483 #814145

>>814095
бля, какой толк от этого авэйта, так же при перевороте все течет

Ответы>>814149

05 Авг, 22:27 #484 #814149

>>814145
Ну так не переворачивай, очевидно_же.jpg

33 Кб, 551x550

05 Авг, 22:36 #485 #814153

>>814095
>val title by lazy { findViewById(R.id.title) as TextView }
> override fun onCreate(savedInstanceState: Bundle?)
>const val url
>class MainActivity : AppCompatActivity()
это точно жава? что за хуйня?

Ответы>>814154

05 Авг, 22:39 #486 #814154

>>814153
K O T L I N
O
T
L
I
N

05 Авг, 22:47 #487 #814158

>>814011
Для чата? Ты ебанутый?

Ответы>>814214

06 Авг, 00:42 #488 #814214

>>814158
поясни почему плохо?
мимо другой анон

Ответы>>814227

06 Авг, 00:57 #489 #814227

>>814214
Как минимум отсутсвием истории переписки и проебом сообщений, если ты офлайн и их скапливается больше 100.

Ответы>>814250>>814556

06 Авг, 01:25 #490 #814250

>>814227
А бд у тебя на сервере нет? Все что ты юзаешь работает через gcm если че

Ответы>>814336

42 Кб, 600x534

06 Авг, 05:18 #491 #814336

>>814250
> Все что ты юзаешь работает через gcm
што?

Ответы>>814402

06 Авг, 10:21 #492 #814400

Сап, котаны, суть вопроса - при быстром вводе в searchview, в которую подсказки подгружаются при событии onTextChanged со сторонней апишки, происходит фатал - данные для адаптера были изменены но метод notifydatasetchanged не был вызван. Но только при быстром вводе/слабом интернете

Ответы>>814403>>814420>>814562

06 Авг, 10:24 #493 #814402

>>814336
Мессенджеры

06 Авг, 10:26 #494 #814403

>>814400
Юзай rx и оператор debounce

Ответы>>814420

06 Авг, 11:14 #495 #814420

>>814403
дежурный пост про хипстерское говно
>>814400
> адаптера были изменены но метод notifydatasetchanged не был вызван
Без кода хуйня. Ты у адаптера источник данных меняешь в бэкграунде или меин треде? Как ты вообще ходишь в стороннюю апишку?

Ответы>>814478

06 Авг, 12:34 #496 #814473

>>801063
Ананас! У меня как раз на такой случай есть для тебя библиотека, которую я написал недавно:
https://github.com/DrBreen/BeRetained

Суть такая - помечаешь поле, которое тебе нужно сохранить при пересоздании Activity аннотацией @Retain, вызываешь пару специальных методов - и все, остальное за тебя сделает сгенерированный код. У меня на гитхабе есть пример, как с этим работать.

Ответы>>814484

06 Авг, 12:37 #497 #814478

>>814420
>Rx - хипстерское говно
Окей, Маня, обмазывайся тоннами вложенных callback'ов на каждый чих.

06 Авг, 12:49 #498 #814484

>>814473
>сгенерированный код
Фу фу нахуй

Ответы>>814489>>814495

06 Авг, 12:57 #499 #814489

>>814484
И в чем проблема со сгенерированным кодом? Dagger 2 тоже не используешь? Небось еще и у тебя в onCreate строк 15 вызовов findViewById?

06 Авг, 13:07 #500 #814495

>>814484
Не, конечно, если тебе не нравится генерированный код - вперед, переопределяй onRetainCustomNonConfigurationInstance().

06 Авг, 14:57 #501 #814556

>>814227
REST + push, не ? Через REST грузим историю, контакты и пр. а через пуши обмениваемся данными в real-time

06 Авг, 15:00 #502 #814562

>>814400
В стороннюю апишку я хожу через retrofit+rx, по потокам все правильно, но как я понимаю, если прилетает одновременно ( при слабом интернете/быстром вводе ) несколько ответов, то адаптер тупо не успевает делать notify после добавления. А, ну да, я тут же понял как решить это говно - не позволять выплевывать больше 1 пака данных после обновления, т.e. текст изменился -> грузим данные -> флаг поставили -> если текст изменился и !флаг -> цикл иначе игнорируем запрос на данные от вьюхи

Ответы>>814604>>814671

06 Авг, 16:00 #503 #814604

>>814562
> то адаптер тупо не успевает делать notify после добавления
notifyDataSetChanged же отрабатывает полностью в текущем фреме, а не в следующем, разве нет?

Ответы>>814607

06 Авг, 16:01 #504 #814607

>>814604
Фишка в том что между вызовами может произойти подписка на новые данные и гипотетически ( при особых условиях ) произойдет описанное выше

Ответы>>814621

06 Авг, 16:18 #505 #814621

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

Если у тебя изменения данных в адаптере происходит в другом потоке иди в другой фрейм (через handler.post), то вопрос зачем так делать.

Ответы>>814624>>814627

06 Авг, 16:20 #506 #814624

>>814621
Нужно будет посмотреть, гляну - отпишу. Вроде все на AndroidSchedulers.mainThread() стояло

Ответы>>814654

06 Авг, 16:24 #507 #814627

>>814621
Да нет, все вроде в одном потоке.

Ответы>>814654

06 Авг, 16:44 #508 #814654

>>814627
>>814624
Ну вот тест тебе. Если ставить данные и нотифаить адаптер сразу же, то все ок работает.
https://github.com/CherryPerry/test-fast-notify

202 Кб, 500x339

06 Авг, 17:05 #509 #814671

>>814562
А мог бы просто использовать debounce в RxJava. Но нет, я ж один не хипстер, все остальные хипстеры и пидорасы, поэтому используют RxJava, а я один такой умный, буду пердолиться с флагами.

06 Авг, 17:38 #510 #814688

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

06 Авг, 18:41 #511 #814734

>>801015 (OP)
ПЕРЕКАТ
https://2ch.hk/pr/res/814733.html (М)
https://2ch.hk/pr/res/814733.html (М)
https://2ch.hk/pr/res/814733.html (М)
https://2ch.hk/pr/res/814733.html (М)

07 Авг, 21:58 #512 #815690

>>812610
спс, но сам додумался

08 Авг, 19:28 #513 #816220

>>812963
Может, тебе вики-движок навернуть? С готовым приложением.

09 Авг, 20:50 #514 #816816

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

11 Авг, 21:32 #515 #818096

>>812963
http://www.note-pad.net/

17 Авг, 20:50 #516 #821969

Учил вот джаву, но что-то очень скучно, решил попробовать андроид, расскажите чем занимаетесь, сколько времени идет на обучение. Советы и ответы на ФАК приветствууются

Тред утонул или удален.
Это копия, сохраненная 22 августа 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion