Вы видите копию треда, сохраненную 2 июня 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий тред тут:
https://2ch.hk/pr/res/714032.html (М)
Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом.
А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный. Куплено Microsoft. Хз что будет дальше.
5) RoboVM - идейный наследник ксамарина, а теперь уже и его часть но на Java. Менее популярен, так как моложе. Куплен Microsoft. Вот он точно RIP.
Отдельного упоминания стоят:
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.
Привет клиент-серверка.
Пишите в треде что добавить.
Я на работе, извини меня.
Да и ксамарин жив, а с робовм обосрался, но написал что он умер кстати смотрел в будущее.
Собственно, в чём минусы такого подхода?
Ну все, маня, готовь туза, завтра буду тебя в школе ебать.
а как ещё? все свои вьюхи делать?
Если ты про гугловскую design support library, то это единственный легитимный вариант.
Не стоит использовать васянобиблиотеки MaterialDialogs, MaterialDrawer, MaterialAllah, когда всё можно сделать стандартными средствами из support library. И ты будешь уверен, что мейнтейнер библиотеки не забьет на неё хуй.
>когда всё можно сделать стандартными средствами из support library
В том и дело что нельзя. И на счет либ от гула они иногда кривее чем кастомные.
Но да нужно стараться писать на них.
Пробелы или табы?
Блок с новой строки?
{
}
Или с той же? {
}
Пробел. С той же.
Пробелы. 1TBS
Да, люблю, когда меня пробелят.
Мне кажется что в onResume безопасней, так как он точно вызовется, а onStart только один раз кажись.
Иди мануалы листай советчик
http://d.android.com/intl/ru/reference/android/app/Activity.html#ActivityLifecycle
>>727377
Там заеб не с онстарт онрезюме а с онпауз онстоп, онстоп не всегда вызывается, потому чаще юзают связку онрезюме онпауз.
И чо? Схема не отменяет того, что onResume вызовется даже тогда, когда onStart не вызовется, вопрос только в том, чтоит ли обновлять данные если юзеру попапнулся диалог, или только в случае когда данные совсем пропали с глаз.
Вот тебе простейший пример (можешь повторить) http://pastebin.com/VYuuqgyH
Запускается приложение и через секунду показывает диалог, логи стоят на все нужные события.
Как видишь (пик 1) никаких логов о onPause/onResume
я не он, но onStop вроде может не вызваться когда системе срочняк нужна память, и она киляет процесс. так?
onStop всегда срабатывает, onDestroy не срабатывает, когда андроид убивает
Да может на Android < 3.0
Тем кто разрабатывают под 2.3, стоит задуматься о том что сейчас 2016.
аа, все, прочитал..
Ебать ты лох, что тут ещё сказать.
ну скачал я, поставил preview n - тормозит пиздец
>Какой еще диалог
Который активти, видал активти с темой диалога? Твое приложения еще видимо, но уже не в форграунде. После такой шляпы onStart не вызовется.
Хорош маняврировать, это уже не диалог "активти с темой диалога".
Пиздовать мвп для любого сервиса чтоль?
HAXM ставил?
Ну тогда хуй знает что там у тебя. Попробуй 23 а не N. У меня довольно быстро.
ViewPager/RecyclerView с доводчиком, еслия правильно понял что такое карусель.
Погуглил за тебя. Не благодари
http://www.oracle.com/technetwork/java/javase/8u92-relnotes-2949471.html
Как сделать такую подсказку?
А зачем нужно такое начальство? Я уже давно minSdkVersion ниже 16 не поддерживаю и не собираюсь.
Если начальство ебанутое, они и на 1.6 делать заставят и им будет поебать на эти графики.
Почему 14 не поддерживаешь?
есть пример с recyclerview?
http://www.jssor.com/demos/full-width-slider.slider
http://www.jssor.com/demos/carousel-slider.slider
они не ебанутые, я их понимаю. у меня не приложение, а либа тащемто
спасибо
Читать лекции, копить баллы. Потом платную подписку на месяц и за месяц решашь остальные 600 задач.
В первом фрагменте - показывается обратный отсчет, по достижению 0 сменяется фрагмент на другой, в котором отображается интерфейс с возможностью выбора, по таймауту этот фрагмент сменяется на последний, на котором показываются некоторые результаты и есть кнопка которой можно запустить все по новой.
Все фрагменты добавляются в процессе выполнения Activity.onCreate(), при этом два из них скрываются и вообще в любой момент видим только один фрагмент (.show(that).hide(this) в транзакции).
Соответственно переопределены Fragment.onHiddenChanged(). Для получения фрагмента используется fragmentManager.findFragmentByTag(SomeFragment.TAG).
Ещё в проекте есть класс, управляющий сетевыми подключениями и генерирующий события для интерфейса. Этот инстанцируется в одном из фрагментов. У каждого из них выставлено setRetainInstance(true), кстати.
Вопрос: насколько адекватно данное решение? Т/е если бы я приседал с 3 активити, то у меня бы была бы по кр мере анимация перехода, чего нет в подмене фрагментов. C другой стороны - там требуется обмениваться данными между фрагментами, которые не Parceable.
599204
Как говорится, что не Parselable, то Serializable.
Используй GridLayout, Люк
А я вот вторую неделю пишу. И уже люто, бешенно ненавижу эту блядскую поделку.
IDE — говно. Нет ни рефакторинга, ни навигации по коду, ни даже нормального поиска.
Дебаггер работает через жопу. Но даже если получится заставить его работать, то из-за кодогенерации стек вызова функций будет выглядеть как хуй пойми что, из-за чего найти место, где приложение упало, тот еще квест.
Отсутствует нормальная система сборки (даже блядского maven'a не завезли).
Ну и сам SDK: вы жаловались, что у андрюши кривой SDK? Это вы еще под xamarin не писали.
НЕНАВИЖУ
Выговорился.
На самом деле, есть и плюс: Если использовать MvvmLight и модули, то очень удобно определить для проекта общую кодовую база, которая будет работать для всех двух платформ. Тогда останется сделать ui специфичный для iOS и Android.
Есть тут еще кто-нибудь, кто писал под сабж? Поделитесь впечатлениями.
Ну так в вс2015 пиши, а не в мерзкой монодевелоппараше.
Недавно окончательно выпилил MvvmLight и заменил на свою реализацию MVVM.
Заебало что там все через WeakReference сделано и в iOS постоянно лябды удалялись сборщиком мусора.
При этом на Android тот же код нормально работал.
А Xamarin IDE говно (работаю на маке), когда Rider будет стабильный, будут в нем PCL ядро редактировать.
ну вот поддерживаю я 2.3, открываю аналитику с крешами и что я вижу на 2.3 : BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v7.widget.RecyclerView$SavedState
и много такого говна
я хочу в итоге вылить это на гитхаб, и что б любой пездюк мог собрать апп и достучаться до апи
если посмотреть какой то пример от гугла, то да, а hr таким не занимаются
Ну так залей этот json на гитхаб и бери по ссылке на raw файл, в чем твоя проблема?
не поверишь, так и начал делать)
Heroku, можно сервак прям с гитхаба собирать.
Што? О чем ты блять.
Хочется мне написать приложение с использованием eBay API, но при этом в вебе я вообще не разбираюсь. Ясно, что нужно отправлять реквесты с .xml файлами и получать .xml в ответ.
После долгих поисков в интернете мой выбор пал на следующую библиотеку: https://github.com/google/google-http-java-client
Так как я вообще слабо разбираюсь во всем этом, документации и примеров, которые эта библиотека предоставляет, мне оказалось недостаточно, с xml у них вообще нет примеров, да и не гуглятся они.
Так вот, аноны, может быть кто-нибудь использовал эту библиотеку, а именно ту частью, что про .xml, и сможет поделиться со мной своим опытом?
Или может кто-то здесь использовал eBay API (это было бы вообще идеально) или может предложить другие библиотеки (решения), подходящие для моих целей.
Буду очень признателен за любую помощь.
тогда retrofit + Jackson, он вроде умеет с xml работать
Оно того стоит?В свое время забросил эту дичь после 2423432 заданий с выводом строк.
handler
Мне эту муть переписать под АлармМенеджер или как вообще такое делается?
Еще тут подумал, всякие приложения не использующие гуглосервисы, но показывающие пуш нотификации, они наверное демона держат?
iOS сакс, уже Андроидеры зарабатывают не меньше гейосеров, а то и больше
> АлармМенеджер
С doze модом лучше от него отказываться, вангую ты там что-то с сервера тащишь постоянно. Смотри в сторону gcm network manager. А так закидываешь в аларм менеджер интент, этот интент в нужное время отправляется тебе в сервис. Сервис делаешь IntentService и готово.
> Еще тут подумал, всякие приложения не использующие гуглосервисы, но показывающие пуш нотификации, они наверное демона держат?
Либо так же, по кд ходят на сервер, либо в сервисе держат лонгпулл.
> gcm network manager
Выглядит хорошо, но я opt-out от гуглоапей. Сделал на аларме, да. Задачи не очень важные поэтому в setInexactRepeating ~15 минут.
А вообще практика сервисов демонов существует в этом мире? Мессенджеры и подобные аппликухи, которым прям важно получить и показать апдейты когда они случаются, они держат демонов с лонгпулами и т.п.? В менеджере показано, мол, куча программ держат свои сервисы запущенными (телеграм, ватсап, рсс читалка, квикпик блять). Не мой случай - просто интересно.
Спасибо тебе Apple и Sony за STAMINA что ты стопаешь свернутые программы.
Иначе было бы хреново как Android из-за таких "изобретателей велосипедов".
Ну ничего Dozen придет - порядок наведет.
С каждой версией он все агрессивней к фоновым процессам.
> изобретателей велосипедов
Ты меня имеешь ввиду? Приложение имеет очевидную отключаемую фоновую функцию. Каким образом аларм с setInexactRepeating велосипед?
В чем проблема?
Используй GCM пуши, GCM Network Manager, JobScheduler и не выебывайся.
В Android 9.0 все равно уберут AlarmManager.
мимо Сундар Пичаи
> GCM, GCM
Читай посты выше.
> JobScheduler
Посмотрел, написано >=5.0.
Где я выебывался? Я пришел спросить, а не утверждать как принято и лучше.
Андроид разрабатывается гуглом. Ты это спрашиваешь или запятую забыл?
Допустим у меня есть старая апликуха, в ней каждую минуту нужно отправлять запрос, даже если телефон заблокировался, я делал алармменеджер и вейкфулинтентсервис. В результате телефоны садятся быстрее чем ожидалось.
GCM Network Manager - чем мне поможет?
Суть в том что когда отправляю запрос то сервер мне постоянно возвращает ответ 403. В конфигах системы защиты разрешил делать POST вообще всем(permitAll()), и все равно 403.
Где я мог проебаться? Мб дело в заголовках и надо приписывать что-то в заголовок? csrf или еще что-то?
Попробуй достучаться до сервера каким-нибудь питоном.
А вообще, у тебя в пермишанах INTERNET есть?
Выводишь сырой HTTP запрос в спринге если это там возможно, сначала удачный потом нет, сравниваешь, подгоняешь.
>>731742
Это как? Ну добавь какое-нибудь поле типа type, если нужно эти данные как-то различать.
У него 100% есть, иначе в логах он бы сразу ворнинг увидел.
>>731760
Я хуево объяснил видимо. У меня есть несколько расписаний, пользователь выбирает какое-нибудь, и дальше работаем уже с ним. Как это организовать правильно?
Ведро хранит куки? Еще возможен вариант что он твои сертификаты на хую вертел.
Если структура одинаковая, то смысла наверное нету.
Просто добавь отдельное поле, в котором будешь записывать, к какому расписанию принадлежит запись.
Помоги, пожалуйста! Какие строчки менять? Как приложение узнает, что оно запущенно в эмуляторе?
>Как приложение узнает, что оно запущенно в эмуляторе?
Макаки не могут в технологию антиэмуляции и антиотладки.
Ты не в эмуляторе случайно?
linearLayout-ами вложенными, как еще
>что сложные/длинные вьюхи лучше делать хтмлем внутри одной вебвью
Ты понимаешь что ты несешь?
> сложные/длинные вьюхи лучше делать хтмлем внутри одной вебвью, нежели нативными виджетами
На 0 поделил у нас во дворе за такие вопросы убивают нахуй
По делу можно сказать? Я вполне понимаю, что звучит глупо. Почему настолько видимая глазу разница между дашчаном/овeрчаном?
Овeрчан в спам листе. Хм.
Я ебу что где быстрее/медленнее, но ты нес хуйню полную. Тебе в сорсы лезть смотреть кто что наговнякал?
Я сорсов дашчана не нашел. Но сомневаюсь, что там что-то такое странное, что делает стандартный нативный виджет хуже вебвью.
Ну если не знаешь зачем кидаться-то? Кто знает, пускай ответят. Вопрос вполне себе в теме треда.
Что знает? Почему список в вебвью работает быстрее чем в какой-то апликухе? Ты понимаешь что реализовать его можно по разному?
В одной вебвью в другой натив.
> Ты понимаешь что реализовать его можно по разному?
Я понимаю, что страничка может быть сверстана по разному, что повлияет на скорость работы, да. Но, судя по реакции выше, представление со скроллом (листинг постов) на нативе всегда покажет себя лучше.
Вопрос не был настолько общим. Я, например, допускаю что вебвью может быть предпочтительней и показать себя лучше в какой-то ситуации. Дашчан/овeрчан могут подпадать под этот случай.
Если кто ими пользовался и может сказать конкретнее, буду признателен.
Есть же увеличение используй его.
ClipDrawbles сунуть по центру и анимировать или толщину краев + радиус. Наверное.
Я бы делал собственной вьюхой, тут в ондроу только овал нарисовать.
И как же ? Адаптер вполне нормальный, увидел какой-то жуткий трешак на гите с дополнительно написанными 4 вроде классами на многамнога строк и обосрался
>вполне нормальный
Нормальные адаптеры не мешают данные в списке и как-то хранят важные особенности итемов (типа отмеченности)
ты мне щас хочешь сказать что в "нормальных адаптерах" нет переиспользования vh ?
Это локальное решение, но вот факт перемешивания итемов это вообще никак не изменяет
И чем же решение говно? Если состояние выбранности обрабатывается только в адаптере, то решение отличное. Если нет, то нужно выносить на уровень модели.
Да и ты вероятней всего хуйню какую то накодил, раз не работает.
конечно оно отметит выделенность, только вот исключительно позиции, а то, что на этой позиции милый ресайклер наплодил другую вьюху ему насрать :)
vh - viewHolder, повторюсь, ты считаешь, что у тебя под каждый итем отдельный viewholder и они не переиспользуются ?
Я знаю как работает RcyclerView, не втирай мне тут, если нормальный onBind и данные ты хранишь в линейно структуре (списке или массиве), то ничего у тебя не перемешается, скинь ссылку на адаптер блять.
Нашел последний косяк, на этот раз у себя. Теперь вроде все запахало. Нужно было отдельно еще и вложенные вьюхи очищать (в каждом из элементов списка было нн-ое количество вложенных вьюх)
То решение, которое я еще нашел, пардон, скинул свой
Весь остальной функционал уже реализовал, раз уже анимацией кнопок занимаешься?
Понятно. У меня пока так же.
Есть одно приложение, и его можно запустить двумя способами:
- обычным нажатием на иконку приложения - запустится активити со сплэшскрином, и из неё дальше основная активити.
- По нажатию на нотификацию, в ней описан интент запускающий активити, которая показывает алертдиалог, и в зависимости от действий - либо приложение закрывается, либо запускается основная активити.
Во втором случае, если запустилась основная активити, а потом я закрыл приложение нажатием на кнопку Back, и запускаю приложение снова - снова запускается активити с диалогом. Можно ли эту активити после совершения действий каких-либо в диалоге подменить в бэкстеке на активити со сплэшскрином?
Прошу прощения за неровный почерк.
Я не ебу, я вообще другой анон.
Ну смотри, после того, как ты нажал на уведомление, запустилась активити с диалогом, ты там что-то сделал, запустилась основная активити. После нажатия кнопки бэк по идее должна запускаться активити с диалогом(а точнее, делать onResume, если я не ошибаюсья тупой джун). Но если ты завершаешь приложение, переписав значение кнопки бэк, то при запуске приложения через иконку получаться должен случай 1, никак не активити с диалогом. Я вообще не понял, что именно тебе надо, потому что ты коряво написал или я хочу спать.
сделай белый кружочек поверх чёрного, и на белый view используй ScaleAnimation
Вечный нубы (забаненны в гугле) с вопросами "где в API ..." / "как обойти костыли в API".
Такое ощущение что кроме верстки в Android ничего нет.
Никто не задумывался на такие темы:
0) Борьба со сложностью Android программ ("правильная" архитектура)
1) Применение DSL в Android
2) Функционально программирование и immutable данные
3) Сравнение и преймущества MVVM / MVP / MVC
4) Реактивный расширения vs Коррутины в C# Kotlin
5) Кроссплатформенное программирование
Камрады, а как вы делаете переход из нотификаций в приложение? Вот допустим у меня етсь токен с ограниченным временем жизни, поэтому просто открыть активити с нужным контентом я не могу, значит нужно проверить при нажатии на нотификацию залогинен ди юзер и в таком случае идти дальше. Это получается создается активити которая разруливает кому куда идти верно? А ведь еще нужно правильный бекстек активитей создать.
Оп на связи.
Ну а что поделать то, я тут уже редко засиживаюсь, постоянно какую-то хуйню спрашивают. И ладно, хоть не вопросы с чего начать.
Но тут есть или бывают пара человек которые что-то да выдадут интересного.
>0) Борьба со сложностью Android программ ("правильная" архитектура)
Уже тошнит от этого дерьма на любой конфе или ресурсе тысяча велосипедов, в следующей программе буду юзать Moxy, или же руками напишу такой же велосипед. Посмотрим будут ли профиты какие, или опять куча костылей на любом шаге в сторону.
>1) Применение DSL в Android
Честно говоря первый раз вижу чтоб тема затрагивалась.
>2) Функционально программирование
RX тебе в руки
>immutable данные
Тоже не стыкался.
>3) Сравнение и преймущества MVVM / MVP / MVC
Читай свой первый вопрос. MVC никто не юзает. Есть еще VIPER.
>4) Реактивный расширения vs Коррутины в C# Kotlin
Ну это к андроиду очень относится да.
>5) Кроссплатформенное программирование
А хули там обсуждать? Тут иногда вкатываются люди с ксамарина, но толку, если большая половина на нейтиве?
> Сравнение и преймущества MVVM / MVP / MVC
Джуниорские паттерны оставь джуниорам из джаватреда, это говно ещё скучнее, чем вопросы про стек активитей.
> Реактивный расширения vs Коррутины в C# Kotlin
Поебать на новомодное хипстерское говно.
> Кроссплатформенное программирование
Не нужно.
>Джуниорские паттерны оставь джуниорам из джаватреда, это говно ещё скучнее, чем вопросы про стек активитей.
Из всех заданных ним вопросов этот самый адекватный и важный.
Насмотришься бывает докладов с JPoint от всяких умных дядек про Clojure или архитектуру реактивных программ.
Потом приходишь в свой тред (я ведь Android девелопер), а здесь никого опытнее ОПа нуфани с одним годом опыта.
Даже совета ни у кого спросить, тк всех интересуют лишь "приземленные вещи" :\
Кстати, спасибо тебе ОПушка за ответы, хоть они и не нужны были я это в принципе знаю.
Я их написал просто для примера, того что здесь не обсуждают.
Сейчас кстати задумался о применимости DDD к разработки сложных приложений под мобилки.
Но пока не уверен что это даст какие-нибудь профиты (надо исследовать тему).
P.S.
> Честно говоря первый раз вижу чтоб тема затрагивалась.
Вот видишь как все печально, а это ведьосновной инструмент борьбы со сложность ПО.
Ты можешь не в Java конечно сделать свой выразительный синтаксис билдинга MVVM (без кодогенерации)
или запросов к абстрактно базе.
> Ну это к андроиду очень относится да.
Относится уже сейчас если ты C# Xamarin девелопер.
Будет скоро относится ко всем, когда Kotlin заимплементят async/await (черновая спецификация уже есть на github).
>а здесь никого опытнее ОПа нуфани с одним годом опыта.
Ошибаешься, есть несколько человек кто на голову и не одну выше, правда заходят довольно редко.
>Вот видишь как все печально, а это ведь основной инструмент борьбы со сложность ПО.
Ну если можно разделить знания в разработке под ведро на ступени, то я сейчас как раз пробил скорлупу сдк слишком толстая оказалась, даже сейчас иногда элементарные действия могут занимать овердохуя времени и пытаюсь теперь научится архитектуре, тестам и всему что с этим связано. Пока все остальное типа DDD лишь слова услышанные от дядек.
А тебе советую топать во всякие чатики в скайпах и тд, там больше шарящих на самом деле. Да и обсуждения зачатую интереснее.
>Ты можешь не в Java конечно сделать свой выразительный синтаксис билдинга MVVM (без кодогенерации)
МВВМ обсирают за счет того что если нужно что-то впаять типа логики начинаются костыли. МВП мне больше нравится если что, ну будет немного больше кода, да и хуй с ним.
>Относится уже сейчас если ты C# Xamarin девелопер.
Ну с таким же успехом можешь включать в разговор джаваскрипт с их фичами и тд.
>Котлин
Мне лично пока рано, есть много вещей пополезнее типа архитектуры и тд, ретролямбды под rx пока хватает, вот если уволюсь/уволят то сделаю себе месяц перерыва поучу.
> Даже совета ни у кого спросить, тк всех интересуют лишь "приземленные вещи" :\
Меня, с одной стороны, приземлённые вещи не интересуют, с другой, то, что ты перечислил, я вообще не знаю и даже не интересуюсь.
> МВВМ обсирают за счет того что если нужно что-то впаять типа логики начинаются костыли. МВП мне больше нравится
Собственно, никто не мешает в проекте на MVP еще и MVVP. Не скажу, что мне нравится такой вариант, но он имеет право на существование.
>>733190
А чего ты ожидал, придя на двач? Хочешь нормальной дискуссии — иди туда, где тусуются профессионалы.
Та на пастебин закинь и сюда скинь. И вправду ведь интересно.
Вопрос - как мне его привести к стандартному интерфейсу ExpandableList как на пикче, например?
Пока выходит только всякое говно.
Есть текстовое поле, класс EditText, из него получаю значение, создаю в конструкторе объект, и отправляют на REST сервер как restTemplate.postForObject(url, objectForServer, String.class);
Проблема в том что в базу данных попадают знаки вопроса ???? вместо русских букв. С латинскими буквами все нормально, через веб-форму русский текст отправляется и выводится нормально.
У кого-то наблюдалась такая проблема с формой?
base64 отменили?
UTF-8 используй
А нахуя вот лично мне это нужно? Какие очевидные профиты? Если я не могу нормально анимации сделать, зачем мне лезть, например, в кросс платформу? Зачем мне дохуя знать про архитектуры, вот я MVP более-менее осознал и пользуюсь, зачем мне ещё что-то?
Желательно на русском.
ОП, прекращай тред бампать , ну не могут нюфаги быть настолько ТУПЫМИ что бы шапку даже не прочитать.
В списке книг с шапки нет задач после каждой главы, Эккель на русском обрывается посредине.
Зачем писать, если сказать нечего?
А никто тебя и не просит заходить.
Полистал, крайне тухло.
переведите на русский, я не понимаю
Инфа 100%.
И сразу иди на хуй.
Учи haskell, за ним будущее android разработки.
1) Сделать для каждого жанра свой фрагмент (типа, ComedyFilmFragment, AdventureFilmFragment etc), и в зависимости от типа фильма инстанциировать нужный фрагмент внутри activity. Плюсы: четкое разделение, у каждого представления будет свой класс (фрагмент) и вид (разметка в xml). Минусы: код будет дублироваться (всякие жмаканья на кнопки и прочее), не очень красивый каскад из if-else внутри Acivity#onCreate()
2) Сделать всё это внутри одного фрагмента, со сложной разметкой, скрывая часть вьюшек во время инициализации фрагмента, настраивая их состояние. Минусы: сложная разметка, нагромождение if-else каскадов по всему коду фрагмента.
3) Сделать BaseFragment, с неким общим функционалом. Отдельные фрагменты будут наследоваться от него, использовать различные xml разметки. Кажется, что этот подход сочетает в себе минусы первых двух, а вот насчет плюсов не уверен.
Может, есть какие-то другие пути? Посоветуйте что-нибудь, аноны, или покритикуйте ход моих мыслей.
3, который убирает дублирование из 1 метода.
Первое + вынеси общий код в отдельные классы и скомпозируй (НЕ через наследование).
Как вариант можно вычленить Presenter (MVP), а в фрагментах у тебя останется только код отвечающий за разницу в UI.
Можно еще сделать кастомные View и туда засунуть какую-то UI логику что бы не засорять фрагменты.
При этом их можно будет переиспользовать для разных типов окно фильмов.
В итоге окажется что в отдельных фрагментах/верстки у тебя содержится только эта разница в представление.
Так же как и любой другой макос процесс, нужно просто съебать в /s/oft доску и там его задавать
Где можно взять готовый бэк-энд? если я правильно выражаюсь Что бы там можно было зарегать юзера, хранить историю заказов, вот это все, что там магазины хранят в бд. Parse.com подойдет для этого? Хотя слышал, что его скоро закрывать собираются. Может что посоветуете.
> учу уже некоторое время андроид
> сам написать... приложение для какого-нибудь магазина
Обосрешся 100%.
Даже если доведешь до конца, будут спагетти с макарошками,
которое не то что нельзя показать на собеседование, лучше сразу сжечь.
> чем Domain Drive Design от клиент-серверки отличается
Ты что несешь? При чем тут вообще сервер-клиент?
попробуй в манифесте прописать android:largeHeap="true"
3, при чём в BaseFragment методы, делающие разные действия должны быть абстрактными
Так я уже 2-е пишу, к первому даже самоопределение локации прикрутил.
Погоди, ты хочешь сказать, что вот этой хуиты, которая пишется за неделю, достаточно, что бы уже идти устраиваться на джуна?
Собираюсь вкатится, удобна ли Intellij для этих целей или нет?
Лучше сразу Android Studio, что, по сути, и есть Intellij, просто заточенная
Приложение связывается с сервером, берет оттуда данные и рассылает учебный материал всему классу. В приложении есть общий чат, учитель в онлайне видит что творят ученики.
Ну я же не говорил, что написал только погодное приложение
А ты попробуй сходить на какое-нибудь собеседование, удивишься скорее всего.
От джунов многого и не ждут. Скорее всего, тебя вообще по яве будут гонять, в основном.
Удобна, но ее раньше немного настраивать надо было. У меня сейчас идея и студия.
Идея крякнута и не обновленная, студия свежая, иногда из беты, советую делать так же.
Конфа в любом мессенджере.
> Идея крякнута и не обновленная
Про Comunity слышал? Там есть все для Android и даже Котлин.
Сап, анон. Нид хелп.
Полгода изучаю жабу (и программирование вообще), по книгам и урокам, недавно возникла потребность написать простенький тренажер, дающий задачи и проверяющий результат. Консольную версию написал за вечер.
Ведро решил изучать по ходу пьесы. После установки Студии, хотел чисто для ознакомление проэмулировать какой-нибуть хэлловорд, однако в AVD абсолютно все варианты, включая мною создаваемые приводят к
Unfortunately, your computer does not support hardware accelerated virtualization.
Here are some of your options:
1) Use a physical device for testing
2) Develop on a Windows/OSX computer with an Intel processor that supports VT-x and NX
3) Develop on a Linux computer that supports VT-x or SVM
4) Use an Android Virtual Device based on an ARM system image
(This is 10x slower than hardware accelerated virtualization)
Собственно варианты устройств с armeabi тоже не поддерживаються. Значит ли это что проэмулировать никак не получится?
Для меня это сириус бизнес ибо привык все изучать, проверяя результат.
Мое железо пикрелейтед.
Нешто мой полугодовалый ноут такое непроходимое говно?
Триал тривиально делается бесконечным, нет смысла ебаться со старыми версиями плагинов.
> сколько примерно будет стоить разработка?
С какой целью интересуешься?
Если хочешь заказать, то находи исполнителя и обговаривай с ним подробности, он назовёт тебе цену.
Попробуй genymotion. Может запустится.
Но работать всё равно будет слишком медленно, о чем тебя AVD и предупреждает. И даже предлагает разные варианты, что делать.
Стихи о весне.
Спасибо, буду пробовать.
Алсо, да варианты есть, но на планш кидать апк с моими скиллами придеться сильно часто. Четвертый вариант мне не помогает, сообщение аналогичное, а другой комп до дембеля мне не светит.
Но проблема в том, что я не умею в дизайн от слова совсем.
Анон, если заказывал, какую биржу юзал, какие подводные и вообще посоветую по этой теме чего-нибудь.
Что-то посмотрел их ролики и охуел. Там же можно даже без особого знания кодинга сделать приложение сразу под все платформы. Это реально так просто? В чем подвох?
Зачем тебе вообще это нужно школьный синдром максималиста?
Все что надо для Android есть Community и плагины там все новые и обновляется без проблем.
Я ее крякнул когда комьюнити не было, да и пользуюсь раз в пол года. Нахуй мне переустанавливать?
Ну ты попробуй, расскажешь как оно.
>Там же можно даже без особого знания кодинга сделать приложение сразу под все платформы.
Чую серебряную пулю. Но их не бывает.
Хуй знает, если честно, выглядит как говно и кажется мне что там нихуя мало мальски сложного написать невозможно. Но пробуй, расскажешь как оно.
JavaScript
Нет
> Алсо, да варианты есть, но на планш кидать апк
Зачем? Shift + F10 и все уже запущено на твоём планшета.
(Да, это всё касается андроида и хром имею ввиду мобильный, не надо меня в js тред)
будет тормозить - оптимизируешь. В пезду преждевременную оптимизацию
волноваться начинай, когда количество вложенных лэйаутов перевалит за десяток.
То, что ты сделал - совершенно нормальная практика.
Напиши какой-нибудь Hello World с одной кнопкой и попробуй запустить на своём планшете. Увидишь, как оно всё работает.
запускать на физическом устройстве гораздо удобнее, чем в эмуляторе
Сажа приклеилась.
ну удачи, хули.
Аноны, есть одна активность(главная) она содержит два ListView, один с ссылками на активности категорий, а второй с списком любимых напитков, сами напитки считываются с бд. Пользователь переходит к активности категорий, выбирает напиток, ставит галочку любимый(записывается информация в бд), потом по нажатию кнопки назад - возвращается к главной активности. Считывание любимых напитков в главной активности происходит с помощью AsyncTask. Как сделать так чтоб список обновлялся по возвращению, в активность? Пробовал создать новый обьект AsyncTask, и запустить, но выбивает исключение. Помогите пожалуйста.
>>737747
> Пробовал создать новый обьект AsyncTask, и запустить, но выбивает исключение
Какое, когда?
В onResume нормально вызывать, но можно еще исхитриться и вызывать обновление бд только в onActivityResult при resultCode == RESULT_OK
Еще до закрытия RoboVM, народ форкнул сорцы и сделал свою платформу BugVM
http://bugvm.com/
Так же Intel недавно выпустил второй апдейт MOE - наконец появилась поддержка чистой IDEA.
В принципе теперь под iOS можно разрабатывать и на Windows, а тестить в облачном эмуляторе.
И все бы хорошо, но блин как же трудно использовать, да еще и бинарники получаются жирнее чем на Xamarin.
аппселераторе имел ввиду
>Еще до закрытия RoboVM, народ форкнул сорцы и сделал свою платформу BugVM
Нет спасибо, робовм был без комьюнити, а этот багвм походу вообще пиздец. Да и название что-то не мотивирует.
>Так же Intel недавно выпустил второй апдейт MOE
Потому я и сказал что еще год не буду даже смотреть в эту сторону. Как доделают, думаю будет годно, интел все же не хуи моржовые, но пока они 100% выкатили говноверсию.
Я тебе больше скажу: чтобы заниматься разработкой под Android, нужно покупать много физических устройств.
> Хочу чтобы можно было применять свой яваскрипт к любым страницам в моём вебвью.
http://stackoverflow.com/questions/4325639/android-calling-javascript-functions-in-webview
И в чем твоя проблема?
Как мне к джаве с либгэдэиксом прикрутить floatactionbutton?
снова писать execute(), для вызова? Если делать так, то вылазит исключение, если же пробовать создавать новый обьект и вызывать - то все равно исключение. Все в onResume.
> если же пробовать создавать новый обьект и вызывать - то все равно исключение
Сразу пиши какое, тут нет экстрасенсов.
FATAL EXCEPTION: AsyncTask #2
java.lang.RuntimeException: An error occured while executing doInBackground()
Скорее всего у меня просто корявый код.
Ну бля, у тебя в таске ошибка. Сиди отлаживай дебаггером.
ты ебанулся?
Нет. Мешуры и лейаты один раз до следующего requestLayout, который может настать никогда. Дровы во время invalidate, нажатия, смены состояния, скролла. Т.е. тоже не постоянно.
Вроде бы индикаторы на каком из этих 3-х этапов прорисовки вью плохая(красный)/нормальная(желтый)/хорошая(зеленый) производительность.
Лучше бы в цифрах.
Вопрос вот в чем, когда я нажимаю на кнопку, сообщение не сразу улетает, а открывается стандартный отправщик смс, в который подставляется текст и номер и уже только после нажатия "Отправить" в стандартном мессенжере, сообщение улетит. Есть ли способы обойти стандартный мессенджер и сделать так, чтобы смс улетало мгновенно из приложения?
Нафиг задавать вопросы, которые так легко гуглятся:
http://www.codeproject.com/Articles/1044639/Android-SMS-MMS-API-Sending-SMS-MMS-Receiving-SMS
В следующий раз тебе будет ссылка на http://lmgtfy.com/
Я нюфаг, изучаю с#.
Хочу потом вкатиться в андроид.
Какого уровня я должен достичь, прежде чем начинать вкатываться в него?
Эльфа 80 уровня
Возможно, тебе в BOIS'е нужно включить виртуализацию.
Например:
Enable hardware virtualization in BIOS
http://h30434.www3.hp.com/t5/Desktop-Hardware-and-Upgrade-Questions/Enable-hardware-virtualization-in-BIOS/td-p/1152355
Конкретно его никак, ведь это просто Java прослойка к нативному API.
Ищи стороннюю библиотеку.
>>739131
На самом деле это спорный вопрос, если НЕ нагружать GC, то современные JVM сравнимы по скорости с нативом
(на часто встречающихся задачах).
А если вдруг потребуется супер-быстро перемножать матрицы, то у нас есть C++
Любой GUI на Java тормозит. Наглядно видно при использовании одного и того же приложения на iOS и Android.
Ты это владельцам iPhone 4S расскажи у меня был такой.
Да и про UI это не актуально, он сейчас везде рисуется с помощью аппаратного ускорения (через OpenGL).
В iOS гуй не останавливается, переставая отвечать на действия пользователя - потому что там нет GC, вместо него используется reference counting.
Но в Go тоже есть GC (мы же его все еще обсуждаем)
Кстати в iOS анимации плавные из-за отрисовка идет в отельном потоке (а не GC).
Там даже если кто-то залочит (чтением с диска) главный поток, то анимации все равно продолжатся.
Только контролы перестанут отрабатывать нажатия (кнопки, меню и тд).
Есть в андроиде аналоги? Слишком много болер кода приходится писать про жонглирование фрагментами и переименовывание тайтла в тулбаре. Хуета получается, не красиво.
Выносишь установку Toolbar в какой-нибудь базовый класс для активити (или вообще работаешь по старинке с ActionBar).
Насчет UITabBarController, если хочешь что бы все было в разметки, то можно ОДИН РАЗ написать кастомный контрол,
который внутри создаст FragmentTabHost и все настроит.
Дальше ты будешь его переиспользовать, а кастомизировать в XML верстачки через атрибуты.
Пожалуйста, у тебя все как в iOS:
1) Вместо self.navigationItem => this.supportActionBar
2) Вместо UITabBarController => твой кастомный контрол
3) Вместо Swift => Kotlin
Все элегантно и удивительно чисто.
Ну я думаю скорее всего с ним какая-то хуйня. Кстати, возможно ты проебался с пермишенами и он по умному их проверил. Ты там не чиатешь файлы случайно?
читаю, на них вылетает, но в сплеш скрине без параметров все загружается нормально. Попробую доделать эти новые пермишены (уже не новые)
Что вылетает? Где стектрейс? Без него тебя надо сразу гнать ссаными тряпками отсюда.
щас поставил таргет сдк 22, файлы читает нормально, но так же параметр не отправляется, ебаный ретрофит
3) Найти готовый контрол на gihub
https://github.com/ApmeM/android-flowlayout
Вроде такой тип называется FlowLayout
>>739565
Спасибо.
> (там на самом деле все просто)
http://developer.android.com/reference/android/view/ViewGroup.html
Довольно жирно.
да
Раньше заебись деньги текли до Jellybean примерно, щас не текут.
каких знаний по Android SDK будет достаточно чтобы был смысл кидать им резюме? почитал шапку, все таланты которые требуются от джавы я приобрел. заранее благодарю
Нахуй ты ему вообще отвечаешь...
Пора бы уже добавить в шапку
> Сколько лет вы не можете найти работу никому не интересно.
требуются мидлы и джуны нужно понимать, как платить много не хотим, но и учить, тоже, не горим.
а не горим. потомучто сами нихуя не знаем. вот и делай выводы какой нужен уровень. напиздить четко на собеседовании, потом хоть трава не расти.
Семен не палится.
Так вот, я создал 3 модуля - кор, десктоп, андроид, подключил там в зависимости(прожект структур-моудули) эти либы либгдкса(джар файлы), а папке андроид в libs скинул .so библиотеки в папки armeabi-v7 x86 и ещё что-то, ну вы поняли. Так вот, всё идеально работало, всё собиралось и на андроид и десктоп.
И вот я решил добавить ещё одну библиотеку - пик 1. Это джар файл, внутри там .java файлы и .class файлы, даже примеры, ещё и мета инф есть, добавил этот джар файл в зависимости для кор модуля и всё нормально работало на десктопе.
И вот решил затестить на андроиде - апк файл(который я через артифактс настроил) собрался. Когда подключаю телефон и сразу на нём через иде запускаю - оно всё собирается, устанавливается на телефон, но пишет ошибку сразу ошибку(пик 2).
Что за хуйня? Я гуглил и везде написано все библиотеки положить в android/libs(у меня они даже не в папке андроид, в android/libs только .so файлы от либгдкса). Так вот, .so файлов от этой библиотеки нет, только джар, и что же делать?
Пик 3 - зависимости андроида. Пик 4 - зависимости кора.
Я конечно могу просто скопировать все нужные файлы из этой библиотеки в свой кор модуль и всё будет работать, но надо же разобраться в чём проблема на всякий случай.
Задали написать сервис, который будет в консоль выводить местоположение телефона. Так как я тупой, то решил ручками переписать http://stackoverflow.com/questions/28535703/best-way-to-get-user-gps-location-in-background-in-android
1) Покажи импорты этого класса
2) Покажи исходники своего LocationListener
У тебя тут какая-то дичь, не понимаю как это компилируется даже (я в курсе что это Kotlin)
Если ты просто конвертнул ответ со SOF, то у тебя должен быть такой массив листнеров.
Берешь студию 2015, юзаешь mvvmcross вместо лайта и радуешься жизни. зависимость есть, брат жив
Глянь импорт, ты используешь
com.google.android.gms.location.LocationListener
, a LocationManager работает только с
android.location.LocationListener.
На SOF чувак вообще создал свой класс LocationListener (унаследовав его от android.location.LocationListener)
>>740533
Потому, что нужно использовать нормальную систему сборки (т.е. Gradle, раз речь про Android), а не настраивать всё кривыми руками.
нужно найти ошибку и исправить её
Ну так у меня всё нормально настроено, ничего лишнего и вот пригодилась эта библиотека, а как её правильно добавить я не знаю, так как нет .so файла.
> Берешь студию 2015
Только вот где я её под Mac возьму? (корпоративный стандарт такой)
Жду, когда JetBrains Rider в бету выложат, хотя и непонятно, насколько там Xamarin поддерживаться будет.
> mvvmcross
Расскажешь, в чем плюсы по сравнению с MvvmLight?
> радуешься жизни
С ксамарином этого точно не будет.. Сейчас уже лучше идёт, но всё равно — ощущение, как будто после python'a пишешь на visual basic'е, причем исключительно в блокноте.
Накати винду дуалбутом?
> Ну а что такого гредл делает чего нельзя вручную сделать?
> Ну а что такого IDE делает чего нельзя сделать в блокноте?
> Ну а что такого git делает чего нельзя сделать, копируя исходники в разные папки?
> Ну а что такого java делает чего нельзя на паскале сделать?
А действительно, чего?
2chlo^5averANUSmaip-"lPUNCTUM>orru
> mail.ru
Вангую, будет проект a-la сделать клон твитора, без нормального тз, дизайна и с кучей доработок в любое время дня и ночи. Плавали - знаем.
нет
https://docs.google.com/presentation/d/1rxHoxvBRHdIWS2N7pLaVWkdzVKnMn316MkYT9Q8BGuA/edit#slide=id.p
Ага
Все, разобрался, оказывается нужно было дописать android.location. к LocationListener в наследовании
Кстати (спс что напомнил), вот лайфхак по поводу тестов с mocikto:
PowerMock - https://github.com/jayway/powermock
Небольшое расширение для mockito с которым вы сможете мокать любой Kotlin класс.
> подписи клиента
А ручками сделать никак?
P.S. >>741040
Кстати, Кекс :) то прикольный чувак:
1) популяризирует экстремальное программирование"
2) борется с энтерпрайзом в java разработке
3) делает прикольные доклады ("как нам спасти java" и "стиль (одежды) программиста" и тп)
Вообще я думал он из такой "школы" что будет до конца жизни дрочить жабку и никогда даже не посмотрит на другие языки.
Семён не палится
Аноны, щас прочитал ряд статей на хабре про rx, посмотрел видео от яндекса, как же это охуенно, почему все это не юзают, есть какие то подводные камни?
просто не знаю как называется это состояние, иначе бы у гугла спросил
Много кто использует на самом деле и даже Google
(только они сделали свой Rx "с блекджеком ...". в пред. треде была ссылка на гитхаб).
Не совсем понятно его будущие в Android после появления там CompletableFuture "из коробки".
Юзаю RxJava в Kotlin, но планирую в будущем перекатится на async/await
Накидайте простых приложений на kotlin для обучения, я не знаю ни android, ни kotlin. Возможно через котлин вкатится или все же через джаву будет проще?
>Лучше начать с Haskell, так проще всего будет.
Я не понимаю сарказм это или нет, но я знаю haskell.
>знаю haskell
И клингонский поди знаешь?
Это был супер сарказм. Если ты хочешь вкатывать в область очень тесно связанную с джавой, нет смысла вкатываться не на джаве, а на обертке для нее. Это все можно потом.
Я знаю c# и могу разобраться в работе программы на джаве, но в отношении ведра в коде на мой взгляд творится лютый пиздец, даже в топовых проектах. Потому хотел перескачить и начать сразу с котлина, но похоже не осилю.
Kotlin Koans - набор тестов для обучения
https://kotlinlang.org/docs/tutorials/koans.html (также есть плагин для Idea)
Вот сравнение одного и того кода для Android на 4 языках (да АНОН сейчас есть выбор)
https://github.com/SidneyXu/AndroidDemoIn4Languages
Вот видосики на youtube (под попкорн)
https://www.youtube.com/playlist?list=PLVe-2wcL84b8pj7VOoa-6L9Q0sDjibdoF
Ну спасибо, попробую вкатится к вам.
>(да АНОН сейчас есть выбор)
>Groovy
>Scala
Нету выбора, то что джавамашина жрет любой из них не значит что этот язык нужно использовать.
Как и у тебя лол.
>>741729
Сами вы сарказм. За Хаскеллем будущее андроид-разработки! https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs
> творится лютый пиздец, даже в топовых проектах. Потому хотел перескачить и начать сразу с котлина
То есть, если заменить java на kotlin, то сразу же всё станет замечательным, код красивым, а обои нескучными?
Последнее время мне кажется будущие всего Android вообще за
C L O J U R E
такой-то он ахуенный.
С другой стороны, конкретно в мобилках, не особо нужны его плюшки (STM и всеобъемлющая иммутабельность)
И как это поможет проекту, код которого — лютый пиздец? Был лютый пиздец на Джаве, станет лютый пиздец на Котлине. Охуеть победа.
> конкретно в мобилках, не особо нужны его плюшки
> иммутабельность
Какая связь? Почему всеобъемлющая иммутабельность нужна для одной платформы, но "не особо нужна на мобилках"?
Потому что иммутабильность вызывает повышенную работу GC (что для мобилок плохо).
(Хотя в Cloujure это конечно оптимизированно, но у нас все же не HotSpot, а ART/Dalvik заточенные под мобильные нужды).
Вообще ее плюс для простоты СИЛЬНО-многопоточного кода (как и STM), что опять таки на Android не нужно.
Это все для серверов замечательно, а в Android с данными работают обычно в 2-х потоках (главом и фоновом).
Хотя фиг его знает, на JS то его портировали зачем-то. Чем Android хуже?
Хуй знает, не вижу задач.
> view - это каждая активити
Не обязательно. Внутри одной activity может быть несколько V (не путать с классом android.view.View).
> model - данные для каждой активити
Тоже не обязательно. Три activity могут работать с одной и той же M.
> т.е. допустим у нас 3 активити, значит и 3 модели
Зависит от приложения.
> А что с presenter'ами? их тоже должно быть 3?
Как правило, да.
> зачем есть свои интерфейсы, если они все будут выполнять разную работу с разными методами?
Использование интерфейсов позволяет абстрагироваться от реализации. Стандартный пример: работа с БД. Скажем, если раньше ты использовал SQLite, а теперь нужно перейти на какой-нибудь Realm (чего делать, как правило, не стоит), то тебе нужно будет изменять код во многих местах. Если же определить некий интерфейс для работы с базой данных и использовать его, то поменять нужно будет лишь одну строку. Грубо говоря, раньше было:
DatabaseProvider db = new MySqliteDatabaseProvider();
, а теперь будет:
DatabaseProvider db = new MyRealmDatabaseProvider();
Оба класса реализуют интерфейс DatabaseProvider. Во всех местах приложения мы работаем не с конкретной реализацией, а с нашим интерфейсом: db.saveSomethingToDb(...).
Независимость от реализации — это общий принцип проектирования, напрямую с MVP он не связан.
О спасибо, анон, а как тогда лучше распалогать интерфейс и его имплементацию? Делать отдельную папку, например, .../models/somemodel/ISomeModel и тут же SomeModelImpl?
Разрабатывал. Каждый месяц 15к с рекламы до сих пор идет, хотя забил на них (точнее это 1 прога) 2-3 года назад.
Приложение какое-то уникальное или чужое скопировал? Почему дропнул и не делаешь ещё?
На тот момент аналогов было много, но они все были лютым говном. Забросил, потому что неинтересно совсем. Я думаю, потому многие и забрасывали, что не интересно. Это был мой первый проект под ведро, так что поначалу я думал, что это норм. Ну и в те времена легко было подняться в гплее, сейчас уже не то.
https://lostechies.com/jimmybogard/2008/08/21/services-in-domain-driven-design/
В твоем случае я бы сказал что:
сервис - это экзкмпляр твоего класс API (ретрофита) или обертка над ним (c методами типа get(int id):Observable<Item> )
модель (бизнес логики) - объекты которые имеют тип T из твоих Observable<T>. Они же могут быть DTO.
Что из себя будет представлять Presenter?
Кучу коллбеков от кнопок и прочих элементов из View?
ну по идеи вроде как да, если не юзать rxbinding'и
Да, на правую картинку не обращайте внимания, лень обрезать было
RxView.clicks(btn)
.concatMap(aVoid -> Observable.just("a", "-", "b"))
.reduce((s1, s2) -> return s2 + s1)
.subscribe(s -> Log.d("Log", s));
В логи ничего не выводится, reduce работает правильно, но на нем все останавливается, в чем дело?
> reduce( ) — apply a function to each emitted item, sequentially, and emit only the final accumulated value
Я не пробовал, ну думаю клики не вызывают onComplete, от чего reduce застревает.
Здравствуйте друзья. Закатился в тред за советом и наставлениями.
Хочу для 3 летнего сына собрать простенькую игру на андроид планшет.
Возник вопрос: Есть ли под это дело графические программы по сборке софта? Ну типа кнопочки и им присвоить действия и чтобы все это было в три клика,а не в написание кода руками для присвоения той или иной функции.
бля, точно, спасибо
1) Создал я из консольки новый проект; (-l cpp)
2) Откомпилил, запутсил на мобилке - все ОК;
3) Открываю proj.android-studio собственно студией;
4) Вношу изменения в AppActivity (просто логирование с помощью Timber);
5) Ожидание - логи с текгом AppActivity, на деле - нихуя;
6) Окей может надо еще раз cocos compile -p android --android-studio?
7) Не помогло, решил проверить и вставил Log.d(TAG, "Cocos sucks!"); в onCreate Cocos2dxActivity - после перекомпиляции все сработало;
Короче как это все починить? Алсо может знаете поему 3.11 раза в полтора меньше 3.10, какой лучше использовать?
Я бы сам делал, благо рисовать в onDraw не так уж и много. Да и из жестов то только скролл, а значит можно обойтись обычными MotionEvent Down, Move, Up.
Единственное, сделал бы обычной текствьюхой 12:00PM
> прямоугольник двигается, но как шкалу привинтить не знаю.
На сколько я себе представляю эту анимацию, двигаться должна только шкала, прямоугольник должен оставаться на месте. Сначала сделай просто скролл значений слева, чтобы он был зацикленным и занимал всю высоту экрана. Благо количество элементов в нем константно. Если ты это сделаешь, получить элемент по центру не составит проблем, его то и закинешь в текствьюху по центру.
Дальше уже нужно будет думать с анимациями и добавлением промежуточного элемента отвечающего за половину часа у центра.
Утечек как таковых нет, а дело, как я понял, в том что бэкстэк держит strong referenc-ы на фрагменты вплоть до смерти всего всего. Как это лечить ?
Если никак - то, помнится, кто-то тут упоминал flow как альтернативу. Но я никак не могу найти в гугле никаких упоминаний об этой либе. Если можно - скиньте линк и описание + ваше мнение в пару строк.
Заранее спасибо
Прочитал про flow, заинтриговало, не могли бы вы подкинуть русскоязычных ( в идеале ), или если среди них нету годных, то англоязычных гайдов объясняющих за него ?
Никогда не понимал смысл делать экраны фрагментами. Ну ладно, когда у нас дровер есть, то его экраны приходится пихать в фрагмент. Но при переходе на уровень глубже есть же уже смысл делать активностями.
в том то и дело что drawer есть и мне пизды дадут если я его заменю на что-то. Самое веселье то в том, что сейчас что-то типа последнего момента передумать насчет архитектуры, потому что дальше объем начнет зашкаливать и тупо не успею, в лучшем случае рефакторинг после релиза полный буду делать тогда уже. Но блять, релиза с бэкстэком в 60+мб нихуя не будет
Можешь посмотреть код, покритиковать, что-ли ? Так как это фактически мой второй проект на аутсорсе, а первый был дичайшим трешем и провалом, но хоть до конца довести получилось, на том спасибо. Вроде я постарался что-то вменяемое изобразить, но все-равно пиздец
А ты все фрагменты add'ом добавляешь? Поменяй на replace, где допустимо.
А ты стек как замерил? Ты уверен, что у тебя стек фрагментов столько весит, а не что-то другое?
>>743095
> гилабе
У меня его нет, и ну нахуй, я сегодня отдыхаю от ведрокодинга.
Да, уверен, убрал везде добавление в стек, оператива перестала расти при переключении в бешеных темпах
Ну вернее как, пизды мне дадут за это. Могу мыло свое оставить чтобы вы здесь аккаунты свои не светили
Я оче хуево знаком с фрагмент менеджером, но у него внутри есть оптимизации свои. Там интсанс фрагмента на самом деле не очищается. Возможна ли ситуация, что у тебя, во первых огромное количество этих переходов, во вторых эти фрагменты выделяют себе большое количество памяти, не связанную с вьюхами? Битмапы например.
все связанное с битмапами делается аккуратно через Glide, фрагмент с картой, например, вообще не добавляю в бэкстэк
А в onDestoryView очищаешь ссылки на вьюхи? Через тот же баттеркнайф, просто unbindViews.
http://jakewharton.github.io/butterknife/
> BINDING RESET
Если Джейк Вартон делает, то и ты делай.
Во всех ViewHolder-ах списков тоже также или он косячить как data binding будет ?
Ну и эта пикча намекает, почему так делать нужно.
Сделал-таки через баттернайф unbind-ы и несмотря на уменьшение загрузки оперативы она всеравно напирает. Подумываю о том чтобы сразу создать по экземпляру фрагмента и дальше уже веселится через Bundle ( извращенец detected )
Ну ок, че поделать.
>Есть вероятность, что приложение будут запускать на ретрограде с 512 мб оперативки, из которых сам занешь сколько свободно
>всего-то мегабайт
Ондроед он такой.
Одна из проблем с тем, что карта гугловская v2 жрет оперативы туеву хучу
Ну хуй знает тогда. Странная у тебя какая то задача, тебе зачем такое?
Я мог бы предложить launchMode = singleInstance, но он тогда будет одну и ту же активность дрочить, без разделения по extra дате.
Что-то как например у редакторов документов, одна активити - один файл, запустил уже открытый файл - активити вышла на передний план.
СингИнстанс я видел, да, не подходит. Мне нужно чтобы в активитименеджере было видно разделение. Попробую вместо extra сунуть опцию как суффикс к action, чтобы FLAG_ACTIVITY_NEW_TASK понял. Должно получиться, наверное.
> Мне нужно чтобы в активитименеджере было видно разделение.
https://www.youtube.com/watch?v=4Y3JMvbcxQE
Вы видите копию треда, сохраненную 2 июня 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.