Вы видите копию треда, сохраненную 3 марта 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
В будущем, возможно, добавится карта библиотек.
Предыдущий тред: https://2ch.hk/pr/res/619370.html (М)
Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом. Ждем релиза второй версии студии со всеми плюшками.
А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript легион, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная, также как и количество вакансий.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный, и работа есть.
5) RoboVM - идейный наследник ксамарина, а теперь уже и его часть но на Java. Менее популярен, так как моложе, и вакансий я не видел.
Отдельного упоминания стоят:
1) Kotlin - Java от JetBrains, новый и стильный язык, куча синтаксического сахара прилагается, есть стримы и делегаты. Но работы на нее я не видел, и кто захочет поддерживать написанный на котлине код я не знаю.
Где брать инфу:
Интернет-ресурсы
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.
Можно эккеля "философия java" почитать.
Что тебе нужно понять в самой жабе.
Энтри лвл.
1) ООП - сам принцип нужно именно понять, так как ооп язык.
2) Типы данных. Примитивы и ссылочные.
3) Структуры данных - Массивы/коллекции - без них никуда. Полезно почитать про алгоритмы работы коллекций и их сложности.
4) Дженерик типы, они как раз юзаются в коллекциях.
5) Классы/интерфейсы и все вытекающие.
Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.
Дальше
6) Потоки ввода/вывода (streams). Не путать с тредами(threads).
7) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable.
8) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной.
Уже сделаешь что-то нормальное.
Дальше.
9) Работа с Sqlite, нужна будет в любом случае.
10) Почитать про json.
Привет клиент-серверка.
Пишите в треде что добавить.
На джавараше сразу на новичка сваливается поток непонятного говна с повторяющимися однотипными задачами. Как говорил один мудрый анон, не надо полгода читать одну книжку, надо хуярить их десятками: что непонятно в одной поймешь в другой.
Я лично на джавараше дошел до 13го урока и премного ему благодарен, очень быстро выдали довольно прилично инфы. Очень коротко, но мне было достаточно знать что такое есть, дальше уже сам раздуплился слушая часовые лекции и читая тонны статей.
Зачем придумывать велосипед? Энтри левел и дальше пусть идет нахуй в java тред и смотрит оп пост. После этого есть доки и "Busy Coder’s Guide".
В поисках старых индусских велосипедов можно посмотреть http://www.androidhive.info
Ну я попытался описать те пункты с джавы которые в ведре нужны. Хотя бы какой-то минимум.
В поисках старых индусских велосипедов можно посмотреть http://www.androidhive.info
В основном попадаю на такие сайты через гугл, и сайтов таких довольно дохера еще и блогов всяких, но поклацаю на досуге посмотрю.
>Хотя бы какой-то минимум.
Хорстманн до 7 главы. Codingbat.com. Джавараш до 10 уровня.
Дальше тренинг курс от гугла, считать котиков у климова. Всё. Можно писать всё что угодно обмазываюсь гуглом и SO.
Для тех кто хочет вкатиться в гейдев есть отличная статья по созданию клона Flappy bird. https://habrahabr.ru/post/243471/
> 10) Почитать про json.
Охуенная концовка, какой дегенерат это писал?...
> вакансий... работа... вакансий... работа ...
Иногда кажется, что я здесь единственный работающий android-программист.
Остальные только могут об этом говорит.
Вообще интерсно сколько опыта у ОПа, такое писать?
Тогда все делают заключение, что цель твоего визита итт - исключительно всех заебать, ты ментально посылаешься нахуй всеми посетителями этого треда, а я ставлю очередной крест в своей толстой тетради.
Вменяемому посетителю просто нет смысла с тобой беседовать. Похвально, что ты сам открытым текстом нам об этом заявил.
У тебя так бомбит от своей ничтожности, что боюсь
считать тебя адекватным посетителем не приходится.
Хорстман норм, джавараш тоже.
Codingbat.com не слышал даже.
Добавлю в след шапке если не забуду.
Вот котики мне совсем не понравились кстати, стартандроид как-то лучше заходил.
>>632396
>Охуенная концовка, какой дегенерат это писал?...
А работа с SQL тебя не смутила? Или то что из всей теории тредов я про ранейбл вспомнил?
Поверхностно накидал самое необходимое.
Json в заключении чтоб писали уже клиент серверку, думаю при прочтении инфы по джейсону найдут и инфу по парсингу и прочему.
>Иногда кажется, что я здесь единственный работающий android-программист.
>Остальные только могут об этом говорит.
Ну уверяю тебя ты ошибаешься.
>Вообще интерсно сколько опыта у ОПа, такое писать?
Около года.
А теперь по-факту, работы на джаве дохуя, на ксамарине в несколько раз меньше, также как и на самых популярных джаваскриптовых технологиях.
Тулить посты про котлин не предупредив людей что на нем нету работы - это днищенство, я считаю.
А вообще иди на хуй.
Из книг на русском неплохо заходил Харди Б., Филлипс Б. Программирование под Android.
Повествование ведётся через создание мелких приложений постепенно нагружая их функциональностью. Плюс поясняют про поддержку старых версий. Из минусов: 2013 год.
>Из минусов: 2013 год.
Собственно потому не вариант. Из книг только активная подписка The Busy Coder’s Guide вменяемая, уж больно часто в ведре что-то меняют.
Поведай нам, О Великий Знаток, что такого надо сделать в ведроиде что бы не считаться джуном? Ковыряться в JNI? Знать подводные камни компонент? А может еще лучше писать так что бы не сталкиваться с ними? Мы внимаем, молви же!
Котлин наоборот упрощает разработку, в нем нечего познавать, если ты конечно знаком с модными фишками более динамично развивающихся языков.
Мне нужно, чтобы при выборе элемента из списка происходило событие, и не происходило при вводе текста.
Как это реализовать?
А где тут обучение проги? Обычный гайд как вкатится. И да мне виднее я год назад вкатился, то по чему учился ты скорее всего устарело.
Но все же мог более адекватно сказать что не так, я лично нихуя не понял чего ты доебался-то.
Используй haskell
Какое событие? Какой список (ListView, RecyclerView)?
Нифига не понятно что ты хочешь.
>при выборе элемента из списка происходило событие
setOnItemClickListener (либо setOnItemSelectedListener)
Текущий статус: 1.0 beta 4
А это значит, что теоретически они могут менять язык без обратной совместимости.
Хотя сейчас они язык почти не трогают, а занимаются улучшением компилятора и библиотек.
Но если изменения происходят у них есть помощник-миграции.
Factory reset вернул телефон к жизни, но буквально на день/два.
Собственно, можно ли как-то достать лог ошибок? Кто-то сталкивался с подобным?
Я не думаю что простая либа такое умеет, это скорее уже к градлу.
Хотя с даггером пока не приходилось работать.
ЗАРПЛАТА НАЧИСЛЯЕТСЯ ПРОПОРЦИОНАЛЬНО КОЛИЧЕСТВУ НАПИСАННОГО ГОДА
@
СЫЧЕВ, KOTLIN - 15К
@
ЕРОХИН, JAVA - 150К
*кода
Не бей лучше обоссы.
Да ясно что либа там не причем, я про систему сборки то и спрашивал, прогвард этим не занимается?
Не это пизедц, сколько шапку не пиши, все равно какой-то ебанько прийдет и задаст что-то такого уровня.
Лучше на сях писать конечно же.
>Очевидно что Android-разработчики, Java 8 то еще не завезли.
Тред по скале видел? Такая же картинка с этим же джавакодом.
Родина дала им IntelliJ IDEA, нет они жрут говно в виде андроид студии, где в бетах второй версии рекламируют фичи которыми я пользовался в ИДЕЕ еще два года назад.
>где в бетах второй версии рекламируют фичи которыми я пользовался в ИДЕЕ
Например? Я обратил внимание только на чисто ведроидовские фичи.
Алсо, стоят оба кстати, на студии работаю, на интелидж иногда захожу лабу сделать или еще чего. Студия удобнее как минимум тем что все уже настроено.
Зачеркивание депрекатед для минсдк апи функций, артифакты, короче зайди в список нововведений андроид студии и сам смотри, все перечисленные там фичи давно есть в идее.
>все уже настроено
Путь до JDK и андроид SDK не так уж сложно выбрать вручную.
Прочитал первые две главы СИКП, фп понравилось, андроид только изучаю.
Вовсе нет.
Путь до джедека и сдк ты и так выбирашь в студии.
Говно из говна потому что.
Тут основная концепция, что не ты вытягиваешь нужные тебе данные,
а данные льются на тебя потоком и ты их как-то обрабатываешь.
К примеру (чисто функцианальная задача):
Взять тред и вывести список наиболее частых слов.
Тебе на вход (из API) поступает поток постов
-> разбиваешь текст поста на список слов
-> отфильтровываешь только валидные слова
-> групируешь слова в группы [слово, кол-во повторений]
-> сортируешь группы по "кол-ву повторений" слова
На скриншотах пример реализации в спомощью RxJava + Retrofit + Kotlin.
Прикинул как третий скрин выглядит на джаве и обосрался.
Что-то никак не пойму, на какой иде ты пишешь? Виртуалка от ксамарина, все на котлине. Какой-то франкенштейн из иде.
Какая же дрисня, блядь, и это у вас называется сахаром?
Это Android Studio 1.5 (еще стоит IDEA для десктопных/web Java/Kotlin проектов
и RoboVM Studio для кросплатформенных приложений).
Так как стандартный эмуль не очень, приходится юзать сторонние.
Альтернатива только всякие проекты поверх VirtualBox.
Выбрал Xamarin Android Player, тк все равно на работе под Xamarin разрабатываю.
Новый эмулятор (который в превью версии) довольно быстрый, да у меня и старый на маке не лагал вроде бы.
H A X M
A
X
M
Выкинь нахуй своё говно ~2013 года (сужу по лоурез скринам) и купи нормальную пеку, пока за 20-30 к нормальный собрать ещё можно.
Но скрины не мои, у меня действительно мак 2013, но ретинка же. Да и HAXM рабоатет.
Проблема стандартно эмулятора не в скорости, на air он не тормозит (спасибо haxm).
Его минус что он постоянно зависает и падает.
Напротив всякие Genimotion и XAP работают просто офигенно стабильно и так же быстро.
>>633354
Насчет нового (из AS 2.0) у меня хреновые предчуствия тк он работает на том же базе (qemu).
(не ну когда выйдет стабильная версия конечно попробую).
Често говоря, я от Google ждал СИМУЛЯТОРА как для iOS, вот это было бы круто.
И это обидно тк наработки у них есть (ARC https://developer.chrome.com/apps/getstarted_arc ).
Можно по подробнее, как ты с ним работаешь?
Так-то по умолчанию порядок всегда BIG_ENDIAN (об этом и в java доках написано)
Это проблемы маковской жавы. С интелиж 1.5 у них нормальное сглаживание сделанное JetBrains.
Я редко дергаю стандартный эмулятор, только если гугловские сервисы или новую прошивку. Поэтому не сталкивался с вылетами и еще какой херней.
Ну я особо не работаю, просто инетерсно, когда
это может потребоваться, вот например для получения локального айпишника, в случае если нативный порядок не BIG_ENDIAN, нужно биты повернуть. А дефолтный в буфере конечно BIG_ENDIAN, просто может оно лучше работает если использовать нативный порядок в отличии от дефолтного, а самом деле я отказался от ByteBuffer, потому что он там только больше сущностей создает и заменил на byte[]. Вот на интеловских процессорах точно должен быть LITTLE_ENDIAN.
Так на студии тоже, или нет?
По этому он перекатился на гейос, где аппл насильно всех посадили на хуй апдейты, и он пишет один код, который охватывает 99,(9)% процентов устройств.
Прошу знающего анона подтвердить, либо опровергнуть сие суждение. Сам ещё ньюфаг в этих делах.
Это когда ты можешь бросать интенты типа ACTION_BATTERY_CHANGED
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
Когда ты подписываешься на такой sticky-интент, через метод
Intent prevIntent = context.registerReceiver(new MyReceiver());
Тебе (в prevIntent) сразу возвращается предыдущий отравленный итент, но для этого системе надо
выделять память что бы хранить твои интенты. Поэтому это по умолчанию отключено.
Хотя ты можешь особо не париться, в API 21 методы sendStickyBroadcast(...) стали Deprecated
>>633825
это не джава тред да подойдет
Все так, кроме того что люди сами переходят на новые версии на гейоси, железа то хуй да нихуя для апдейта.
На самом деле не все так критично, и не половину времени.
Овердохуя компат библиотек есть. Вот только постоянно приходится смотреть не появилась ли новая.
Но гуглы выпускают все новые компат и саппорт либы, и работать становится проще.
>>633851
>>633732
Сейчас если ты обмажешься support-* библиотеками и поставишь API > 14,
то можешь особо не париться про разные версии.
Но могу возникнуть проблемы если ты:
1) Используешь скрытые API - оно может не работать или работать сильно по разному
2) Нестандартно работаешь с WebView (типа запуск своего JS) - до 4.4 был вебкит, после chromium
3) Используешь консольные linux приложения (через Runtime.exec()) - нет никакой гарантии что они вообще есть в системе
Не все есть в компате, со многими мелочами приходится ебаланится, но эти мелочи заметны и они раздражают.
И да, можно ли разрабатывать под айос без смартфона-айфона?
Што? Есть отдельные стандартной жавы тред, есть тред по веб жаве и андроидовскому тред. Под айос на жаве ты только с робовм разработаешь.
Блин чувак сожалею, что тебе приходиться работать с такими дизами которые не понимают
что эти эффекты для lollipop (сам помнится в начале с такими сталкивался)
Сейчас я просто вежливо объясняю, что никто на это время тратить не будет.
И показываю google play в качестве образца.
Так я знаю, и они знают. Просто приходится делать разные папки для разной хуйни.
Всем спасибо за ответы
Ох ананас, если бы они был, в программирование не существует единого-правильного подхода.
Но базовые вещи можешь почитать тут:
http://d.android.com/guide/components/activities.html
http://d.android.com/guide/components/fragments.html
Так то даже у фрагментов есть альтернатива:
https://www.youtube.com/watch?v=RPRl8fgBiNA
Да понятно что нет серебряной пули, я просто вот хотел сделать MVP, но примеры какие-то серенькие.
Короче вот такая идея: единое активти, в котором инжектнут презентер, который занимается разруливанием всех инвентов (нажатие кнопки, поменять страницу), путем делегирования их внутренним презентерам, работать будут только те, которые грубо говоря активны. Нормально, или хуйня несвязанная и костыльная.
Алсо: Операции - Activity, это что-то на уровне активность или даже выше.
>После этого какую книгу взять по джаве, чтобы и в её сторону развиваться (в дальнейшем скалу хочу потрогать))?
Если ты про бэкенд то там все намного хуже чем на ведре. У нас тут одно сдк и не так много вариантов, там же технологий жопой жуй.
С такими вопросами в соответствующий тред иди. Шапка только по Java SE и нужным ее элементам, а тебе нужна Java EE.
А какой в этом астральный смысл?
Я бы посоветовал не усложнять задачу (KISS). Если ты не собираешься писать
модульные тесты на Presenter и Model, может тебе и MVP не нужен?
===========================================================
Приведу пример реальной задачи где может пригодится MVP
===========================================================
"Требуется кросс-платформенная программа на RoboVM для Android/iOS"
Вот тут и встает конкретная проблема: как переиспользовать максимум кода/логики
между Android (Activity/Fragment) и iOS (UIViewController)?
Деваться некуда, я беру MVP (MVVM не катит, нет поддержки на уровне платформ).
View - java-интерфейс, от которого я наследую Activity и UIViewController
Model - это асинхронные сервисы на RxJava (в общем не суть)
Presener - просто класс которые забирает из View введенные данные и дергает
методы сервисов, а так-же обновляет View (View у него только в виде ссылки)
В этом случае в Activity и UIViewController я не помещаю никакой логике, только реагирование
на запросы презентера.
Вот всегда меня сбивало то что активити по сути своей контроллер. А тут ты его в вью втулил.
Как ты вообще собираешься работать с презентером без контекста? Как вообще все это описать ровно?
В общем сложно понять и нужно смотреть.
мимо-год-разработки-заебали-архитектуры-на-словах
Двачую, но нужен нормальный гайд и много опыта. В андроиде все это не прозрачно.
Ну вот я наклепал 2 клиентсерверки, музыкальный плеер с вконтактиком. А все равно чувствую что получается не очень хорошо.
У тебя сколько опыта?
Или ты чувак с котлином и 4 годами опыта?
За год я понял только то что ведро это какой-то пиздец где буквально каждый дрочит как хочет. А я пока что дрочу по гайдам. Всякие мортары и флов страшно в своем проекте юзать, и потому нужно в личное время их испытывать, а времени мало. Короче хуйня какая-то. Без гайдов тяжко.
>Вот всегда меня сбивало то что активити по сути своей контроллер
А это вопрос точки зрения (и наличия или отсутствия логики в активити).
iOS программисты как узнали что активити разрушаются при повороте, так в один
голос давай заливать что это View.
Мне кажется, на самом деле активити и НЕ контролер и НЕ вью, это View+Controller (как в ios, или Form в WinForm).
И чем она в итоге будет, зависит только от тебя username :)
>>634154
Клипай еще, программирование это постоянные поиск и совершенствование знаний.
Если через год ты посмотришь на свой старый код и скажешь "какие деб... так проектируют", значит ты на верном пути.
А вообще главное что надо запомнить: SOLID, KISS, DRY (и другие основополагающие принципы).
Так ты мой брат и друг.
Вообще сейчас с нуля проект пишу.
Юзаю стандартно активити+фрагменты с навигейшн баром, переходы глубже - новые активити.
Ретрофит вызывается непосредственно с места где он нужен, туда и колбек прилетает, т.е. в активити или в адаптере на худой конец. Так хотя бы понятно что и где происходит.
Работа с бд через контентпровайдер и курсор-лоадеры, очень уж мне понравилось с ними работать. Т.е. с ретрофита просто записываю в бд, и из бд уже обновляется юи. Кто-то скажен долго, я скажу зато отображаются всегда те данные которые закешировались.
С бд работаю через маленькую недоорм, так как уже писал я руками эти названия таблиц, ебись оно боком. Также и для ответов от сервера делаю модельки для парсинга, ибо та же хуйня ловить джейсон обжекты и вытаскивать по ключам.
Но пугает меня то что на фрагменты и лоадеры все ругаются, а меня они пока устраивают.
Да ну его найхуй с его английским. Вообще нихуя не понятно, лучше бы написали статейку.
Кто ругается на фрагменты и лоадеры? Я вот использую свой ContentProvider и Rx в ретэйнутом фрагменте.
>Кто ругается на фрагменты и лоадеры?
Всякие Джейки Вартоны которые сделали для ведра кучу полезностей.
>свой ContentProvider
В каком смысле свой?
>и Rx в ретэйнутом фрагменте
Нужно будет на Rx переходить пробовать.
На работе почему-то не особо любят всякие фичи.
Потмоу что сложно вкатится всем. Ну джэйк молодец, кто же спорит. Но для простых людей мне кажется легче воспользоваться фрагментами, чем лезть в кучу библиотек разом. Свой в плане, что надстройка над бдшкой. Используется как бы для нотифкаций удобных и фасада над базой.
>Работа с бд через контентпровайдер и курсор-лоадеры
Можно свой SuperCursolLoader написать, слегка переделав исходники
стандартного CursorLoader и тебе не придется больше использовать провайдер.
Сможешь просто колбек передавать или еще что угодно.
Да и вообще ContentProvider были введены в Android для передачи данных
между отдельными процессами. Юзать их в рамках одного процесса - это ненужное
усложнение программы.
>Потмоу что сложно вкатится всем.
>Но для простых людей мне кажется легче воспользоваться фрагментами, чем лезть в кучу библиотек разом.
Тут даже не в либу сложно вкатится а в их количество, куда не посмотри куча способов в реализацию.
И я такой сижу джуном и вроде как понимаю что нужно учить новые инструменты, но меня и старые так-то устраивали.
К примеру сделать алпикуху на фрагментах с асинктасками и лоадерами, а потом переделать на Rx с мортаром и фловом. Это две разных апликухи на выходе. Или же, делать оповещение через евентБас или через обычные локальные ресиверы/или прокидывать листенеры?
В результате я не ебу за что браться.
>Да и вообще ContentProvider были введены в Android для передачи данных
между отдельными процессами. Юзать их в рамках одного процесса - это ненужное
усложнение программы.
Знаю, и мне этот бойлерплейт не понравился совсем.
>Можно свой SuperCursolLoader написать, слегка переделав исходники
стандартного CursorLoader и тебе не придется больше использовать провайдер.
Спасибо попробую, как раз в проекте к этому подошел.
>Сможешь просто колбек передавать или еще что угодно.
Вот тут немного не вкурил каким образом. Как я подпишусь своим СуперКурсорЛоадером на изменение данных в бд?
Мне не нравится курсорлоадер, какой-то хуевый он, я хочу получать нотификации и уже тогда сам решу как мне обновить данные.
>>634185
Брр асинк таски, интересно сколько людей знают что по дефолту они работают в одном треде по очереди? Мне басы не нравятся так как слишком неразборчиво получается и как мне кажется оверхед. Зато люблю ресиверы, вот сейчас думаю засунуть ресивер в ретэйн фрагмент, пусть дрочит rx, там столько то возможностей появится.
Так же как и до этого (через URI в курсоре я полагаю)
http://developer.android.com/reference/android/database/Cursor.html#setNotificationUri(android.content.ContentResolver, android.net.Uri)
>Брр асинк таски
Я асинтаски не юзаю и никогда по сути в проектах не юзал, просто к примеру сказал, для асинхронки андроид-болтс юзал.
>я хочу получать нотификации и уже тогда сам решу как мне обновить данные.
Так курсор попросту прилетает тебе при обновлении данных в таблице, в чем проблема?
>Зато люблю ресиверы
Мне почему-то казались они затратными, да и хуй поймешь куда что летит. Вообще хуй поймешь, когда за чужой код сел с кучей ресиверов чуть не обосрался и плакал как сучка, особенно когда из третьего по глубине адаптера высылаются данные на ресивер.
getContext().getContentResolver().notifyChange(uri, null);
Да понял, что-то втыканул.
Вводная:
Пиздецки большая вьюшка фрагмента, штук 8 кнопок, ViewPager, дочерний MapFragment, горизонтальный RecyclerView.
Вопрос:
Как все это сделать так что бы не загнуться. Пока разбил на логические блоки, соответсвенно для каждого блока два метода, первый для инициализации, второй для перерисовке при изменении данных. Насколько хуево, альтернативы?
>Мне почему-то казались они затратными
Есть LocalBroadcastManager
>да и хуй поймешь куда что летит.
Енджои ин AKKA (модный тренд однако)
Ну блин бьешь на фрагменты, суешь их в FragmentStatePagerAdapter.
Будет тормозить, приход, обсудим.
Нет, там не так, там вертикальная вьюшка и в ней вью пэйджер. Оно не тормозит, прсот оможет можно как-т оне так калечно сделать? Хотя из не калечного только байндинг получается есть.
> вертикальная вьюшка и в ней вью пэйджер
большой ублюдок.jpg
вертикальная вьюшка - это RecyclerView?
>Енджои ин AKKA (модный тренд однако)
Akka.io? Первый раз слышу. Перед тем как я инфу начал задрачивать, можешь описать в нескольких словах что и как и нахуя?
Когда ставлю в манифесте android:launchMode="singleInstance" для main activity, то в диспетчере задач приложение не отображается на устройствах ниже, чем Android 6.0.1.
Как это пофиксить?
Антошь не стоит вскрывать, это суровый java/scala энетрпрайз. И на твое счастье не работает на Android.
Кратно: программа состоит из блоков которые общаются друг-с-другом пересылкой сообщений
(локально или через сеть). Позволяет легко маштабировать приложение на кластеры.
>>634276
Чего то ты не договариваешь. У меня везде нормально отображается и в 5.0 и 4.2.2.
Что ты подразумеваешь под "диспетчером задач"?
Имею ввиду вот эту хуйню, что на пике.
Как это правильно называется?
Когда убираю singleInstance - отображается.
Ставлю singleInstance - не отображается.
>>634304
Там сделано так: Запускается главная активити, далее, если нужно пользователя перенаправляют на брифинг или на форму авторизации Вконтакте (если он не авторизован), далее на single instance активити, где вся движуха происходит.
>Антошь не стоит вскрывать
Ну собственно вопрос остался открытым, каким образом сделать ресиверы и пересылки на них читабельными?
А в чем проблема с пересылками? Класс ресивера, который не будет дергать активити, если оно запаузено, или скидывает в сабскрипшен с буферами, опять же там можешь через Rx раскидать куда надо., когда надо. Модешь сделать фабрику мессаджей, которая будет тебе выдавать интент по заданным параметрам, заведи константы для типов.
Учу по учебнику, автор хуячит их в свои методах в качестве аргументов (например, в singleton'ах), но еще не использует, дайте спойлер, для чего в будущем это делается.
Не, я немного не об этом. Например ресивер повешали в активити, на этот ресивер высылают что-то из третьего по счеты активити с нестед фрагментами. В результате оно все ок отсылает, но читабельность страдает сильно.
двачую вопрос.
я примерно понял, что контекст это супер-класс для всех активити и прочих, что он может получить доступ ко всему (точно ко всему?) приложению и обрабатывать запросы вроде "получить ресурс из string.xml". и у меня вытекают от этого вопросы:
1) является ли контекст последней инстанцией, с которой взаимодействует сама система девайса?
2) зачем указывать context в создании контролов (view)? получается, что new Button(Activity.this) создает инстанс кнопки внутри активити? А если использовать
getApplicationContext() - он создаст кнопку во всем приложении и ее можно подключать в любое активити?
3)Activity.this указывает на созданный инстанс моего Activity?
Можно ли иначе, вызвав функцию getContext()? И у меня, кстати, сама по себе getContext() не работает, такой функции похоже вообще нет.
>1) является ли контекст последней инстанцией, с которой взаимодействует сама система девайса?
Я не понял что ты написал, но через контекст ты работаешь с системой ведра. Контекст включает в себя все менеджеры и прочее.
>2) зачем указывать context в создании контролов (view)? получается, что new Button(Activity.this) создает инстанс кнопки внутри активити? А если использовать
Ты не можешь инфлейтить на контекст, только на активити, в другом случае получишь краш. Помню ух и заебала меня эта штука в адаптерах.
>3)Activity.this указывает на созданный инстанс моего Activity?
Ну это больше джава и область видимости слова this.
>Можно ли иначе, вызвав функцию getContext()? И у меня, кстати, сама по себе getContext() не работает, такой функции похоже вообще нет.
Это не функция а метод в активити, фрагментах и т.д.
Спасибо за ответ. Я как раз и имел ввиду, то что ты первым пунктом написал, что система ведра обращается к контексту и наоборот.
А что такое "инфлейтить"? И еще раз прости за вопрос: сама суть new Button(this) в том, что создается кнопка, определенная в активити? Или как понимать данную строку?
>контекст это супер-класс для всех активити
У активити родителький класс ContextWrapper, он просто имитирует контекст делегирую запросы.
>зачем указывать context в создании контролов (view)
Для простоты представь, что контекст это API для доступа ко всем ресурсам из APK.
Когда ты передаешь активити в "new Button(...)", ресурсы перегружаются с учетом темы (theme) этой активити
>что система ведра обращается к контексту и наоборот
Не думаю что именно так, скорее контекст имеет в себе все эти модули с которыми работает ведро. Т.е. не с самим контекстом, а с внутренними элементами.
>А что такое "инфлейтить"? И еще раз прости за вопрос: сама суть new Button(this) в том, что создается кнопка, определенная в активити? Или как понимать данную строку?
Настолько отвык от создания вьюх в коде.
Инфлейт это создания вьюхи из xml. Но мне кажется если передать в баттон обычный контекст, то ты тоже получишь эрор.
Контекст — объект, обеспечивающий простой доступ к каким-либо ресурсам, сервисам и т.д. Созданием контекстов занимается Instrumentation, больше тебе знать не надо.
Application Context - самый "изначальный " контекст а если быть точнее, обёртка над ним.
Контексты можно оборачивать, чтобы применить изменения к контексту. Для этого существует ContextWrapper. Application, Activity и Service — примеры таких обёрток. Для получения "обёрнутого" контекста как раз используется getBaseContext.
>Когда ты передаешь активити в "new Button(...)", ресурсы перегружаются с учетом темы (theme) этой активити
Выходит, что если разные стили у каждой активити, а я использую глобальный контекст - стиль кнопки может отличаться? Или я не так понимаю понятие темы?
>Но мне кажется если передать в баттон обычный контекст
Вообще-то нет, ты можешь и Application передавать в "new Button()"
View все равно откуда ресурсы (картинки, тексты) забирать.
Может быть, но с инфлейтом была точно трабла. Запрашивало именно активити.
Так давно это было, а иде запускать впадлу. Поищу может статейку найду.
> является ли контекст последней инстанцией, с которой взаимодействует сама система девайса?
С контекстом система вообще не взаимодействует. Она взаимодействует с серверами типа WindowManager, ActivityManager и т.д. Со стороны приложения контекст уже может работать с ними.
> зачем указывать context в создании контролов (view)? получается, что new Button(Activity.this) создает инстанс кнопки внутри активити? А если использовать getApplicationContext() - он создаст кнопку во всем приложении и ее можно подключать в любое активити?
Вьюхи "связаны" с WindowManager, контекст здесь нужен для применения стилей и получения ресурсов.
> Activity.this указывает на созданный инстанс моего Activity? Можно ли иначе, вызвав функцию getContext()? И у меня, кстати, сама по себе getContext() не работает, такой функции похоже вообще нет.
Тут не понял ничего.
>Тут не понял ничего.
Он запутался как получать контекст.
getContext нету в активити. Есть два других.
И он спрашивает еще в чем разница между this и Activity.this.
Ни в чем. последние два идентичны, просто this иногда может пониматся как анонимный класс например.
Есть активити контекст и апликейшн контекст.
Все остальное обертки над ними.
И только с активити контекста можно инфлейтить, если не ошибся.
> Есть активити контекст и апликейшн контекст.
Нет, не так. Есть куча ContextImpl. Над одним обёртка - Activity, над другим - Application. Такого, что один контекст где-то является Activity, а где-то Service, не бывает.
Если для каждой активити задаешь отдельную тему с разным textColorPrimary
<item name="android:textColorPrimary">...</item>
и будешь создавать кнопку из кода передавая активити, у тебя будет везде разный цвет.
Если ты передашь Application, то к кнопке примениться какой-то стандартный-системный стиль.
Та ты заебал, открыл блять документацию и задрачиваешь меня уточнениями.
>активити контекст и апликейшн контекст
Вот тут и имелись ввиду твои враперы для контекста.
Да и говорили только про активити и вызовы контекста из него, так что и сервис тут не при чем.
>Анон, помоги. Есть друг, который изучает JS, я изучаю Android. Хотели запилить какой-то учебный проект вместе. Это реально? Или жс и андроид нигде не соприкасаются, что бы покодить с ним вместе?
На JS можно, но пртложения такие сильо тормозят.
шапку читай, жуеба.
Почему нет треда про Swift под аппл?
Провожу исследование "можно ли портировать часть Android API на обычную Java".
Это нужно чтобы запускать Android приложения на WP10 (вместо проекта Astoria)
и просто на Window/OS X/Linux без эмуляторов (к примеру для быстрой отладки).
Может быть кто нибудь захочет присоединится?
Или просто мысли свои по этому выразить.
P.S.
Я знаю что у Google есть расширение к хрому которое примерно это же делает.
Windows phone умирает.
Наконец о Xamarin годно сказано
А как в мейнстриме с этим? Можно выебнуться на собеседовании/использовать на работе?
Тебе нотификации нужны или пушуведомления?
Просто нотификацию показать можно строчек за 5.
А вот с пушами придётся потрудиться.
Сам понимаешь не очень, язык ещё в бете, правда следующий релиз уже RC.
Swift вон уже больше года в продакшене (версия 2 уже вышла),
а все никак не пересядут.
Я на нём переписывать на работе один проект с xamarin ,а для себя только на котлине пишу
Сервисы потому что нотификэйшн обычно их них показывается, они там ни для чего не нужны.
1) Создает CDlowder объект-наследник Thread. В run() указано, что бы он через каждую секунду отправлял данные в LogCat.
2) Поток запускается через нажатие кнопки button, через buttonCancel - останавливается и пишет в textView информацию.
И у меня тут не получается ничего. Запускаю приложение, а поток не работает в фоне и гуй не дает ничего нажать до остановки потока.
В догонку еще вопросы:
1) Как лучше всего останавливать потоки?
2) Читал на стаковерфлоу, что Thread лучше не использовать, а юзать ASyncTast, вместо Handler. В чем там разница? И как принято у разработчиков менять состояние гуя через потоки?
Сам код: http://pastebin.com/9Wa5c6BG
• APK минимум 15 MB, уменьшить нельзя тк Xamarin не может сжимать DLL (по объективным причинам).
Против 2.5 MB у RoboVM (и это без обфускации).
• Неродной рантайм для обеих систем (Android, iOS).
В RoboVM у меня хотя бы на Android нет прослоек.
• Continuous Integration на Xamarin работает только с Business подиской ($999)
• Слабенькая IDE (Xamarin Studio).
Для Kotlin/RoboVM я использую IntelliJ IDEA.
http://developer.android.com/intl/ru/training/notify-user/build-notification.html
Создаешь объект Notification, передаешь его в метод notify() класса NotificationManager
>Xamarin не может сжимать DLL
Как это не может когда Link All линкует все подряд и убирает из dll неиспользуемый код. Размер апк конечно больше получается чем у Native но не намного. Сейчас на нынешних устройствах это не критично.
> Неродной рантайм для обеих систем (Android, iOS).
И? Лично видел как на огромных нативных проектах пишут свои гарбадж коллекторы. Если не заметил в ios xamarin фигачит бинарник который подтягивает твои dll.
В андроиде согласен 2 параллельных рантайма убираются за 2000$, что нихуево.
>Continuous Integration на Xamarin работает только с Business подиской ($999)
Я например на Business и сижу. Плачу не я, а фирма. Если же ты фрилансер, то есть кряки.
>Слабенькая IDE (Xamarin Studio)
Да, слабенькая. но опять же смотри выше. Я пишу в VS с Resharper
И это все?
ах, да, и проект какой? Это важно. Поскольку Xamarin решает хорошо бизнес-задачи. Если мелкие утилитки, программки, мелкие сервисы или сильно платформозависимые приложения - конечно Xamarin это не выбор. Но для всего остального.... Да и на UpWork проектов на Xamarin полно. С RoboVm не встречал...
Через interrupt() можно, ты только в цикл добавь выход из него.
>>635123
Работа это конечно хорошо, но глядя на >>634958 (OP) задумываешься, а стоит ли зацикливаться на одном языке?
Ок, а что чаще юзают - нотификейшны и пуши? Т.е. нотификейшны легко добавить, а с пушами в чем проблема? И то, и то работает при закрытом приложении?
У меня суть такая: юезр делает заказ, и через какое-то время он появляется на складе. И в этот момент надо его уведомить. Кто что посоветует?
> Через interrupt() можно, ты только в цикл добавь выход из него.
Сразу добавлю, что throw InterruptedExeption сбрысывает isInterrupted текущего треда в false.
Довольно важное замечание ебанутого поведения джавы.
> юезр делает заказ, и через какое-то время он появляется на складе. И в этот момент надо его уведомить. Кто что посоветует?
1. Через алармменеджер раз в пол дня проверяешь наличие заказа в сервисе. Показываешь нотификацию через Notification.
2. Если есть доступ к бэкэнду, то пуши. Приложение не будет ебать батарею и получит данные только тогда, когда этого захочет сервер. Ловишь пуш в сервисе, показываешь нотификацию через Notification, либо указываешь параметры показа в самом теле пуш сообщения.
https://developers.google.com/cloud-messaging/
К бэкэнду есть доступ. Тогда я буду ловить эти КлаудМесэджи через GcmListenerService.onMessageReceived, и всё? Или какие-то подводные камни, в виде сложной реализации или еще чего-то?
Забыл упомянуть, Xamarin приложения дольше запускается даже на топовых девайсах
> Как это не может когда Link All линкует все подряд и
Я про то что Xamarin вообще не сжимает DLL помещая их в APK (сжимал бы, apk были бы в 2-3 раза меньше)
> Размер апк конечно больше получается чем у Native но не намного
2.5 MB против 15 MB это НЕ немного
> Сейчас на нынешних устройствах это не критично.
Устройства бывают разные и не у всех S6.
> И? Лично видел как на огромных нативных проектах пишут свои гарбадж коллекторы
Тут спорить не о чем, нативный код для платформы всегда лучше.
> Если же ты фрилансер, то есть кряки.
Хорошая у тебя компания, раз может по штуке баксов выделять на разработчика.
Нет актуальных кряков для ios (они вечно под устаревшие версии)
> Я пишу в VS с Resharper
Мне удобно на макбуке работать, что бы сториборды сразу править в Xcode
> проект какой?
Менеджер "данных" CRUD с криптографией, бэкенд синхронизацией, нативным дизайном
Спасибо большое. Если у кого-то еще есть мнения, буду рад послушать.
а, ну у нас разное workflow
Да Xamarin дольше запускается. Но мы используем это время с пользой - показываем рекламный баннер на сплешскрине. Нам размер не критичен. 15-50МБ однохуйственно. Пишем в основном на топовые девайсы - xhdpi, xxhdpi xxxhdpi, Retina короче.
На контору 3 лицухи - 2 ios 1 android. Когда покупали - предоставили скидку 20%, да и курс весной был божеский.
В моем распоряжении 2 компа - MacMini и PC. У нас 1 сториборд описывающий сплэшскрин, все остальное xaml.
Менеджер "данных" 1-м сеньором пишется на ура.
Но мне интересно послушать о возможностях RoboVM. Какой там паттерн проектирования заложен, как UI пилить, как например подключить SDK Vkontakte или Фэйсбука на ios. Вот это все.
> Какой там паттерн проектирования заложен
Никакого. Как и в Xamarin если не использовать Xamarin Forms.
> как UI пилить
Через xml и storyboard. Лично я юзаю MVP (без фреймворков).
> как например подключить SDK Vkontakte
Как xcode проект
Нет ощущения что скатился до MVP с паттерна богов MVVM - если использовал его конечно, необязательно в Forms, через mvvmcross например.
И если юзал формсы не напрягает что теперь UI надо верстать 2 раза?
Почему по твоему мнению такие вещи не перевешивают размер и скорость запуска? Ну пользователь не обеднеет так то, а ты кучу времени сэкономишь на разработке. Особенно важно когда нужно прототип. И не сегодня а вчера.
>что скатился до MVP с паттерна богов MVVM
Вас не смущает что они на 95% одинаковы?
Сириусли объясните мне эту критическую разницу то?
Что в презентере ты связываешь модель с вью, что в вьюмоделе.
иди нахуй
Да вообще ни разу не одинаковы. в MVVM заложен механизм биндингов. Особый смак TwoWay биндинги. Вся фишка в них. В том что ты не пишешь кучу update методов и не завязан на событийную модель вообще никак, более того ты можешь вьюмодели отнести в другой проект и написать к ним тесты итд итд
Ну если нужны двунаправленные биндинги то в ведре это пока что невозможно. Если в последние пару месяцев не сделали.
Ну в Xamarin это тоже до недавнего времени было возможно только через фреймворк.
Понятно. Ну в общем решать надо в каждом проекте отдельно что важнее - скорость разработки или скорость работы приложения, его размеры и стоимость лицухи. Впрочем как и всегда - важно все взвесить и просчитать.
>скорость разработки или скорость работы приложения
Скорость разработки на ксамарине сугубо под ведро не может быть быстрее чем на жабе. Так как ксамарин стандартный сдк и юзает.
Т.е. если ты пишешь апликуху под ведро, то выбор не то что очевиден, его и нету совсем.
Какой скрытый смысл разработки на ксамарине сугубо под ведро? В чем вообще профит?
Профит по деньгам очевиден, когда на нативных SDK проекты запланированы в совокупности длиннее 2 месяцев и нужно выпустить 2 приложения.
Условно Зп 1 кодеманки 2000$. Условно он за 1 месяц на Замарине сделает то что такой же кодеманки сделает за 2 на нэйтиве. Бизнес-лицуха на год 2000$.
4000$ и 1 месяц против 4000$ и двух месяцев. Ну а дальше начинается чистая экономия и похуй на то, что приложуха грузится на 5 сек дольше и её дольше будут загружать по 3G.
Я достаточно быстро адаптировал проект на формах под андроид, в то время когда он же уже был 100% выполнен под ios. Под ios мы его писали 6 месяцев, адаптация на ведро прошла за 2. Итог - мы фичевали фичи на ios и они автоматом попадали в недоделанный андроидный билд, любые правки в логике, сервисах и верстке автоматом пилились в ведро, основное время потратили тупо на оптимизации, внешний вид и на текста, которые бы подбирали размер шрифта под доступную область + осталась работа по прикручиванию VKSDK.
>Какой скрытый смысл разработки на ксамарине сугубо под ведро? В чем вообще профит?
Я про это и говорю, если заказ поступил сугубо на ведро, то финита ля комедия.
Тебя послушать так серебряная пуля.
Можно ли писать под андроид и эппл без андроидов и эппла?
Можно, но если на ведро тебе нужен будет один джениМоушн, то на на эпл скорее всего понадобится еще и виртуальная машина под Mac OS.
Вариант хуярить на кроссплатформе, но они платные и хз как там с эмуляторами девайсов.
> через mvvmcross, mvvmlight
То еще г### и все равно (на Android/iOS) через код делается.
С MVP ощущаешь простоту, ибо никаких сторонних фреймворков, никаких спец. базовых классов и тд.
> UI надо верстать 2 раза
Нам нужен нативный-красивый дизайн, а не формы (разные макеты, разная верстка)
> Особенно важно когда нужно прототип
Вот у нас и был прототип на Xamarin, а теперь переделываем на продакшен решение.
https://itunes.apple.com/ru/app/smartmafia/id1013949031?mt=8
Это попадает под определение "нативный-красивый дизайн"?
Android: apk 51 MB
ресурсы максимум для xxhdpi
не совместим с Nexus 5X
iOS: ipa 80 MB.
Размеры кнопок разные (особенно нравиться "Начать").
Хочу ввести "Имя" в окне "Вход" клавиатура перекрывает поле
(кнопки перехода к следующему полю нет).
В общем не самые приятные впечатления оставляет.
Да и фильм говно
> не совместим с Nexus 5X
на ведро мы выложим через пару дней обнову. Будет Nexus 5X, да и вообще куча говна в виде багов уйдет
> Да и фильм говно
Фильм говно, и к нему мы отношения не имеем. Мы забрендились просто на месяц. Скоро вернем обратно приятный арт. Я был всеми руками против этого брендинга но не я решаю.
> Хочу ввести "Имя" в окне "Вход" клавиатура перекрывает поле
(кнопки перехода к следующему полю нет).
iphone 4s? да, есть такое говно. Мы вообще 4-ки будем отцеплять
>Это когда ты можешь бросать интенты типа ACTION_BATTERY_CHANGED
Уже немного яснее, спасибо!
Чем больше читаю, тем больше понимаю, почему разработчику так нужен ингриш
>tfw no OC X
AsyncTaskLoader, CompletableFuture (есть какая-то либа для совместимости)
Да кстати, а чем не устраивает RxJava?
У меня есть некоторый опыт юзания, могу объяснить если что-то непонятно по RX.
Android-bolts еще норм.
> Как он будет действовать, если он сработает, при открытом уже приложении
Так как из сервиса можно активности запускать только через NEW_TASK, то перекроет твои текущие окна.
Да и не лучше ли нотификации делать, вместо вызова целой активити?
Спасибо, понил. Нотификация не вариант, я должен перед рожей видеть, что событие настало.
Грубо говоря, могу я пользоваться getArguments() в onCreate()? Может ли он потерять изначально переданные в активити данные?
Если ты про getIntent(), то нет тк интенты активити сериализуются на диску.
И сохраняются даже при вылетание приложений из памяти сохраняются.
getArguments() фрагмента храниться в Bundle активити, который тоже сериализуется на диск.
<ImageButton
android:id="@+id/facebook_button"
android:drawable="@mipmap/facebook_released"
android:layout_width="230px"
android:layout_height="230px" />
А изображения на кнопке все равно нихуя нет :ссс
Как решить проблему?
(соре, не нашел 11 тред сразу)
The Busy Coder’s Guide? а то у меня за 2014, а может и древнее
Есть проги редактирующие их?
Рекламку бы порезать в них
И почему нельзя создать объект AsyncTaskExtended(this) в onClick()?
нужно не
android:drawable="@mipmap/facebook_released"
, а (тк ImageButton это наследник ImageView)
android:src="@mipmap/facebook_released"
>>637337
гугли apktools - http://ibotpeaches.github.io/Apktool/
>>637338
нихрена не понял, что ты хочешь
Есть AsyncTaskExtend, который наследуется от асинктаска. Он управляет состоянием вызвавшего его активити и делает свои действия в onProgressUpdate.
Так вот вопрос, я правильно понимаю: что бы управлять состоянием - нужно создать объект типа AsyncTaskExtend(Activity.this), а внутри класса описать уже нужные мне контролы и как они будут менятся во время работы асинктаска?
ой, в doInBackground() делает. фикс.
типа mMediaPlayer = MediaPlayer.create(this, R.raw.08 Some track); ?
а как тогда пишутся приложения типа медиаплееров? там по прямой ссылке доступ?
Конечно. В assets нельзя нихрена запихнуть потом. Достаются URI/path из базы и пошел проигрывать.
а по бд еще не подскажешь? у меня этого курса в универе почти не было, единственное что я вынес - это то что бд надо разделять и много столбцов это плохо.
пытаюсь осваивать SQLite. допустим есть простой список контактов с полями "имя", "фамилия", "телефон", "адрес" и куча-куча прочей информации. мне выходит надо создать одну базу данных, которая будет содержать эти 10-15 столбцов и заполнять? или все таки стоит разделять на подбазы.
и что вообще можно по бд почитать, что бы примерно представлять язык SQL и как их строить?
Я сам БД со скрипом в универе сдал, но по моему скромному опыту преждевременная нормализация, а ты говоришь о ней, когда хочешь уменьшить количество столбцов в таблице, не нужно. И ты бы создавал не подбазы, а различные связанные (например по номеру телефона, или еще по какому уникальному ключу) таблицы в одно БД.
Из шапки жабо-треда:
5. Что насчет SQL?
Начни с малого: http://www.w3schools.com/sql/default.asp
Затем переходи к: http://www.sql-ex.ru/
В качестве чтива рекомендую: http://oreilly.com/catalog/sqlhks/chapter/
А это разве не класс для реализации нотификаций? Или через него можно и сервис запускать раз в определенное время?
Можно.
Какие нахуй контролы? Через коллбэки управляешь состоянием юая.
Unity, Unreal, Cocos2Dx
>>637398
Туда пихается PendingIntent, а в него уже почти любой другой интент.
>а то из /gd частенько заходят
Я, скорее, из универа сюда зашел. И я, конечно, понимаю, что в нынешней инди-индустрии принято на каждый чих юнити тащить, но мне как-то сомнительно, что для игры про давление бегающих по столу тараканов нужен целый 3Д-движок.
Бери кокос, если хочешь плюсы, но это тоже "целый 3-д движок". Любое комплексное решение это куча не нужного тебе говна. Для небольшой игры подойдет libGDX.
Открываешь google.play, смотришь в ТОПах что-нибудье просто что сможешь сделать.
Делаешь, выкладываешь в play, может кто и скачает. Люди любят конкуренцию.
Я хочу присосаться в какую-нибудь контору, а не быть фрилансером и надеяться, что "авось кто скачает". Вот хочу знать, на какой уровень ориентироваться. Чтобы знать, что если я не могу пока осилить вот эту ебалу, нужно еще потренироваться, а если могу, то можно уже идти обсираться на собеседованиях.
Алсо, если честно, мне лень доводить до ума мелкую хуйню типа шифра цезаря, делать дизайн, ебать шрифты и прочее, хочу в портфель сложить только код и незамысловатый интерфейс (или вовсе спиздить его на 99%).
Спасибо, добавил в список.
Интересует PAN/NAP. Т.к. гугленье по этой теме не дало результатов, я пришел к выводу, что готовой утилитки (хотя бы что-то типа pand из bluez) для подключения к существующей/создания новой сети нет. Так ли это? Если да, то где искать документацию к этому ебучему блюдроиду?
Есть это https://source.android.com/devices/halref/bt__pan_8h_source.html
но нормальной документацией это трудно назвать.
{
"a" : ["e","f"],
"b" : ["g","h"]
}
есть библиотека simple-json - https://code.google.com/archive/p/json-simple/ , которую я использую.
Подскажите, пожалуйста, как этот джисон перекодировать в какой-нибудь хэшмап, чтобы уже нормально использовать.
В общем, есть такой вот фрагмент, который то ли работает, то ли не очень.
Под виртуальным андроидом 4 (14 API) всё запускается, всё работает.
Под реальным устройством с андроидом 5.1 (21 API, CyanogenMod) нихрена не запускается и выбивает NPE на строке 36 (то есть, navigationDrawer == null).
Почему так и что с этим делать?
- Я правильно понимаю, что на коллбеках построен полиморфимз и вся работа с кнопками в частности?
- Если так, то как это работает? Кнопка в главном потоке постоянно отслеживает (как отслеживает, тоже своим потоком?) состояние и если оно изменилось - передает объект, имплементирующий метод действий?
- И если все так, то где это еще используется?
Причём тут полиморфизм вообще?
Коллбэк - это такой паттерн, в котором у объекта есть один или несколько листенеров, у которых этот объект при каких-то условиях вызывает какой-либо метод - то есть, коллбэк.
Может быть фрагмент не успел добавится в активити, вообще говно какое-то добавлять фрагменты через xml.
Но почему тогда он всегда стабильно успевает добавляться на четвёртом андроиде, но не на пятом? Кроме того интересно то, что до этого и на пятом всё нормально работало. А потом после небольших изменений в одной из зависимостей (которая с андроидом вообще ничего общего не имеет!) стало вот так.
А если не прописывать фрагмент через XML - то как тогда? Вот есть у меня этот самый NavigationDrawerFragment. Как мне его добавить в мой лейаут?
Еще есть ли продвинутые тулсы чтобы смотреть как выглядит гуй(анимации, нажатия и т.д.)? хотяб для декларативных
Какой еще паттерн? Коллбэк - это указатель на функцию, который вызывается в теле другой функции.
То, что ты описываешь называется обсервером.
Retrofit, Picasso/UniversalImageLoader/Glide, Calligraphy, Gson/Jackson, Dagger2.
Еще крутые: RxAndroid, Retrolambda(это правда плагин), Fresco, Mortar, Flow, AndroidBolts, Butterknife (скоро будет нинужно).
Еще популярные: EventBus, greenDAO, ormLite, Realm.
>All requests are handled on a single worker thread -- they may take as long as necessary (and will not block the application's main loop), but only one request will be processed at a time.
Все верно.
Стоит jdk и jre 8 версии + я так понимаю 32 битные версии jdk 7 и jre 6,7(находяться в паке programms x86, куда я так понимаю винда 32 битные проги ставит)
Насчет кэша не очень понял, гугл ответил только про temporary files в java control panel, с которой кстати такой же косяк, артефакты с надписями. Очистил, не помогло. Может проблема в каком нибудь стандартной гуй либе, которую испльзует java(не оч шарю в этом)?
бля ну вы бы хоть пояснили че такое коллбек. а то с умным видом сидят и гринтекстят.
Попробуй вместо getFragmentManager() (28 строка) вызывать getChildFragmentManager().
> RxAndroid
Ну что ты позоришься, нужно советовать RxJava
RxAndroid только добавлять шедулер для хендлера
(которые можно и самому написать без проблем).
Я не уверен что там только это. А так конечно да, без RxJava ничего не будет.
Да я бы посоветовал стереть все джавы. А потом нормально накатить, если пользуешься rx то надо будет и 6 и 7, но 8 обязательно. Можешь еще превью студии скачать, с ней отдельная jre будет для шрифтов, хотя может это только на маки.
>Butterknife
Что-то не зашел, все паблик должно быть и тд.
А почему не нужно будет? Гуглы сделали биндинг какой-то?
Еще Timber для логов очень понравился, вот смотришь на стандартный лог и на тимбер и понимаешь насколько гуглам похуй на разрабов.
Ну и cupboard() вы забыли, лучше всяких орм.
Ну достаточно было package-private (без модификатора доступа). Вообще да, есть в бете: http://developer.android.com/intl/ru/tools/data-binding/guide.html
Про тимбер забыл чет.
Я понимаю, что ява настолько бедный язык, чтов нем нет указателей на функцию, как в крестах или делегатов, как в сисярпе. Но от этого значение слова коллбэк не меняется. Просто его нет в яве. Приходится выкручиваться, реализуя обсервер и называя его коллбэком, лол.
Прочитай про паттерн Observer.
Для getChildFragmentManager() минимальное API - 17, а мне надо бы поддержку с 14.
Ну так ты юзай support.Fragment
Так я тебе и рассказал. Есть идеи для стартапа, ищу напарника для реализации.
Использую VK SDK, приемущественно запрашиваю список аудиозаписей (из поиска, из альбомов, аудио друзей и т.п.)
Как бы мне кешировать всю эту ебулду? Или смысла не имеет?
Имеет, запросы не самые быстрые, в базу родименькую писать всю хуйню. Обновлять или в ручную, или в крайнем случае через 15 минут, типа ушел с экрана - вернулся и побежал запрос на синхронизацию.
Создаю экземпляр HttpURLConnection.
Студия мне выкидывает методы для переопределения, пикрелейтед.
Не могу понять что писать в методе connect, похоже они все обновили, а документация осталась старая.
http://developer.android.com/intl/ru/reference/java/net/HttpURLConnection.html
Помогите, коданы, я в этой джаве недавно.
p.s. И почему он ругается на малформед урл?
>http://developer.android.com/intl/ru/reference/java/net/HttpURLConnection.html
Тебе нужно обернуть выражение в try-catch
Потому что HttpUrlConnection — абстракция. Нужно работать с её реализацией, в андроиде такая есть.
new URL(...).openConnection().
Думаю взять нексус 5х, но внутрений еврей говорит что отдавать больше половины зп за телефон ебанизм.
В результате глаза падают на бюджетное китайское говно.
Я понимаю что к разработке никоим образом, но все же, какое у вас отношение к выбору девайса?
Типо вот этой хуйни, только под ведроид.
add
if(activity instanceof MainActivity){
((MainActivity) activity).startMethod;
}
есть такое решение, можно хотя бы пояснить что здесь происходит?
Логи посмотри.
У тебя скорее всего запрос в главном потоке, в новых аднроидах это вызывает исключение.
Создай AsyncTask и внути выполни запрос.
>>638992
> хотелось бы всегда самое свежее ведро
> глаза падают на бюджетное китайское говно
Ты уж определись как-нибудь.
Если нужны новые прошивки на два года вперед по любому только 5X остается.
В принципе он как и личный телефон неплох купил еще по пред заказу
Вот пример с AsyncTask
P.S.
1) Не забудь добавить в манифест
<uses-permission android:name="android.permission.INTERNET" />
2) Смени http на https (yandex не дружит с http)
Да мне скучно прост
>Котаны, есть проблема.
Когда ставлю в манифесте android:launchMode="singleInstance" для main activity, то в диспетчере задач приложение не отображается на устройствах ниже, чем Android 6.0.1.
Как это пофиксить?
>>634598
Содержимое манифеста:
http://pastie.org/10702981
Очень печально, когда тратишь кучу времени на обход бага и потом оказывается, что такой баг только на этом китайском говне.
С nexus 5X у тебя будет на что ориентироваться.
Так то любое приложение никогда не будет работать одинаково везде.
Да, по идеи эта активити показывается пользователю 1 раз при первом запуске приложения. И он не должен вернуться на неё через кнопку назад.
У начальника говно-блекбери, и был там один баг с проверкой интернета, суть в том что иногда интернет был, а апликуха получала данные что его нету.
В результате немного нервов потратил, но в конце концов забили, так как ебучий блекбери даже к адб не подключался.
Самое страшное - это всякие апликухи, которые работают с bluetooth или обмениваются данными через аудио/usb.
Главное - фиг протестируешь, где то же надо брать целую кучу устройств.
Пока не приходилось с этим ебаться, но представляю себе.
Пробовал с помощью фликр апи, там возвращаются совершенно рандомные фотки, крипота какая то. Откуда гугл берет фото, как на пикрелейтед?
Есть ещё panoramio, вроде как, тоже можно искать фото по координатам, и наверное, им пользуется гугл. Но я не могу понять, как пользоваться их апи http://www.panoramio.com/api/widget/reference.html#PhotoRequest класс PhotoRequest подходит, но есть ли у них rest апи?
В google play services есть модуль для этого.
В асинктасках особенно хорошо видно, что Android API приходится адаптироваться к убогому java 1.6 синтаксису.
В техже лямблах, это можно написать гораздо короче и код будет более гибким и понятным.
ГЛАВНОЕ: приложение будет бесплатное и open source (исходники всего будут на github.com)
Приложение будет состоять из двух частей:
1) Android "плеер и каталог" адаптированный под телевизоры (управление пультом, размер экрана и тд).
Приложение будет написано на Kotlin, тк это современный и лаконичный язык.
2) Мини-сервервера, который будет выкачивать торрет и стримить видео.
Он нужен что бы не захламлять память (обычно ограниченную) на android устройстве.
Для кросплатформенности, сервер будет написан на ASP NET Core 5.0 (его плюс что он может работать без .NET/mono)
Сервер будет поставляться в нескольких вариантах:
2.1) Windows / Linux / OS X консольное приложение и которые будет хостить в себе мини-сайт.
У приложения будет простой UI для настройки (или конфиг-файл).
2.2) Настроенный docker контейнер, который можно будет в две команды развернуть на любом Linux сервере
2.3) Как часть Android приложения (в этом не уверен)
Плюсы для трекеров: будет по умолчанию включена раздача скаченного контента в пропорции 1:1
(после отдача будет отключаться, но можно менять в настройках).
К ПРОЕКТУ ПРИГЛАШАЮТСЯ ВСЕ ЖЕЛАЮЩИЕ
Пока проект, это только идея и можно выразить свои мысли по нему может спереть, я за конкуренцию
FAQ
В: Почему стриминг с трекеров?
О: Трекеры это огромный каталог и HD фильмов (многих из которых нет в магазинах) и их сложно заблокировать правообладателям.
В: Зачем мне участвовать в этом пректе?
О: Можно будет набраться знаний по современным технологиям (ASP NET Core, Kotlin) и праславиться.
ГЛАВНОЕ: приложение будет бесплатное и open source (исходники всего будут на github.com)
Приложение будет состоять из двух частей:
1) Android "плеер и каталог" адаптированный под телевизоры (управление пультом, размер экрана и тд).
Приложение будет написано на Kotlin, тк это современный и лаконичный язык.
2) Мини-сервервера, который будет выкачивать торрет и стримить видео.
Он нужен что бы не захламлять память (обычно ограниченную) на android устройстве.
Для кросплатформенности, сервер будет написан на ASP NET Core 5.0 (его плюс что он может работать без .NET/mono)
Сервер будет поставляться в нескольких вариантах:
2.1) Windows / Linux / OS X консольное приложение и которые будет хостить в себе мини-сайт.
У приложения будет простой UI для настройки (или конфиг-файл).
2.2) Настроенный docker контейнер, который можно будет в две команды развернуть на любом Linux сервере
2.3) Как часть Android приложения (в этом не уверен)
Плюсы для трекеров: будет по умолчанию включена раздача скаченного контента в пропорции 1:1
(после отдача будет отключаться, но можно менять в настройках).
К ПРОЕКТУ ПРИГЛАШАЮТСЯ ВСЕ ЖЕЛАЮЩИЕ
Пока проект, это только идея и можно выразить свои мысли по нему может спереть, я за конкуренцию
FAQ
В: Почему стриминг с трекеров?
О: Трекеры это огромный каталог и HD фильмов (многих из которых нет в магазинах) и их сложно заблокировать правообладателям.
В: Зачем мне участвовать в этом пректе?
О: Можно будет набраться знаний по современным технологиям (ASP NET Core, Kotlin) и праславиться.
>Он нужен что бы не захламлять память (обычно ограниченную) на android устройстве.
Зато вот на сервере нужна неограниченная память - каждый фильмец нужно загружать полностью, т.к. протокол торрента не гарантирует передачи данных по порядку (а наоборот).
>Для кросплатформенности, сервер будет написан на ASP NET Core 5.0 (его плюс что он может работать без .NET/mono)
Его минус в том что это кусок беты. Учитывая что даже виндовый дотнет проигрывает яве в перформансе - сомнительная затея.
Честно говоря не знаю (никогда не работал), пока идея была создавать ссылки вида https://???.mp4
Сейчас основная концепция:
"Удобный просмотра фильмом на стационаром телевизоре с Android TV"
С DLNA я так понимаю Android клиент вообще нужен, а это не совсем то чего хотелось бы.
> Зато вот на сервере нужна неограниченная память
Где-то точно нужна будет не ограниченная память (если не удалять сразу после просмотра)
И уж лучше это будет на сервере чем на Android плеер с 8gb памяти
(плюс nexus player не поддерживать карты памяти)
> не гарантирует передачи данных по порядку
Как минимум отдельные файлы (серии) можно качать с разным приоритетом
> Его минус в том что это кусок беты
Так то он уже несколько месяцев RC1, скоро уже RC2, а там уже и релиз.
Сам работаю с CoreClr еще с первых бет, перевел все свои бэкенды на него с полного .NET - полет нормальный.
>Сам работаю с CoreClr еще с первых бет, перевел все свои бэкенды на него с полного .NET - полет нормальный.
Ок. А теперь скажу по другому - допустим что я бомж/гость, у которого в наличии нетбук с 2 гб оперативки (1,5 которых под системой и прочим) и мобильным говном вместо процессора. Хочу такой, значит, посмотреть кинцо на телеке пока следующая серия качается.
А дотнет мне такой - погоди-ка челик, у тебя оперативка/батарейка не бесконечные, ты уж выбирай - стул с хуями или никакой.
К чему я вообще всю эту еботу написал - не надо тащить это говно на десктоп.
> допустим что я бомж
Тогда скорее всего ты не являешься нашей "целевой аудиторией".
А вообще для этого случая есть пункт (2.3) "Как часть Android приложения".
Это кстати интересный кейс, можно было бы продавать доступ к уже настроенным серверам,
хотя вряд ли те кто пользуются торрентами, будет за что-то платить :)
>Тогда скорее всего ты не являешься нашей "целевой аудиторией".
Откидываешь 2/3 целевой аудитории андроеда?
>хотя вряд ли те кто пользуются торрентами, будет за что-то платить :)
Ну так все умные люди уже давно на f2p модель монетизации перешли. Хош жрать говно - не плати и смотри рекламу. Не хош - ну будь уж так любезе раскошелиться.
>А вообще для этого случая есть пункт (2.3) "Как часть Android приложения".
Втройне хуевая затея. Тебе нужно одновременно качать >мб/сек, декодировать видео и слать его на телек. Пользователя сборщик мусора очень быстро порадует.
>дотнет проигрывает яве в перформансе
Можно немного proofs? На винде он разве не выигрывает по понятным причинам? А то у меня есть один знакомый латентный дотнетчик, работает на джаве, а когда один раз поделал что-то на дотнете сразу обосрался, но кончает радугой от C#, хочу его потралирвоать.
Ни черта не понял.
1) Приложение под Android TV, или android как пульт?
2) Сервер, который скачивает чанки, отдает чанки, которые стримятся. Что это за пиздец будет?
Я вообще не против принять участие, но что-то как-то все мутно.
Вангую ты обосрешься.
Тебе не нужен сервер, ты можешь локально выкачивать торренты нужный кусок и локально же этот кусок стримить на локалхост по тому же dlna, чтобы другие плееры его хавали.
> 1) Приложение под Android TV, или android как пульт?
Есть такая приставка Android TV, у нее уже есть свой пульт.
Нужно для приставки (там стоит обычный Android 6.0) приложение написать.
> 2) Сервер, который скачивает чанки,
Сервер НЕ отдает чанки android клиенту, он выкачивает файл целиком и потому уже их стримит.
Android клиенту приходят HTTP ссылка уже на целиком скаченный файл.
> Я вообще не против принять участие
Попробуй прочитать еще раз описание
В гугле пруфы. Правда графики - всегда говёная вещь если показывать их человеку крутящимуся в этой области, вот например реальные пруфы:
ШINDOWS
https://www.techempower.com/benchmarks/#section=data-r9&hw=peak&test=plaintext&s=1
Божественная бубунта:
https://www.techempower.com/benchmarks/#section=data-r11&hw=peak&test=plaintext&l=6g6
> Тебе не нужен сервер, ты можешь локально выкачивать торренты
Вообще-то я и так предлагаю сервер который будет локально запускаться на той-же винде.
При использование DLNA нам Android клиент не нужен.
Хотя у Android клиента есть преимущество:
1) проще первоначальная настройка
2) будет удобная навигация по файлам
3) просмотр описаний (взятых с трекеров) и управление закачкой
==========================================================
==========================================================
Вообще можно сделать два отдельных приложения:
1) Локальный сервер который стримет в DNLA (сдесь вообще не нужен Android) или через Android приложение.
2) Android приложение с навигаций/описание/управлением.
Украина.
Говно твои пруфы, плеинтекст отдавать, охуеть. Давайте я тоже tcp сервер напишу, который будет отдавать статичный текст и мериться против чего-либо.
В шарпосервее дохуя абстракций на абстракциях абстракциями погоняет, еще и в модульном core.
Я конечно не удивлюсь, если кор в нормальном юзеркейзе проебет, но сравнивать его в указанном тобой как-то глупо ящитаю.
Никому твой локальнозапускающийся виндосервер не нужен будет.
Хочешь аналог попкорнтайма, так пили, но чтобы это все крутилось локально на девайсе.
На девайсе качаешь торрент файл, на девайсе получаешь данные от пиров, на девайсе показываешь в собственном плеере, либо рестримишь по какому то протоклу в уже установленные плееры.
Алсо, тот же битторрент клиент умеет выкачивать файлы последовательно и рестримить в плееры.
Ну спасибо за ссылку на готовый продукт, а в этом приложение есть прон?
Я правда думал не про глобальную базу фильмов, а конкетно под релизы парочки определенных трекеров.
В любом случае и для конкурентного продукта думаю найдется местечко.
> все крутилось локально на девайсе
А что делать с местом, на Google Nexus Player всего 8GB (из которых половина занимает система)?
В Google продуманные чуваки сидят, специально место урезали что бы только стриминг был.
Даже если как-то стримить "на лету", все равно нужна локальная базу "любимых" фильмов.
>>640368
Около 10 бачей за приложение, моя помощь с дизайном.
Я не сильно шарю в расценках, но мне сказали что это нормально для начинающего.
Я его не юзал. Но шуму он наделал.
>>640387
> на Google Nexus Player всего 8GB (из которых половина занимает система)
Хранишь только те данные, которые тебе нужны в данный момент. Т.е. текущее место воспроизведения + 5 минут кэша. Это вопрос 500 мегабайт хорошего рипа.
> локальная базу "любимых" фильмов
Локальная база формируется только названием фильма и его магнет ссылкой, что требует аж 1 килобайт на фильм.
> Хранишь только те данные, которые тебе нужны в данный момент
А потом мы добавляем перемотку и вот уже совершенно не тривиальная техническая задача.
Или переключение между сериями будет "ой подождите нужно хотя бы 100 mb скачать, идите чайку попейте".
> Локальная база формируется только названием фильма и его магнет ссылкой
В таком виде локальная база вообще не нужна, если будет поиск по трекерам.
Нужны именно скаченные фильмы.
Если Popcorn Time заточен под стриминг, то с хранилищем у нас будет хоть какое-то конкурентное отличие.
а ты няшный?
> ой подождите нужно хотя бы 100 mb скачать, идите чайку попейте
Ну а хули ты хотел? И рыбку съесть, и на хуй сесть?
Я еще раз говорю, локально пердолить сервер будут единицы, а свой собственный ты не окупишь.
И да, попкорн заточен под стриминг.
Ну если его там будут именно учить то нисколько. Но в данном случае его учить не будут.
Учить не будут, но практика и опыт который потом можно будет показать у него появятся, еще и деньги.
1 год и 4 месяца опыта? Звучит как пизда.
Ну я вот первую хуйню делал без опыта, но сделал, и получил вполне хорошие деньги.
http://pastebin.com/Z0u1JEzn
Округли до 3 года
1) Там есть куча промежуточных параметров,
либо называй имя параметра для лямбы
1.1.1) thread(name = "TestThread3", block = { keker.invoke() }).start()
1.1.2) thread(name = "TestThread3", block = keker).start()
либо вставляй вне скобок
1.2.1) thread(name = "TestThread3") { keker.invoke() }.start()
1.2.2) thread(name = "TestThread3") { keker() }.start()
2) Таки да, есть перевод лямбд в функциональные интерфейсы, обратное не разрешается.
Функция thread просто хелпер для создания, если нужны именно runnable, создавай через конструктор:
Thread(kek, "TestThread4").start()
Иди ты нахуй с таким разводом.
10 баксов бля.
Я лучше сам кому-то из треда 10 баксов дам если что-то нормальное напишут.
Работу он предлагает. Просто иди в задницу.
Спс, уже разобрался, я так понял метод thread не очень полезный, так как плодит постоянно анонимные классы, которые экстендяд треды.
Вызвать метод активити.
Поясните ньюфагу: как именно передается управление сишному коду в этом примере? Сишный код компилируется в .so, затем подгружается из жавы с помощью System.loadLibrary, после чего ищется функция с условленным именем (android_main) и вызывается? Так?
Мне кажется первым вызывается метод ANativeActivity_onCreate, так как собственно это Активити и указанно как лаунчер в манифесте.
А, действительно. Код по ссылке немного отличается от того, что у меня.
Но это не так важно. Меня больше интересует, запускается сначала жвм и подгружает so или управление непосредственно передается эльфу?
Конечно сначала запустится JVM, точнее она никогда и не спит. А потом увидев какая хуйня метод main, которого нам никогда не увидеть подгрузит .so и сделает вызов в JNI
Может быть дело происходит не в main, а в Context'е, там где есть доступ к ActivityManger'у и там он решат какие вызовы куда перeдовать и передает вызовы в JNI.
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image"
app:layout_widthPercent="100%"
app:layout_aspectRatio="178%"
android:adjustViewBounds="true"
android:src="@drawable/moscow_1"/>
<TextView
android:layout_below="@+id/image"
android:id="@+id/info_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Moscow" />
</android.support.percent.PercentRelativeLayout>
Картинка не появляется, а если app:layout_widthPercent="100%" убрать и добавить
android:layout_width="match_parent", то размеры остаются такими же
теперь заработало, ебаная студия
Посоветуйте источник знаний. Посмотрел все курсы startandroid, devcolibri, metanit, и даже что-то понял.
Но все подобные курсы топчатся на самых азах. Подкиньте более углубленный курс.
Благодарочка
Android Developers - https://www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg
Google Developers - https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw
Нахуй это нужно, когда есть android-binding
лол норм лаг
Пикрелейд андроид наяривает мороженку с говном? Весьма тонко.
И ещё вопрос: как для установщик даты - дейтпикера оставить только выбор месяца, без дня?
Благодарю.
Я скачал приложение по доставке еды:
https://play.google.com/store/apps/details?id=com.eat24.app
и разобрал его. Так там 150 layout files 50 активити и блять чего только нет. smali хуй прочитаешь.
1)Где и как посмотреть на структуру проектов, понять как блять писать то нужно?
В одно конторе сказали что у меня есть критические ошибки в коде.
https://github.com/lectricas/fixedrec_android
вот мой говнокод.
2)Скажите, что там у меня не так.
Спасибо.
Что они успели посмотреть, просто осhе много кода что бы взять и так сказать где там ошибка.
Ну короче единого гайда нет, главное правило использовать фрагменты для UI предпочтительней чем активити, активити могут упростить разработку навигации.
1) apktools + http://stackoverflow.com/a/5657474
2)
Леш, я что-то вообще не понимаю что твой код делает, где конкретно бизнес-логика/u]?
Тонный шаблонного кода, за которыми ни черта не разберешь (нет что-бы писать на Kotlin).
Тыкни меня хотя бы в то место где ты запросы к вэбу делаешь.
при чем здесь Kotlin вообще - хватит его форсить.
Как строить бизнес логику я не знаю.
Там же указаны название package-ей - тот что с вебом наверное называется sync.
И декомпилировать полностью не получится - лучше уж smali читать.
В смысле? apktools как раз вы выдаст тебе каталог со всем smalli.
Хотя с dex2jar можно apk просто распаковать и скормить ему classes.dex
https://play.google.com/store/apps/details?id=nl.sogeti.android.gpstracker&hl=ru
ссылка на маркет.
https://code.google.com/archive/p/open-gpstracker/source/default/source
исходники.
Хочется спросить нахуя так много файлов? Там еще есть по ТЫСЯЧЕ строк кода блять. А приложение делает всего нихуя. У меня гораздо скромней получилось еще и с синхронизацией и аккаут менеджерами всякими.
Так вот это называется бизнес логика или как?
> при чем здесь Kotlin вообще
Ты просто еще маленький и не понимаешь что писать меньше кода это лучше.
> Как строить бизнес логику я не знаю.
Ну ты хотя бы отдели ее остальных классов, что бы спагетти не получались.
Погугли SOLID и конкретно Dependency Inversion почитай "чистый код"
> вебом наверное называется sync
На самом деле не очень это очевидно.
Да и вообще зачем ты тащешь это старье (AbstractThreadedSyncAdapter) из Android 1.5
Есть же JobScheduler / GcmNetworkManager?
> лучше уж smali читать.
Ну ок, если для тебя smali понятнее чем *.class
>>642677
Дизайн из начал 2010, давно я такого не видел
и что делать со смали?
Это называется "жява и её идеология".
> Ты просто еще маленький и не понимаешь что писать меньше кода это лучше.
А по мне так он уже неплохо понимает, что нет смысла писать на языке, за который не платят.
Про solid и его последний принцип я прочитал. Как его применить к моему приложению? Дайте кто нибудь исходники же нихкя не понятно без них. Ну пишем мы интерфейс и что. К какой заднице его прикручивать? Мне нужно то всего одно прилежение которое точно написано по канонам что бы даинуть дальше
> solid и его последний принцип я прочитал
> Ну пишем мы интерфейс и что
чет не очень ты понял, иди книжек наверни по проектированию/паттернам, а то так и будешь даунить
Как же вы доебали. С разговорами о работе в соответствующие треды и /wrk съебите, это тред о разработке. Как программисту знание нового языка с новыми парадигмами никому не помешает, а так же точно не уйдет в минус если вы на собеседовании с умным ебалом расскажите про какие нибудь вакуумные nonnullable типы и чем это ахуенно.
Поищи в документации про этот таймеикер что нибудь. Если не получится установит интервал 10 мин то пиши свой пикер
Анон, подскажи, стоит ли делать в Unity или начисто можна писать или какие другие инструменты использовать, в идеале порекомендуйте ресурсы/книги где можно б их изучить.
Пробую так:
Gson gson =
new GsonBuilder()
.registerTypeAdapter(City.class, new WeatherDeserializer())
.create();
return new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(CLIENT)
.build();
но случается StackOverflowError, что делать?
а почему ты не хочешь создать Model и подставить ее в new Gson.fromJson(Model.class...)?
там много массивов и они друг в друге
кстати что насчёт cocos2d?
ну кароч я почитал и понял что фреймворк сам нам говорит какие шаблоны использовать. А точнее их там 4 что ли. Главный это MVVM, где Activity это ViewModel например. Все происходит при помощи отправки сообщений и широковещательной рассылки - это еще 2 шаблона. Content Provider это позднее связывание и на счет него я не до конца уверен - эти ебучие URI вообще мне не нравятся. ORM хоть тупой и медленный но зато сахар и не нужно писать кучу какой-то хуйни. Так вот, где тут должна хранится бизнес логика? Зачем мне наворачивать паттерны если они не нужны? В общем поясните
в общем ты еще школьник и тебе лучше начать с чего-то попроще. Попробуй поиграть в gmod с другом, полепить модельки и повеселится. Потом попробую наклепать что-нибудь на unity.
А вообще тебе в https://2ch.hk/gd/ (М)
а понял, я думал Deserializer надо подключать прямо к ретрофиту d ,bkltht
спс, насчёт гарис мод не очень интересует, мне бы больше самому порисовать и покодить
Сегодня ты узнал больше, чем за все свои 12 лет жизни.
Прочитай "Code Complete" и через полгода приходи осудим еще раз.
Это не поможет старым версиям, конечно рано или поздно 8 бы появилась и так, она и так на лолипопе, но легче от этого не становится, так что retrolambda наше все.
Как будто от openjdk появятся нормальные лямбды, zip у стримов и что-то лучше @NotNull.
Можно сколько угодно заниматься самовнушением, но выход только один.
Ну ты сам подумай, вот представь себя на месте жуна, который решил о бля ща короче пишем на котлине, а ему потом пистон вставляют.
>>643375
Меня пугает то что я практически нихуя не понял. Обьяснись и дай ссылку на инфу если можно.
Тот андроид биндинг который я видел, односторонняя хуйня из xml.
http://developer.android.com/intl/ru/tools/data-binding/guide.html
1) Observable Objects (A class implementing the Observable interface will allow the binding to attach a single listener to a bound object to listen for changes of all properties on that object.)
2) ObservableFields
И вот я думаю что лучше, похоже поля подходят для более простых объектов, иначе лучше ручками дописать.
Мам, где моя кодогенерация на аннотациях, ну маам!
Спасибо. Слишком сонный осилить сейчас.
Но интересно можно ли эту штуку в проектах юзать и не будет ли в ней подводных камней.
Уточнение: Я ниразу не программист, но налабать привет_мир, наполовину скопипастив думаю осилю. Так что не нервничайте.
Есть один вопрос:
Мне надо посылать одной хуитке команды с лопаты и читать что она там говорит на лопату. Мой хитрый план.
Берем Qt и прочую муть. И вот эту фигню, сразу ссылка на пример использования: http://www.modbusdriver.com/doc/libmbusmaster/examples.html#example2
Лепим в QtCreator ебло и логику, собираем, отправляем на телефон и радуемся.
Запашет ли эта библиотека под андроидом? Кьют то запашет, инфа около соточки.
нужно сделать слайдшоу с двумя кнопками. сделал по демке http://developer.android.com/training/animation/screen-slide.html
но сейчас пришел к выводу, что OptionMenu + splitActionBarWhenNarrow -- днище, а не решение.
мне надо какой-то хитровыебанный лейаут и две кнопки? какой лейаут и как правильно выставить высоту? и еще бы titlebar убрать нахуй. анон помоги
Сделай кнопки при помощи linear и framelayout.
Сделай background selector, чтобы кнопка нажималась.
Это самое гибкое решение.
Двачую этого. Лучше java для детей, имхо
Ну вы же погромизды... А ещё у меня чайник потек и у тугосери планшет не играет. Он его об стул ебнул. Подскажите, как починить? На что нажать, чтоб все заработало? А то в мастерских меня нахуй шлют, негодяи!
Если хочешь чтобы графика была системная то никаких проблем, поддерживать можно безболезненно хоть с api > 4, но если менеджеры заебут с единообразным материалдезайном, навигейшн дравером и прочей хуйней, то это да, полный пиздец.
Конечно правда.
спасибо, попробую вечером
Выкинуть это китайское говно и купить Pixel C.
Научись писАть.
Щито?
Ну едси ты скомпилишь его в байткод то может и норм, то опять же ты будешь сильно ебаться с версткой и тд. Если же он будет каким-то интерпритируемым, то зашивайся, приложение будет работать медленно. Пизудй на тостер там таким уже пояснили.
Прочитал head 1st java, могу скомпилировать из сосноли но не знаю как работает ИДЕ. Стоит ли заморачиваться на всяких сборщиках проектов итд типа ant, maven итд? Или просто отдаться ИДЕ и хуй с ним? Хотел сделать каких-то проектов под десктоп для опыта, но сильно вникать не хочется.
Надо ли заморачиваться с gradle и всей экосистемой андроида? Как-то неприятно не понимать что происходит за сценами.
Кто еще не приобщился советую не терять время, что бы к моменту релиза уже быть экспертом.
> что бы к моменту релиза уже быть экспертом
Нахуя? Судя по всему, единственное место, где на нем пишут - Авито ну и сам джетбреинс.
В любом случае с системой прийдется заморочиться, десктоп - нахуй, не сильно поможет. Ну и конечно хорошо понимать чо там в gradle происходит. Но это опционално и приходит после наворачивания тонны библиотек.
Двачую. Вот реально, это такой пиздец. Можно было бы нормально def сделать например.
А в чем проблема? Вас в детстве вчера fun обидел?
В Scala и Swift используется func и тут тоже самое.
Аргументированно :facepalm:
Странная у тебя хотелка. Дизайн дай.
Хотя думаю, ты хочешь, чтобы были точки, а потом по нажатию на точки, появлялись остальные кнопки. Делаешь эти точки отдельным пунктом меню в отдельном меню. При нажатии на их, инвалидируешь менюху и подставляешь другое меню с точками и остальными пунктами.
Ну, у тебя сами вопросы лежат в вьюпейджере. В фрагменте вопроса ебись как хочешь с разметкой. Т.к. там переход на ПРАВИЛЬНО программный, то либо меняешь визиблы у ПРАВИЛЬНО и пунктов ответов, либо через ОбжектАниматор плавненько возишь вьюхи за / на экран.
Я с сервера первым запросом получаю некий список, потом для каждого элемента из списка мне нужно делать дополнительные запросы.
В итоге сейчас это выглядит так:
API.getStringObservableFromServer(URL)
.map(... парсим стрингу, получаем список объектов ...)
.flatMap(Observable::from)
.map(... из каждого объекта получаем другой список объектов ...)
.flatMap(Observable::from)
.flatMap(o -> API.getStringObservableFromServer(o.URL))
.map(... парсим полученную стрингу ...)
Проблема в следующем: этапы выполняются синхронно из-за чего у меня сжирается хуева куча памяти (каждый API.getStringObservableFromServer возвращает String размером в мегабайт). Можно ли добиться полной асинхронности между этапами, чтобы сборщик мусора мог убрать лишние строки?
Потому что ресайклервью располагается за тулбаром, а не ниже него.
От асинхронности обычно бывает только хуже (в неудачном случае у тебя все запросы одновременно выполняться).
По идее у тебя и так должна очищаться память у уже отработанных элементов.
Может у тебя утечка где-нибудь?
> .flatMap(o -> API.getStringObservableFromServer(o.URL))
> .map(... парсим полученную стрингу ...)
На последнем этапе у меня около флетмап выдает мне около сотни запросов всего. Сначала полностью выполняется flatMap, а потом уже map.
Мне по-хорошему наверное надо сунуть в flatMap - API.getStringObservableFromServer(o.URL).map(...), да?
>>645293
Понял в чем проблема.
Я использовал собственный пул потоков в 8 шт на subscribeOn и observeOn. В итоге в его очередь встали сначала сетевые запросы, потом обработка.
Поставил на сетевые запросы io(), в итоге получил 300 потоков в конце.
В итоге остановился на конфигурации - subscribeOn свой пул потоков для сетевых запросов, observeOn computation().
Была похожая проблема io шедулер + flatMap овердохуя потоков.
Нагуглил совет в таком случает использовать flatMap(..., N)
Второй параметр (N) ограничивает максимальное кол-во потоков.
Однако, харкач, у тебя есть шанс спасти товарища Цукерберга от предварительной госпитализации. Для этого ты должен помочь мне решить ну очень нубскую проблему.
Есть одна кнопка, по нажатию на нее, если человек не залогинен, вылетает окошко фб. Если залогинен - то действие 2.
Вот код:
http://pastebin.com/R4n5hj8x
Соль в том, что сдкинитиалайс прописан еще в онкрейте, но почему-то не видится. Дефолтная логин-кнопка работает безотказно прямо как твоя мамка
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
Иди лучше интернеты читай, чем клянчи на книгу, которую положишь на полку.
> сдкинитиалайс прописан еще в онкрейте
В onCreate чего? Application? Activity? Ты в initialize передаешь id приложения (явно или неявно через ресурсы)?
Проверь в строках наличие facebook_app_id если инициализируешь FacebookSdk.sdkInitialize(getApplicationContext());
Если нет, то нужно передавать id вторым параметром.
Да я, на самом деле, еблан. Профиль-то не записал никуда. Кто-то добрый написал метод fetchProfile, который я впихнул и все заработало.
>>646040
Ошибка вообще была в онклике, профиль никуда не писался. Обнаружилось вообще только при построчном дебаге.
Ну вот, а я уже настроился в пол второго ночи ехать ебало бить :с
>>646045
Там надо быть осторожней со сторонними запросиками, вовремя не обновишь и получишь банан.
Алсо чуваки что за фигня с плей сервисами. Нужно было включить аналитику, ну думаю хуле делов-то, два раза успешно встраивал, почему бы и на третий не получилось? Добавил все шняги в манифест, подключил грейдловский плагин сервисов, все ключики проверил в консольке. И тут БАЦ, пишет мол не хватает хуйни в манифесте. Хиты логаются локально, а дальше не идут. Смотрю на другом устройстве - всем все отправляется, но в логе все равно варнинг, мол не хватает хуйни в манифесте, у кого-нибудь было?
SettingsActivity Телеграма.
https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.javaПочему так?
Почему он не использовал switch?
Кто такой DrKLO? Почему он один пишет телеграм блять? Почему он еще живет в рашке если пишет такие проекты?
Кароче поясните где блять в этом проекте "БИЗНЕС ЛОГИКА".
Какие шаблоны программирования он использовал и как разобраться в этой куче говна?
Телеграмм довольно говнистый в коде, не лучший проект)))
На телеграм забей на самом деле, там гений граничит с долбоебством. Т.е. в любом из двух случаев не читабельною
что бы на новых девайсах НЕ запрашивать пермишен "write_external_storage"?
У меня небольшой обосрамс вышел с контентом, теперь боюсь выкладывать. Как они вообще проверяют музыку, пикчи? Бот как и на ютубе? Влияет ли на что то написаная в about инфа о лицензии? И последнее, если музыку не блочат на ютубе, какова вероятность что ее залочат на гп?
Выложи, заблочат так заблочат, акк банить не будут сразу.
ImageView ava = (ImageView) view.findViewById(R.id.avatarka);
ava.setImageURI(Uri.parse("https://pp.vk.me/c629127/v629127625/2038f/7n8YdB8cIUY.jpg"));
выдает вот такую ошибку:
I/System.out: resolveUri failed on bad bitmap uri: https://pp.vk.me/c629127/v629127625/2038f/7n8YdB8cIUY.jpg
ЧЯДНТ и как получить пикчу правильно ?
Хотел было написать про то, что гуглы могли бы и осилить написать imageView, умеющий грузить картинку себе из сети, ведь это одна из самых распространенных задач, но вспомнил, что они такой уже написали, грузящий через volley.
ИмейджВью это вьюха, она и не должна уметь грузить из интернета.
Есть же вроде стандартный какой-то имейджлоадер. Но я его даже не юзал никогда.
Я про пикасу не слышал даж. Дело в том что имейдж я получаю через вкАпи. Но спасибо за совет. Я погуглю.
я сейчас пришел к решению делать все элементы кастомными, ибо нехуй. Табы стали кнопками с кастомным фоном в linear layout, тулбар закастомил для своих элементов управления. Советую делать так же
материал , к слову, удобен и хорош. Придрочиться и на конвейер
фрагменты ?)
чекни за вызов логина, он может быть не там, где нужно и как следствие - не триггериться
дерьмо полное, нихуя не расписано за кастомные фб кнопки, в рот их ебал с их login манагером. Скушали у меня чуть ли не день времени на кастомизацию кнопки
быстрее чем свич, вроде как
ну, я вроде как помнится, читал тамошний код, не то чтобы совсем треш
прочитать vk api
Чуваки , объясните нахуя нужеен RxJava, чем лучше EventBus. Только нормально, для дауна. Хули сейчас все с этой RxJava носятся
В Яндексе бля все на RxJava помешались, пиздец. Хули, нахуя, не пойму. Это же извращение пиздец
Вы видите копию треда, сохраненную 3 марта 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.