Это копия, сохраненная 11 августа 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий тред тут:
https://2ch.hk/pr/res/774895.html (М)
Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом.
А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный. Куплено Microsoft. Теперь есть бесплатная версия.
5) BugVM (RIP RoboVM) - идейный наследник ксамарина, а теперь уже и его часть но на Java. Учитывая что Microsoft убила RoboVM, встречаем опенсорсный BugVM.
Отдельного упоминания стоят:
1) Kotlin - Java от JetBrains, новый и стильный язык, куча синтаксического сахара прилагается, есть стримы и делегаты. Хотите писать на котлине? Добро пожаловать в JetBrains и Avito.
Где брать инфу:
Интернет-ресурсы
1) http://developer.android.com/index.html
Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта.
2) http://stackoverflow.com/
Пользуюсь чаще чем первым сайтом. Можно найти практически все.
3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.
Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development - в отличии от остальных книг она обновляется, а так как ведро не стоит на месте а хуярит семимильными шагами, то я бы и не советовал другие книги.
А теперь, так как заебали уже всех, гайд для:
>"Я хуярил на делфи 5 лет назад а теперь хочу вкатится в андроид":
Чтоб быстро хоть как-то вникнуть в джаву берешь и гуглишь javarush или codingbat.com.
Можно Эккеля "Философия java" почитать.
Или Хорстманн "Java. Библиотека профессионала" до 7 главы.
Что тебе нужно понять в самой жабе.
Энтри лвл.
1) ООП - сам принцип нужно именно понять, так как ооп язык.
2) Типы данных. Примитивы и ссылочные.
3) Структуры данных - Массивы/коллекции - без них никуда. Полезно почитать про алгоритмы работы коллекций и их сложности.
4) Дженерик типы, они как раз юзаются в коллекциях.
5) Классы/интерфейсы и все вытекающие.
Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.
Дальше
6) Потоки ввода/вывода (streams). Не путать с тредами(threads).
7) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable.
8) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной.
Уже сделаешь что-то нормальное.
Дальше.
9) Работа с Sqlite, нужна будет в любом случае.
10) Работа с json.
Привет клиент-серверка.
Пишите в треде что добавить
Я кстати на новую работу вышел, можете поздравить. Правда проект говно и написанный без мною любимых либ(даже ретрофита нету ебать). Но хоть деньги дают.
Алсо, вообще уже не верю что можно попасть в годную команду с годным проектом.
Хер с котлином. Проект выглядит словно его писали динозавры не читавшие ничего по ведру с 2013го.
Ну так можно же миксовать.
Там экстеншенов добавить, а еще здесь null-safe оберточку - и вот уже не так противно.
P.S.
А вот обмазывание либами - это от лукавого (как в JS фреймворки - компенсация кривого языка).
В котлине все решают расширения + свои DSL + ну может еще "чисты функции" (но это уже функ. изврат).
анончик грац тебя. раскажи что делают в офисах я же так понял ты в офис какой то устроился? программисты под андройд? я нюфаг который только учится и поетому очень интересно.
И вот ради этого надо было перекатывать :facepalm:
Бампаю вопрос. Другой анон.
Работаю на джаве в офисе и представляю себе что делаю джависты в офисах- большие тырпрайз проекты жирным компаниям. Но ведь андроид- это небольшие приложухи. Что делают офисы- много мелких проэктов? откуда они берут заказчиков? вообще как то все слишком абстрактно в сфере андройда для меня...
Как-то давно пытался сделать приложение на андроид, обмазался мануалами, начал кодить и понял, что это пиздец как сложно. Можно щас как-нибудь просто накодить как в бейсике простую программу?
Разработка под ведро — это простой макакинг. Проще некуда. Если ты это не осилил, то не лезь вообще в программирование.
ПОКА ТЫ ТУТ ЗА СВОЕЙ ДЖАВОЙ СЫЧУЕШЬ, ЕРОХИН-ТО КОТЛИН РАЗРАБАТЫВАЕТ
https://github.com/JetBrains/kotlin/commits/master?author=erokhins
Я не собираюсь в программирование, хочу просто сделать программку на андроиде с уровнем знаний бейсика, это возможно?
Я не собираюсь работать инженером. Просто хочу сконструировать самолёт с уровнем знаний школьного учителя физики, это возможно?
Я не хочу сконструировать самолёт, я хочу слепить бумажный самолетик.
От лукавого это юзать апач клиент от которого даже Гугл отказался.
>>790330
>>790348
>>790356
Спасибо, вечером попробую расписать как оно на мой взгляд выглядит. Не хочу ш ку вариться об двачи на работе
сори за оффтоп
В андроид треде теплится. Видел сегодня вакансию на швабре где котлин был бы плюсом.
Не поверишь, JetBrains хочет свой язык разработать.
Так же Java 7 скоро выходит, надеюсь быстро до Android доберется.
Никаких. Более того — хттпурл это и есть окхттп, только всегда устаревший и сильно кастрированный.
По секрету скажу, в okhttp ты не получишь никаких преимуществ если
1) специально не настроишь nginx на HTTP 2.0
2) раздобудешь SSL сертификаты (советую бесплатный https://letsencrypt.org/ )
Еще у okhttp баг/фича что он требует последней версии OpenSSL и приходится nginx из сорцов собирать.
А когда настроишь (и убедишься по логам что HTTP 2.0 работает),
то очень удивишься что это не дало видимого ускорения.
Но в нем удобные билдеры и gzip ихэз коробки, вместо изобретенных мною велосипедов-билдеров хттпурла и gzip.
> Более того — хттпурл это и есть окхттп
> gzip ихэз коробки
Кто тебе сказал что в URL нет gzip?
Ванговал тралля сразу.
> А про остуствие удобных билдеров и интерсепторов тактично умолчал, ок
Стоит их упоминать?
На Kotlin такой DSL/билдер можно написать строк за 20-50 и столько же на интерсептор (если я буду его вообще юзать)
> Можно написать
В этом тоже есть проблема, ведь место унифицированного интерфейса сделанного в либе, мы получаем тысячи решений на каждом проекте свой.
А на другой стороне мы получаем >>783521 (OP)
Когда каждая функция берется из готовой-либы, но мы же не JS-макаки правда ведь, анон?
>>790684
А в чем проблема, если на современно языке это займет в 5 раз меньше кода?
Тем более в билдерах нет ни какого откровения/сложных алгоритмов.
Чому она доебывает меня с деприкейтед методом? Ведь именно он вызывается на моем 4.2.
Может я что то не делаю?
> в билдерах нет проблемы
Проблема только в потраченном на них времени.
> мы же джс макаки
А ты дохуя не макака. 90% приложений типичная гуй оборетка вокруг рестопараши, и нет никаких проблем в использовании очереденой либы, которая ускоряет формошлепство.
Ты юзаешь suppert-v4 fragments?
Если нет, то переходи на них.
Если да, то можешь спокойно перегружать onAttach(Context).
Как видишь в базовом классе (пикрил) один фиг вызывается onAttach(Context), а для совместимости он еще вызывает старый метод.
Я верю, что ты очень хуёвый шутник; я требую пояснения, почему так делать нельзя.
Куда копать?
Фреймлэйаут, в нем карточка и потом отдельно ресайклер в нем же. Ну или релатив.
Чем конкретно вы занимаетесь?
Тысячи миллионов приложений уже написано, зачем нужен еще один модный органайзер/мессенджер?
Кто и за что вам платит деньги?
Как нашли работу? ваканский джунов очень мало
двачую
А по поводу того, чем буду заниматься...
Компания работает с одним большим проектом уже давно, как я понимаю, постоянно добавляя новый функционал и исправляя старые баги. То есть речь не о нескольких маленьких приложениях.
В фирме есть Android, iOS и WEB отделы, как я понимаю.
Есть небольшой опыт работы, но с другими ЯП, Java и Android больше как хобби, есть несколько учебных проектов, очень простых, уровня уроков с startandroid. Однако знаний хватило на то, чтобы выполнить тестовое задание (получение и отображение данных с одного API, вывод списка и экрана с подробной информацией). После выполнения задания позвали на собеседование, где задавали вопросы конкретно по заданию (про адаптеры, плюсы ретрофит и т.п.).
Вообще я считаю, что мне повезло найти подобную вакансию. Вообще, джунов ищут компании, которые отчаялись найти опытных разработчиков в городе, как я понимаю.
ОП, он же я как раз пошел на новую работу, позиция мида.
Ебет то что и всех прогеров, чужой кривой код а не кривым он быть не может, если там что-то сложнее листа, ебанутые заказчики которые в ротяку ебали материал дизайн и заставляют писать хуйню, сроки за которые ты должен делать кастомные вьюхи и в результате тупо ищешь либы.
Сейчас у меня еще и дико жопа горит так как нужно впиливать новый функционал в проект который я вижу второй день, а то и меньше.
Такое в общем.
Ой блять, вортон хоть и норм мужик, но он уже зазнался видимо, пускай лучше расскажет как интерфейсы называть.
Вообще после такой статьи у меня впечатление словно у него максимализм какой-то. Все хуевое везде он сделает лучше.
Причём тут зазнался? Он ведь не просто написал ДЕЛАЙТЕ КАК Я ГОВОРЮ, он привёл аргументы. Чего, кстати, не сделал ты.
> Сейчас у меня еще и дико жопа горит так как нужно впиливать новый функционал в проект который я вижу второй день, а то и меньше.
А что не так? Ты собирался два дня просто сидеть и читать код? Серьёзно? Как ещё ты можешь узнать проект, если не получишь реальное задание?
> не кривым он быть не может, если там что-то сложнее листа
Не слишком ли категоричное заявление? Если отовсюду воняет говном, то может быть это ты обосрался?
> Такое в общем.
Какое?
Wharton конечно идет нахуй ибо он ни фига не авторитет.
Но в принципе согласен с тезисами.
олдфажный android-developer
Я не вижу аргументов в его сообщении, я вижу "ящетаю". По сути он говорит, почему допустимо отказаться, но не говорит, почему это делать необходимо. Следовательно идёт нахуй.
> Тысячи миллионов приложений уже написано
А эти кукареки безработного дауна-ниосилятора или школьника.
Да, представь работаю на постоянку удаленно и даже договорился разрабатывать на Kotlin.
Программы пишу разные от брендованных "менеджеров личных дел" до игр на libgx.
Зарплата в USD.
P.S.
> Как нашли работу?
Первую работу (вообще без опыта) нашел на сайте вакансий четыре года назад.
Сейчас джуны НЕ нужны.
Ога, всегда были нужны, а сейчас стали резко не нужны.
>А что не так? Ты собирался два дня просто сидеть и читать код? Серьёзно? Как ещё ты можешь узнать проект, если не получишь реальное задание?
Могли бы дать баг фиксить первую неделю, на багфиксинге проект узнаеться чем при создании новых функций.
>Не слишком ли категоричное заявление? Если отовсюду воняет говном, то может быть это ты обосрался?
Да ты открой любую из гоярчолюбимых либ и почитай сорсы. Везде где есть реализация какой-то логики без комментариев - нечитаемая хуйня на которую тратишь по несколько часов.
Понятно что это может быть откровенно не говнокодерство, но это и не твой код, потому анальные боли обеспечены. (плюс везде есть куски которые писались на скорую руку и планировали рефакторить)
>Какое?
Смешанные чувства от новой работы.
Господа, планирую перекатиться с 1С НЕ ПОГРОММИСТ, ГОВНО, МОЧА, ЖОПА, ХУЙ на Жабу и ведроид соответсвенно.
Соотвественно реквестирую дельных и простых самоучителей, каналов на ютубах, торрентиков и прочего.
Какие языки будут востребованы в ближайшие годы (например тотже Kotlin), в какую сторону копать?
А чего там сложного, я за пару дней чтения dev.android уже слепил что-то рабочее.
Сейчас тебе насрут в уши, что джава умирает.
Но а вообще, все есть в шапке-оттуда и читай, но не стоит на джавараш, имхо.
Как по мне, путь в джаву и ведроид немного разные. ВО втором практика есть в шапке, а в случае с джавой я, например, вечно гуглил лабы студентов-айтишников.
А хуле в 1с не остался? Бабки же платят неполхие.
А если ты совсем начинаешь, то смотри, правда, в сторону жс.
> Kotlin
Ну раз просишь, тогда лови, няш.
https://kotlinlang.org - Основной сайт
https://try.kotlinlang.org - Online редактор
https://habrahabr.ru/hub/kotlin/ - HUB Habrahabr
https://habrahabr.ru/post/279667/ - Ссылки на доклады и подкасты
https://habrahabr.ru/post/278169/ - Интересная статья "Как себе выстрелить в ногу в Kotlin"
http://kotlin.link - Сборник ссылок по Kotlin (на английском)
https://www.reddit.com/r/Kotlin/ - Reddit (тут тоже можно узнать новости и ссылки на интересные статьи)
Видео с Youtube:
https://www.youtube.com/playlist?list=PLVe-2wcL84b8pj7VOoa-6L9Q0sDjibdoF
Конкретно под Android:
https://www.youtube.com/watch?v=VU_L2_XGQ9s
https://www.youtube.com/watch?v=dJscNr1silY
Платят примерно как погромистам на жабе,
но соль в стране и последних тенденциях, что возможно стоит отсюда съебнуть. План /б/ иметь под рукой, так сказать.
Пасибо ОГРОМНОЕ :3
Ну с нуля-то естественно, анончики выше же хотят с веб джавы перейти.
Пардон, соль-съебнуть с андроида? Почему?
Подскажи направления которые в ближайшем будующем будут востребованы и оплачиваемы?
Мнение СУГУБО личное.
WEB и мобилки. И там и там есть
1)js
2)java, c#
Как понимаешь, выбирая первое, ты не прогадаешь.
Я мало что знаю про котлин, скалу и прочее. Но знаю многим синьоров, которые советуют учить 1.
Бля, с утра пока туплю. Еще big data. Я бы вот так написал.
1)js
2)python
3)java, c#
Джава не очень для веба. Может, но немногие ее выбирают. Шарп же для мобилок, имхо, не очень.
Ну а питон-просто заебись. Мне очень нравится его простота и применимость в ML.
Но не воспринимай мои слова на чистую монету. ПОчитай статейки и лучше зарубежные. Сам я как хобби учил джаву, работал в области больших данных, сейчас перешел в it-консалтинг и вот подумываю учить андроид.
Ну да, я считаю, что в БУДУЩЕМ (~1 год) работы на шарпе будет еще больше.
ИЗВИНИ, СКОБАЧКЕ ОТКЛЕИЛИСЬ )))))))))))))))))))))
На самом деле спасибо за пояснения ребят, чуть позже еще поспрашиваю, наверн.
Ну только, мы надеемся, что не будешь злоупотреблять терпением и обратишь внимание на название треда в котором ты, а потом найдешь нужный <3
В их треде погляди.
>v4
Оказывается это рекомендуется и часто даже необходимо юзать саппорт вместо натива. Вплоть до апи21.
Удивительный мир андроид-девелопмента
Не до 21, а всегда. Ибо обновить support-library быстрее и проще, даже если вендор перестанет выкатывать обновления. Это же не iOS, где телефон через два года планово превращают в кирпич новыми обновлениями.
Пошёл нахуй, пидор. Ненавижу тебя. Сейчас пишем проект на ксамарине. И это такой пиздец, как же я его ненавижу. И тебя, пидораса. Какие же говноеды его проектировали? По сравнению с ним даже блядь WinAPI - красотища. Пиздец, блядь. Пиздец.
> Как изменить/расширить функционал ???View
Создаешь My???View класс и наследуешь его от ???View,
в нем добавляешь/изменяешь функционал вью как тебе надо.
>>791498
> Xamarin.Forms
Надо будет в следующим проект попробовать (если он будет).
Слишком много времени мне лень занимает отдельный UI для Android/iOS когда делаешь на Xamarin.Native
Пиздец. Уж лучше бы признался, что говно на вкус попробовать хочешь. Мне было бы менее противно с тобой в одном треде сидеть.
Болезный, ты о чем?
Да ты же просто даун-максималист-залетный из /b/.
(Включаю режим игнорирования.)
Предпочитаю anal plug. Идет в комплекте с Android studio.
Как бы мне создать инстансы всех используемых фрагментов заранее, но так, чтобы они не отрисовывались (были спрятаны) по умолчанию?
Никак. То есть, мы можешь создать инстансы фрагментом, но их методы жизненного цикла (onCreate() и пр.), где ты делаешь всю инициализацию, не будут вызваны, пока фрагмент не будет показан.
Если надо, фрагменты заранее инициализировать, используй ViewPager
Мы вам перезвоним.
Ninja - "Мы вам перезвоним"
Мне нравится такая градация)
Будет хорошо.
Пиши сам на фрагментах и пейджере.
Только вкатываюсь, поэтому, если есть аналоги получше - прошу совета.
1. Нет такого понять Kotlin для Andorid, есть несвязанные понятия Kotlin и Android
1.1. Kotlin учишь на https://kotlinlang.org/ , >>791259
1.2. Android учишь на https://d.android.com/training/index.html и по OP посту
2. Есть у меня купленная https://www.manning.com/books/kotlin-in-action - книга написанная самими разработчиками.
Это просто 99% переложение https://kotlinlang.org/ , так что книги по Kotlin НЕ нужны.
Тем более язык сейчас быстро развивается, там точно не будут описаны async/await и др новый фичи
d.android.com это же мутное гумно. В каждом втором ответе на стековерфлоу есть упоминание навроде "официальные источники гугла по этому вопросу очень невнятны / слишком кратки".
Никак. Можно сделать на сервере метод получения ключа при первом запуске приложения и в дальнейшем общаться с этим ключом и блокировать подозрительную активность на нем. Следить за слишком частыми запросами нового ключа с одного адреса.
Можно сервисами антидудоса воспользоваться, если только этого опасаешься.
Наверное, можно соорудить какой-нибудь механизм генерации на клиенте ключа связного с подписью приложения и засунуть его обфусцированным или бинарником во внутрь приложения. Такой ключ должен будет иметь короткий жизненный цикл. Черт знает насколько такое возможно и сколько времени бы заняло. При большом желании злоумышленник все равно разберется.
>>792115
Так же как и сломал. Потянул таб с надписью логкат вниз, он стал делить панель с монитором ресурсов, покликал туда-сюда вокруг, потянул заголовок панели логката обратно на табы и все вроде стало на свои места.
>>791784
>>792019
У меня сейчас сделано на базе ViewPager.
Не знаю насколько имеет смысл все фрагменты разом подгружать (у меня их 4).
В одном из них происходит выборка данных из базы, которая может длится ~10 секунд при помощи AsyncTask.
В другом находится GoogleMap, которая сама по себе некоторое время грузится, так еще и надо маркеры из базы загрузить.
При этом не имеет смысл ресурсоёмкой отрисовкой заниматься в тех фрагментах, которые сейчас невидимы.
ViewPager кажется слишком сложным решением для переключения 4-х фрагментов без свайпа.
Кто-нибудь использует Qt? Есть ли ему место в андроид-разработке? Какой профит он предоставляет?
Отвечу сразу - профита мало.
Разработка под андроид полна граблей и лишние прослойки здесь только добавляют новых граблей.
Используй Java или Kotlin.
2ГИС на Qt написан, например.
Для большинства приложений нет никакого смысла использовать Qt.
За последнее время много ебаной хуйни они сделали, к примеру такой баг, который еще ращ доказывает, что отключаемые разрешения это хуита редкостная.
https://code.google.com/p/android/issues/detail?id=213120
Большое спасибо!
Я бы сказал что это фича и вроде бы давно известная ("баг" 2012 года).
Если я отключаю нотификации, то и не хочу видеть тосты.
Это же пиздец какой-то - когда нет интернета - не соберешь проект.
Просто в отдельном классе бизнес-логики.
1) Качаю данные, сохраняю в базу, кидаю бродкаст.
2) Слушатель просто берет данные из базы.
И ни каких колбеков на активити из "долгих web операций (1)".
Но ведь тогда у нас будут проблемы с жизненным циклом, разве нет? Если во время выполнения запроса пользователь перевернет телефон, activity пересоздастся, сетевой вызов будет создан еще раз.
> ни каких колбеков на активити из "долгих web операций (1)"
Это да. Но если ты в свой класс бизнес-логики передаешь Context (а ты передаешь, раз пишешь в БД и кидаешь бродкаст), то у тебя ведь и есть ссылка на Context (т.е. на Activity), разве нет?
Копай в лог, который тебе выводят в студии в окошке снизу.
О! Спасибо.
О! Спасибо.
>сетевой вызов будет создан еще раз
Но так ты вызывай только при первом показе, когда в onCreate() передается null
>есть ссылка на Context (т.е. на Activity), разве нет?
Нет, вся "бизнес-логика" и ViewModel'и написаны в отдельном модуле на чистом Java SE Kotlin.
Для работы с базой юзаю самописный DSL поверх OrmLite он не привязан к Android
А если запрос не прошел? Кидаешь броадкаст с ерором и выводишь на активити?
Почему просто в контролере не делать асинхроную rx цепочку(запрос->сохранение в бд->респонс для вывода на екран=ерор для вывода на екран). Правда там с лайфсайклом поебатся нужно будет + ивент бас или ресивер понадобится если есть запросы не связаны с юаем.
В одном support.v4.Fragment в методе onStart подписываюсь на LocalBroadcast, а в методе onStop отписываюсь.
В методе BroadcastReceiver'a onReceive обновляется один элемент UI и там вызывается getResources();
Так вот, здесь то оно и упало, с вот таким экспешеном:
Fatal Exception: java.lang.IllegalStateException
Fragment DispFragment{f733e7b} not attached to Activity
Но как так то? onStart вызывается позже, чем onAttach!
> в методе onStart подписываюсь на LocalBroadcast, а в методе onStop отписываюсь
Неверно. Нужно делать это в onResume и onPause соответственно.
> в контролере
Что ты подразумеваешь под контроллером?
> с лайфсайклом поебатся нужно будет
Вот именно. Поэтому я и спросил, кто как делает
Какие-нибудь форумы, группы, чаты и т.д., где можно пообсуждать общие вещи (которые не подходят в формат Stackoverflow), показать свой код, посмотреть на чужой и т.п.
Кроме этого треда и 4пда
> RecyclerView
Если бы еще ему из коробки сделали группировку с экспандом, а гуглы как всегда НУ ЭТА, ВЫ САМИ ДАВАЙТЕ)))
Да и мне не нравится, что декоратору нельзя задать зависимость от элемента списка.
Но это так, размышления.
>>792977
>>792993
>>792490
Сделал на RecyclerView.
Не особо сложно, делал по этой инструкции:
https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-6a6f0c422efd#.c4dh30clk
> группировку с экспандом
В смысле?
> декоратору нельзя задать зависимость от элемента списка
Правильно, это ж будет нарушения принципа единственной ответственности.
> Правильно, это ж будет нарушения принципа единственной ответственности.
Ну и нахуй он тогда нужен? Декарировать списки из примеров?
> В смысле?
ExpandableListView
You should register onResume yes, onResume() is always called on the activity being displayed (it is the last method called before your activity appeares (developer.android.com/reference/android/app/Activity.html) if you only register onCreate() and unregister onPause(), then the next time the activity is brought to the foreground, onCreate() will not be called again and then it will not register the receiver again. And yes I mean INSTEAD of, do not do it onCreate()
As onDestroy() is not guaranted to be called you shall use onPause() to deregister. Consider lifecycle of your broadcast receiver: Do you need it to be active, only when your activity is in foreground? Then use onResume() / onPause()
очень глупый вопрос - kotlin надо учить поверх знаний java ?
Да.
бамп
Котлин можно учить, лишь когда ты хорошо знаешь Java. Если речь про Android разработку, тогда еще необходимо знать Android SDK. Иначе так и будешь ничего-не-понимающей-макакой.
Гугловский План Б "переходим на Swift" пока не отменяется.
Не надо.
>>793093
И Java не надо. Достаточно знать С++.
https://developer.android.com/reference/android/app/NativeActivity.html
>>793055
Лучше вообще начать с Хаскелля, тогда никаких проблем не будет: https://github.com/neurocyte/android-haskell-activity/blob/master/src/HaskellActivity.hs
Я хотел бы услышать как проходит день местного ведроёба. Хочу вкатиться. Есть вакансия. Пытаюсь представить как это будет. Тот же макакинг.
Не угадал.
вот ебусь ща реализовываю экспандбл ресайкл, какой-то ад. И ладно бы если с нуля бы делал, так у меня задача апк которая была сделана под апи 9, обновить под материал, и по тз надо все адаптеры/листы переделать и вот один из листвью оказался экспандбльным. Так там вся логика завязана на определении кто родитель и оттуда пляска с ид итд. Вобщем пытаюсь этот костыльный ресакйл сделать но пздц напрягает
я не он, но добавить туда хедер/футер похоже тот еще геммор
Ште блять?
https://developer.android.com/guide/topics/ui/settings.html
https://developer.android.com/reference/android/preference/PreferenceFragment.html
Я великовозрастный-23-лвл и работаю в области немного далекой от проганья (erp-системы).
Четко поставил цель научиться андроиду, раньше учил джаву, но это давно и не правда.
Так вот. Попал на дистанционное (бесплатное) обучение джавы, купил Эккеля, но у меня есть пара часов в будни после работы и выходные. Понимаю, что сначала надо освоить джаву, а только затем в Андроид. Про то, что после обучения войти во фриланс-молчу, это же супер сложно, так?
Так вот, насколько реально таким образом, по-вашему, обучиться вашему искусству?
Берёшь и обучаешься, вместо того, чтобы тупые вопросы на дваче задавать. Только так, и никак иначе.
Ахуительные советы от гуру дизайна. Можешь оставить их при себе, я спрашивал конкретно.
Конкретно я тебе могу только хуй за щеку засунуть, дурачок.
я вот не пойму, хули все лезут в этот андроид? лезли бы в ios, там же платят больше и все такое. Нет блять, лезут в этот андроид
http://economictimes.indiatimes.com/tech/internet/google-aims-to-train-two-million-indian-developers-on-android-platform/articleshow/53152243.cms
Не нужен макбук и Iphone за дохуя килорублей.
Ты не идус, тебе — никак.
Может есть какие то сервисы или программы что бы я ему дал пнг а он мне нагенерил ее (на пример) для тулбара под разные dp?
Я этим режу.
https://github.com/asystat/Final-Android-Resizer
Но у иоса же xhdpi, остальные будут апскейлом.
Ну так просто делаешь у каждого фрагмента своё отдельное меню. В чем проблема?
Векторы еще довольно плохо поддерживаются андроидом. Можно поставить только в ImageView их, разве нет?
Да, есть некоторые проблемы, и мне приходилось вручную править svg. Но вставлять можно куда угодно, при этом есть даже 2 режима svg, когда это настоящие svg и рисуются на канве, и когда студия тебе генерирует png с этих svg под все dpi.
>студия тебе генерирует png с этих svg под все dpi
У меня с таким подходом от этого на каких-то картинках в рантайме падало лол. Причем не на старых системах, на старых было белое пятно, а на новых падение с IndexOutOfBoundsException где-то внутри VectorDrawable.
Нашел, как починить (если вдруг кому тоже нужно): https://userstyles.org/styles/130075/github-old-fonts
Разуплотнили.
Я упростил себе жизнь. В одиночку я могу городить любые архитектуры, но вот собираюсь устраиваться в серьёзную контору, там уже есть ведроёбы, не обоссут ли меня?
Lyft отказались от фрагментов в пользу похожего подхода, запилили Scoop.
Знаешь, есть утырки, которые пытаются обсыкать за MVP, мол, оверхед, ко-ко-ко, встроенный MVC, пок-пок.
Ну ты еще Square с их Flow вспомни. И что? То, что подходит двум компаниям под вполне определенные приложения, не значит, что подойдет хоть куда (как бы сильно этого не хотелось их авторам).
Да ладно.
Веско.
> Общего толка же фреймворки
Тебе Android SDK мало? Где ты и так по сути не приложения, а плагины для системы пишешь?
https://habrahabr.ru/post/253297/
Я не знаю мало мне его или нет. Я только на нем и пишу, альтернативы еще не пробоал. У сдк есть туева куча проблем, о которых не написал только ленивый, с которыми приходиться бороться каждому из приложения в приложения, таская за собой велосипеды и костыли. Эти обертки над обертками появились, уверен, не от хорошей жизни.
Плагины для системы, это можно сказать много про что, веб фронтенд приложения, кути приложения, etc. ведь там тоже уже обо многом до тебя позаботились.
Статья хорошая, но много чему можно возразить. Там в комментариях вполне обмусолили.
Нашел только закрытую у каких-то барыг (телерик) но они не открывают реализацию.
Ну хоть попробуй вспомнить, пожалуйста. Хоть по каким тегам гуглил в тот момент?
Поможет все.
Это была просто реализация колоды вроде бы. Ищи в ссылках еженедельных статей по разработке на мобилки на хабре. Там ее и видел.
другой анон
У меня пк такой
Лучше на Хаскелле.
Может, групповуху замутим?
Меня отпиздят на работе, если я буду лейаут менеджер писать пару дней, сам спизданул маленький естимейт теперь ябусь.
Залупа
Там таска легкая, просто более правильно делать через ресайклервью с кастомным лейаут менеджером.
А так прийдеться пиздячить фрагмент и логику которую прочитаю только я.
В этом и была ирония долбоеб.
Ну иди почитай сорсы лейаут менеджера без разъяснений и гайдов, а потом ругайся, хотя инбифо индусы.
А вообще велосипедить подобие листвьюхи пиздец как не хочеться.
Написал пару приложений используя стандартный execSQL.
Хотелось бы что-нибудь схожее по функционалу с EntityFramework.
Все верно. Ты говно.
Лучше не использовать.
Я же говорю - даун.
> Realm is a mobile database: a replacement for SQLite & ORMs
Ответ все равно валиден, если вопрошающему не критичен сиквел.
EF ты все равно не получишь, тк ни в Java ни в Kotlin нет экспрешенов.
В Kotlin вроде обещали завести, но это не ближайшая перспектива.
Проводил в свое время исследование, ближе всех к EF библиотека MapDB.
Она реализует интерфейсы Map<>, List<> и тд, на Kotlin можешь юзать Linq подобный синтаксис.
Ее сейчас переписывают на Kotlin, но там еще "in progress".
Попытал юзать старую версию на Java, но там старттайм и добавление большого кол-ва элементов на порядок медленнее чем в sqlite.
ИМХО сейчас самое перспективное, это написать свой DSL поверх OrmLite или чистого sqlite.
>EF ты все равно не получишь, тк ни в Java ни в Kotlin нет экспрешенов.
Это понятно. Хотелось узнать что юзает анон. Неужели все сидят на голом sqlite?
Да так и делаю, ну и что. Потом один хер по папкам надо раскидывать и суффиксы бирать. Неудобно.
>>794137
>DBFlow
Я юзал, брат жив.
>Да так и делаю, ну и что. Потом один хер по папкам надо раскидывать и суффиксы бирать. Неудобно.
Это да, тогда можно использовать скриптик который из свгшек сам раскидает по папкам.
Коммерческая тайна.
Формочки шлепаем. Как это меня заебало.
Вроде не, но я попробуйю, а как добавлять-то, через add? а что с addToBackStack?
есть список, при нажатии на различные айтемы списка, открываются различные вторые активити
через интент фильтры делать или как?
Сувать в интент экстра дату и делать старт активити на нужную активити с этим интентом.
Куда еще можно вкатится без пердолинга?
С травмами мозга после пыхи ты уже ни-ку-да не вкатишься. От туда не возвращаются.
А у меня есть варианты? В джаву меня точно не возьмут, а работы по руби/питону - 3.5 штуки
В окно например.
посмотрите на зп java-господина.
теперь посмотрите на зп android макаки.
еще раз посмотрите на зп java-сервер-господина.
все еще хочешь вкатываться в ведро?
Я не он. Но вообще откуда у студента, который решил вкатываться в погроитрование мак? Или ты из мест где у каждого школьник айфон?
Принеси нормульную статистику для начала.
Да
> откуда у студента, который решил вкатываться в погроитрование мак?
Ну пока попка еще молодая и упругая, этим надо пользоваться.
Шутки шутками, а я себе таки купил на втором курсе эир и гонял с ним на пары.
лучше 1с
Фу бля, серьйзно? Надеюсь ты тралишь.
скажите, уважаемый владелец аппле продукта, какого хуя вы решили все-таки разрабытывать под ведро?
А почему бы и нет. Я сначала начал разрабатывать под ведро, а потом купил удобный ноутбук. Или если ты разрабатываешь под ведро, то ты обязан быть пердоликом со швабодками?
Как сделать это максимально быстро? Что читать кроме официального блога? ЦЕЛЬ – нахвататься всего по немногу и сразу.
Могу в программирование и Java на уровне понимания ООП, знания стандартных СД, интерфейсов и иже с ними, потоков ввода/вывода, простейших гуев на Свинге. С БД sqlite не знаком.
На новой работе я столкнулся судивительной ситуацией. Есть программист второй, он реализовал типо mvc. Есть несколько активитей и под них по контроллеру. Там вот в кажды почти контроллер захуярил одинаковый метод, который выполняет одно и тоже,скажем возвращает булин из хелпера, который объявлен опять же в каждом контроллерк. И так из класса в класс копипаста. Метод не статик и в хелпере это тоже не статик.
Я просто хуй знает как именно реализоввть mvc в анрдоиде, но по мне так пусть активити проверяет булини напрямую через хелпер. А0
Таки что вам ясно? Я конкретный вопрос задал, дабы мне пояснили, так сказать, рассказали о ситуации моей, алло.
Ты перечислил все что тебе нужно. Читаешь шапку и идешь по туторам. Так нахватаешься всего с головой. Причем быстро.
Язвительные снобы в треде. Следующий.
Туторы... Понятно. Спасибо.
вот у меня есть сиимплКурсорАдаптер, в котором данные из БД
и мне надо при нажатии на пункт списка открыть другое активити, которое зависит от выбранного пункта
как это реализовывать
?
написал вот такую вот хероту
но походу она неправильная
[code lang=java]
lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(LOG_TAG, "on Item Click started");
long itemId = scAdapter.getItemId(position);
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("itemId", itemId);
startActivity(intent);
}
});
[/code]
Автора обоссали.
RelativeLayout layout_main = new RelativeLayout(this);
RelativeLayout layout_buttons = new RelativeLayout(this);
ScrollView sv = new ScrollView(this);
//говнокод
sv.addView(layout_buttons);
layout_main.addView(sv);
return layout_main;
Скроллвью получается поверх всего. Как его порезать сверху?
> собирать вьюху в коде
Из иос перекатился? Ну так задай в relative layout params правило below texview_id.
Так у меня динамический лайаут же.
>задай в relative layout params
так у скроллвью ScrollviewLayoutParams, там нету below.
Так что пришлось скролвью в новый релатив пихать и там уже addrule.below
релатив в скролвью, скролвью в релативе
мне надо заполниь список данными из БД
в качестве БД использую sugar ORM
какой адаптер для листвью мне надо использовать
и нужен ли мне адаптор вообще?
>даю хуйней уже 2ой день вместо того, что бы написать что то
>мне надо заполниь список данными из БД
>в качестве БД использую sugar ORM
что за данные-то? Если там одна строка, то можно без адаптера, если там что-то сложнее, то наследуешь ArrayAdapter, скармливаешь ему layout и заполняешь вьюшки.
lectr9U7icasANUS1}tgmailPUNCTUMcowlZm
скажи что в конечном итоге хочешь сделать я скажу как а то нихуя не понятно че ты там хочешь
Когда мой перевод готов будет, уёбок?!
Вот она:
http://pastebin.com/yEJkVhKv
Ещё такая штука: файл build.gradle(app) стал пустой.
Что в нём было - хуй его знает.
Все классы, активити - всё на месте. даже как-то умудрился запустить эмулятор - всё, что сделал, работает. но дальше работать с этим проектом не получается из-за ошибок грэдла.
Что делать? Как починить? Может, новый Андроид студио поставить?
Ты даун? Как ты проект собирал, если не знаешь, что у тебя в app/build.gradle?
Создай новый проект и оттуда скопируй.
Дебил. Гит еще наверно не знаешь?
Лучший совет в треде.
На самом деле можешь попробовать, но парсить html надо явно не регекспами. Это локальная шутейка.
Ну я так понял что всякие vpn клиенты для ведра берут трафик, шифруют его и ведут к адресату через доверенные сервера, собственно за это им и платят.
Парсить на сервере. А еще лучше не делать такое приложение. Всё равно, из Play-маркета пидорнут.
При попыткеразрешить доступ к мультимедиа в приложении Pikabu я получаю совершенно неизвестный, непонятный диалог:
"Сначала разрешите наложения" - какие нахуй наложения? Я хочу гифку с котиком сохранить!!!
В списке "наложения поверх других окон" нет приложения pikabu.
Ни один пользователь не поймёт о чём идет речь и что делать.
Так что, ставим target sdk version 22 и никуда не спешим. Сделать хуже - всегда успеем.
Есть Java-порт.
> исправлен баг с кнопкой "разрешить" в runtime permissions
Давай ссылку на issue в баг-трекере Андроида.
> Теперь она начала нажиматься
Она и до этого нажималась. Дай угадаю: девайс от Самсунга?
> "Сначала разрешите наложения"
Что блядь? Это диалог из твоего васяноприложения, а не системный.
> Так что, ставим target sdk version 22
И наслаждаемся пониженным рейтингом в Google Play, еблей со старыми багами и взглядами как на говно со стороны коллег.
Резюмируя, я солидарен с этим коллегой: >>796458
VideoView
>>796463
Такое впечатление, что вы думаете, что вас пытаются наебать.
Ссылка на трекер: https://code.google.com/p/android/issues/detail?id=213120
Не работали все диалоги запроса разрешений.
>Она и до этого нажималась
Жопой читаешь?
>Дай угадаю: девайс от Самсунга?
Не надо гадать, это не секрет: Линейка Nexus и неизвестно сколько еще устройств.
>Что блядь? Это диалог из твоего васяноприложения, а не системный.
Системный диалог. И да, я не пытаюсь никого обмануть.
>И наслаждаемся пониженным рейтингом
Низкий рейтинг будет когда едениц в рейтинг понаставят из-за хуевой юзабилити. Пользователи по большей части не хотят разбираться, а хотят гифки с котиками сохранять и чтобы всё работало.
В общем, у меня стартует RingingActivity, который в свою очередь стартует сервис и потом если надо выключает музыку через него. Если активити убить, сервис всё равно продолжает играть, тогда нужно запустить приложение вновь, и из него выключить сервис.
Были проблемы с запуском из режима сна, не могу ничего понять с Wake Lock-ами, тыкал их везде, но ничего всё равно не работает. Потом прочитал, что надо делать через BroadcastReceiver, иначе нет гарантии, внутри ресивера просить WakeLock. Потом ещё нашёл WakefulBroadcastReceiver, который должен автоматически делать всё за меня.
Теперь всё работает (правда экран тёмный и не могу его включить), внутри onReceive я просто стартую RingingActivity. Посмотрел в код WakefulBroadcastReceiver и смутился - по-видимому он создан только для запуска сервисов методами startWakefulService и completeWakefulIntent. Нормально ли использовать его так, как это делаю я?
Как сделать чтобы запускаемая активити включала экран?
Вообще, я хотел бы написать пару таких же хуёвых приложений и пытаться апплаиться на джуниора, поэтому хотелось бы чтобы мой код был более-менее идиоматичным, а не забиванием гвоздей дилдами. Нормально ли вообще запускать сервис параллельно с активити, цепляться к нему через bindService и управлять сервисом из активити?
Пиздец какой-то, я прочитал Android nerd ranch guide и покатался по юдасити курсам, но в этой параше не могу понять почти ничего. Может дело в том, что код 2009 года. Даже не верится, что у меня с моими 3.5 классов что-то работает.
Но вообще, спасибо. По-видимому WakefulBroadcastReceiver мне не нужен, он только для сервисов, а в моём случае по-видимому он помог потому, что любой BroadcastReceiver по какой-то причине будит телефон лучше, чем просто активити. Гугл тоже использует активити, просто берёт wakeLock в BroadcastReceiver, а освобождает где-то в активити.
Ну мне надо показать экран с залупой, и начать играть музыку. Если на залупу нажать - музыка прекращается. Если из приложения выйти - музыка продолжается фоном. При старте приложения при играющей музыке сразу открывается экран с залупой.
Как это ещё можно сделать?
Котятки, а вы в курсе, что уже выкатили первую тестовую версию Kotlin 1.1?
https://blog.jetbrains.com/kotlin/2016/07/first-glimpse-of-kotlin-1-1-coroutines-type-aliases-and-more/
Из главного: async/await + type aliases + передача ссылок на методы как лямбд
Вот мои эксперименты с async/await на Android: http://pastebin.com/1vaxkNaK
Там я качаю HTML страницу, нахожу title, перевожу в UpperCase и вывожу в TextView.
Как видите запрос идет в фоновом потоке, но никаких handle/looper/postOnUi и тд использовать не пришлось.
Сделал в двух вариантах с обработкой ошибок:
1) В духе C# с try/catch блоком (асинхронные ошибки туда прокидываются нормально)
2) В функциональном стиле с самописной монадкой на исключения.
Как называется такая хуйня, когда тянешь картинку вверх или вниз и она пропадает, т.е. выход из просмотра картинка. Как гуглить туториал по этой теме?
из просмотра картинок
> пастбин
У тебя же вьюха утечёт, не? Rx хоть сансабскрайбить можно, а как авейт твой останавливать?
Во первых, это код для примера.
Во вторых, просто не надо давать ссылки (делать замыкания) на активити из web запросов.
С ними надо общаться через бродкасты, а через колбеки можно делать только запросы к диску.
> Так как асинхронную цепочку останавливать?
В общем случае (мелких запросов к вэбу) не надо останавливать.
Так ты только вносишь дополнительную сложность, необходимостью правильно вернуть систему в 0 состояние из N твоих точек остановки.
> web запросы
> Через выброс эксепшона? Дорого же.
В каком месте? Ты сейчас бенчмарк у себя в голове придумал и прогнал.
Если тебе это дорого делай как в C# через CancellationTokenSource
https://msdn.microsoft.com/ru-ru/library/jj155759.aspx?f=255&MSPPError=-2147217396
P.S.
Если тебе еще что-то непонятно, читай
https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md
https://msdn.microsoft.com/ru-ru/library/hh191443.aspx
Нахуя, когда есть Rx?
Каких прав? Парсить публичные веб-страницы запрещено? А почему использование api не запрещено?
А если у меня скраппер в бд с рест апи к ней? При этом я везде указал, что это неофициальное приложение.
Пока у тебя будет полтора пользователя, всем будет насрать. Если их станет больше, то всё равно пидорнут.
Лучше Хаскелл.
Стоит.
А данные, отдаваемые сервером, — не публичные?
Чем публичный API отличается от не-публичного, кроме заявления создателей, что оно публичное?
>>797304
Именно этим и отличается. Если я выложу какие-то исходники на Гитхаб под свободной лицензией, ты можешь делать с ними что угодно (в рамках этой лицензии).
Если я их просто выложу, и напишу ЭТА ВСЁ МАЁ НЕ ТРОГОЙТЕ, то те, кто будет их использовать, будут нарушать мои права.
У Гугла всё это вообще автоматически происходит. Выписываются баны приложений, страйки на ютюбе и т.д. Причем ты никогда не узнаешь, за что именно, тебя просто заблокируют. Можешь почитать например на Хабре истории общения с техподтержкой Гугла.
Я прекрасно понимаю суть свободных лицензий. Однако это вообще не к месту сейчас, мы совсем о другом говорим. Более того, я ни разу не видел, чтобы к API была приложена лицензия, следовательно, любое такое API всё равно нельзя использовать независимо от того, публичное оно или нет.
Есть grid layout 3x3. Как сделать так, чтобы колонки таблицы по ширине занимали всё место на экране?
Сейчас только по высоте занято всё место, путем установки параметра layoutRowWeight = 1 каждому FrameLayout.
Но пока что спиздил только заголовки для листвью. Как сделать так, чтобы на клик открывалась статья в новом лэйауте? Подскажите гайд. можно ангельский.
Этого пидора с свидео не предлагать
https://www.youtube.com/watch?v=DCo_1nsxeY0
Чем тебе gson кроме рефлексии не угодил?
Я когда-то упоролся и спарсил при помощи json сайт гей знакомств. Потом сделал всякие графики.
Например, один лист вью с текстами, которые видно. тИпа
1. Вася
2. Петя
3. Дима
4. Костя
А поверх него "невидимый" листвью"(прозрачный), но по сути, реагирует новый листвью. Допустим, мы не видим такую же фальшивку
1. Яна
2. Катя
3. Соня
4. Таня
И вот юзер нажимает на 2-ю позицию(он думает, что это петя), а ему тут ХУЯК и Катя открывается.
Я пользуюсь https://timboudreau.com/blog/json/read
Его огромное преимущество, что он генерирует immutable классы.
Кстати, они потом конвертируются в очень компактные "data class" котлина.
Вопрос только зачем, а так можно конечно, только в onScroll передавай smoothScroll
Спасибо, действительно удобный сервис
Алсо, как сейчас с рыночком в РФ, котаны? Реально вкатиться в ДС-2 с двумя приложениями в маркете, и парой месяцев опыта на большой джаве?
Нереально. Вакансий нет. Джава всё. Андроид переходит на Свифт. Уж лучше джаваскрипт учить, там хоть какая-то стабильность.
Кхм, прикольно, но чет он мой джсон не переварил например. А он валидный.
>Андроид переходит на Свифт
:^)
Ты успокоишься когда-нибудь? Какого черта ты срешь в двух тредах сразу?
делал по гайдам)
//экс-решеточник
Анус побрей.
Надо для prefs.xml'ей.
Ключи настроек никогда не меняются.
Не надо плодить лишние константы, пиши прямо так:
sp.getBoolean("gps_enabled", false)
Если совсем прям припрет поменять имя ключа в .xml, то заменишь руками в коде.
Если у тебя загрузка одной и той же настройки используется 1000 раз - здесь что-то не так.
Настройки надо грузить:
1) При инициализации
2) Внутри onSharedPreferenceChanged из SharedPreferences.OnSharedPreferenceChangeListener
А гироскоп с магнитометром нахуй не нужны? Этот акселерометр сильно зашумлен, даже Калманом не приводится в нормальный вид.
Сап, джава-господа. Пробую одну вещь, а именно собрать лист ссылок с сайта. Взял себе на пробу сайт, ссылки вытащил.
Но они в разброс. ТО есть, первая новость на сайте почему-то не первая в списке, а где-то в середине.
Понимаю, что теперь мой лист нужно отсортировать. Сделать это в целом просто, ведь в середине каждого стринг в листе есть дата. Но календарь юзать тут не надо. Просто отсортирую по какая меньше-какая больше. Вот код, которым я получаю ссылки.
http://pastebin.com/dRjvtp3i
Вот то, что я получаю.
http://pastebin.com/Qvm5PsD8
Вот то, как выглядит дата:
2016/04/26/
Из неё я буду вытаскивать месяц и число.
Подскажите, чем сортировать и как это сделать?
Это решение, конечно, похоже на костыль, а если ещё и дальше делать, то больший костыль, но всё же это попытка и я хотел бы доделать её.
Спасибо, Анонимусы
Зачем ты сет используешь? Ты знаешь что есть сет? Возьми ArrayList или LinkedHashSet если действительно нужен сет.
>>798361
нет, не знаю. просто нашел работающий способ, который помог мне убрать дубликаты из результатов. потому что ссылки, почему-то, было по 3 и более.
Так что, если отвечать зачем, отвечаю: убрать дубликаты
HashSet - несортированный набор. Ты копируешь значения листа в сет, вычищаешь лист, копируешь сет обратно в лист. Лист при этом вытаскивает значения из сета в случайном порядке. Для одноразовой операции такое сгодиться, но у тебя цикл. Quickfix - замени HashSet на LinkedHashSet, не будут перемешиваться.
Вообще для небольшого скрипта брать жаву смысла мало.
Сейчас попробую, спасибо.
Нет смысла. Ключи никогда не меняются.
>лучше сохранять ключи в res/strings.xml и указать у них аттрибут translatable="false".
Оверхед. Много писанины, опять же надо помнить названия ключей. Вызовы getString.
>>798399
Если что - я попробовал все 3 способа в проекте с ~20 настройками.
Оказалось, что за полгода (разработка и поддержка) менять названия ключей не пришлось ни разу.
Добавлять новые и удалять старые - вот это было.
Во всех трёх способов кроме удвоения кол-ва названий ключей нет никакого различия.
В некоторых случаях добавляется всякий оверхед, в виде загрузки строк из xml.
> всякий оверхед
Дай угадаю, ты еще и enum'ы презираешь, используя вместо них int-овые константы?
Не надо угадывать. Нет, использую enum.
Лучше расскажи, как тонны лишних строк с названиями ключей помогут тебе в тестировании.
> используя вместо них int-овые константы
Почему бы и не использовать, если есть @IntDef, и это рекомендации гугла.
Очень нужно, но есть нюанс:
если код завязан на железо - тесты уже не напишешь (обмен через Bluetooth с носимым гаджетом)
Чтобы обнаруживать регресс.
> Никогда не понимал, нахуя это нужно.
Вон из профессии, быдло.
>>798467
> Почему бы и не использовать
А почему бы все переменные не хранить как String?
> и это рекомендации гугла
Вот и пиши по этим рекомендациям лапшеобразный код с AsyncTask'ами, ContentProvider'ами, HttpURLConnection, венгерской нотацией и прочими радостями. Флаг тебе в руки.
1)
Нахрен у тебя там цикл?
for(int i = 0;i<11;i++){
2)
> первая новость на сайте почему-то не первая в списке,
Тебя глючит, они приходят правильно отсортированные
Я же тебя не про котлин спрашиваю, а про альтернативу AsyncTask.
Сейчас выгодно использовать проверенные инструменты, т.к. граблей и гугл достаточно подкидывает.
Так-то он прав. Эта ебаная сдк перманентно забагована, то и дело попытавшись заюзать новый инструмент из стандартного набора плюешься, что уже говорить про всякие реалмы у которых каждый месяц - громадный фикс багов. Это показатель не того что они пиздатые, а того что технология дерьмо.
Так нахуй? У меня отдельные классы для получения дерьма из инетов, кеширвоания в бд и отображения. Мне твой асинк таск не уперся.
На любой вкус!
Всё время забываю, что у вас сейчас каникулы.
Спасибо, Анон, за замечание о цикле. Сам не знаю, нахуя вставил. привык массив циклом заполнять, вот нахуя-то и вставил.
My fault.
А приходили несортированные, инфа сотка. в моём посте есть подтверждение, посмотри даты)
Но LinkedHashSet всё решил)
Твой сломанный порядок из-за того что ты используешь Set для временного хранения данных.
Без сетов там порядок, как на сайте. Пруф на пикрил.
Отключю его - всё норм, включю - опять такая же фигня.
В чем может быть проблема? В логах всё чисто, никаких ошибок или предупреждений.
Проверю - сомневаюсь, 100% есть новые баги.
Хрень какая-то. Логай onDetach фрагментов. Если там не сделано какой-то шняги с рефлексией, то прогвард помешать не мог. Попробуй локализовать проблему в отдельном проекте.
Надо настроить, а не отключать нахуй.
>Коротко о главном:
>1) Мобильная разработка - это весело.
Это точно. Я уже четвертый день ябусь с QtCreator, который упорно не хочет проходить этап Build Android Apk.
01:48:29: Выполняются этапы для проекта application...
01:48:29: Настройки не изменились, этап qmake пропускается.
01:48:29: Запускается: «C:\MinGW\bin\mingw32-make.exe»
mingw32-make: Nothing to be done for 'first'.
01:48:29: Процесс «C:\MinGW\bin\mingw32-make.exe» завершился успешно.
01:48:29: Невозможно запустить процесс «mingw32-make» "INSTALL_ROOT=C:\Qt\5.2.1\android_armv7\examples\widgets\mainwindows\application\android-build" install
Ошибка при сборке/установке проекта application (комплект: Android для armeabi-v7a (GCC 4.9, Qt 5.2.1) )
Во время выполнения этапа «Копирование данных приложения»
01:48:29: Прошло времени: 00:01.
Это с галкой расширенного вывода. Пытаюсь собрать хотя бы один из примеров. Что может быть не так? SDK, NDK, ANT - самые свежие, что дают на сайтах. Или Все дело в винде?
Например в том, что я полный нуфаг и учил вообще питон. И QT более-менее знаю. И не успокоюсь, пока не запущу свой говноскрипт на ведроиде. А потом уже засяду за изучения джавы, наевшись говна.
Жуткий пердолинг, конечно, но как-то же собирают apk в креаторе, а я не могу даже стандартный пример.
VS не вышло прикрутить чет. Хотя, надо попробовать еще раз.
Да и обычные приложения с его помощью вполне себе собираются.
Проверил наличие папки android-build. Ее нет. А если создать, повторyый запуск build сжирает ее. WTF?
RxJava не предлагать, с него как раз и ухожу.
Нашел вот это чудо https://github.com/streamsupport/streamsupport
, но оно тащит за собой еще 900KB stream-API, которое мне нафиг не упало.
Можно конечно поиграться с минимайзером, но проще дождаться jake&jill,
там вроде тоже будет бэкпорт стиримов и CF
Нашел еще Guava ListenableFuture
https://github.com/google/guava/wiki/ListenableFutureExplained
, но там опять таки придется тащить 2MB лишнего барахла.
С жиру бесится.
После более года использования RxJava на Android (и полугода в C#/Xamarin), я могу делать ясные выводы:
1) Observable<T> несовместим с жизненными-циклами активитей/фрагментов.
Очень неудобно, что "по хорошему" каждый Observable надо явно отписывать (что бы избежать утечек),
тк “по умолчанию” они бесконечные и не было контракта, который явно бы говорил что Observable одноразовый.
В RxJava поняли эту проблему и ввели явные контракты на одноразовые действия: Single<T> и Completable.
Но проблема в том что они плохо совместимы между собой, у них разные интерфейсы для связывания, нет общего абстрактного предка.
2) Из-за множественной подписки, RxJava хорошо работает только с Cold Observable, а это оказалось МНЕ вообще не нужно.
http://www.introtorx.com/content/v1.0.10621.0/14_HotAndColdObservables.html
3) Последней точкой стал выход Kotlin 1.1 с поддержкой async/await.
Да там есть поддержка и RxJava https://github.com/Kotlin/kotlinx.coroutines/tree/master/kotlinx-coroutines-rx
Но лучше всего async/await ложатся именно на одноразовые асинхронные таски
В итоге мой вывод: одноразовые-“hot”-асинхронные-таски гораздо легче в использование.
Этим требованиям полностью удовлетворяет Java 1.8 CompletableFuture, вот только на Android его нет (пока).
P.S.
Скоро выходит RxJava 2.0, я его посмотрел, но не нашел там нужных мне характеристик.
IntentService
В чем проблема сохранить в permanent-storage (sharadepref/sqlite) состояние транзакции?
> всех этих транзакций
У тебя их что больше одной за раз?
Нет такого "волшебного апи", которое запретит Android убить твое приложение.
Даже "sticky" service, андроид может убить, он только гарантирует что потом его вызовет снова.
> У тебя
Я другой анон.
Но транзакций легко может стать много, если дейстовать как ты говоришь. Вдруг, на сервере что-то изменилось, или юзер с другого устройства что-то сделал. Или оффлайн-действия всякие.
Ну например сделался запрос, я сохранил в бд какой то тэг запроса и время, да? А как потом отследить, что новый делать не надо, я что-то не догоняю.
нет ты
>>799717
Нахуй шлют без опыта, да и выходить из дома не хочу.
На фриланс хуй без мыла и разработаной жопы пролезешь, да и почти везде хотят еще и ios.
Своих оригинальных идей нет, а писать 9999999 todo или трекер привычек, программу заметок, нативный сервак двача, калькулятор и прочую чухню впадлу.
Ну тогда дальше сиди дома и смотри анимэ. Не знаю, что тебе еще посоветовать.
Ссук, чем тебе написать программу заметок впадлу?! Не нашел ни одной когда надо было (невырвиглазную, с виджетом на хаумскрине и синхронизацией в какое-нибудь открытое место). Так и пользуюсь дефолтным самсунговским memo.
а типо и у меня, и у сервера должен быть какой нить transcation id, да?
Нужно получить ссылку в Toast по клику.
Лист с ссылками вот. можно посмотреть:
http://pastebin.com/cm2Q5E0T
Как теперь его привязать - ума не приложу.
прописывал в онИтемКликЛистенер list1ofLinks.get(position) - ошибка.
Писал в онКриэйт - ошибка.
Создал метод, который на старте собирал внешний(вне метода) лист - всё равно ошибка.
Как поступить?
Или нужно создавать потоки/асинк таск?
ЧЯДНТ?
используй grid:layout_columnWeight="1". И эта хуйня ЕМНИП работает только с грид лейаутом из суппорт лайбрари
Самая существенная инфа по ним это блогпост на пять частей, после прочтения которого ЯННП. В еще одном посте нарисован самый минимум как их заюзать, но даже на этом минимуме нужно дополнительно имплиментить три метода коллбэка лоадера. Правильно я понимаю что лоадеры и их дата помирают вместе с активити?
До сих пор я использовал асинкТаски и иногда сервисы, еще глядя в сторону rx. Лоадеры отпугивали тонной бойлерплейта.
В чём отличие, друг?
Гугланул, нашёл вот это.
"Но есть и небольшие отличия. Например, когда выводится сообщение, его можно смахнуть с экрана слева направо, не дожидаясь, когда оно само исчезнет.
Также можно задать свою продолжительность. В первых версиях это не работало, я даже задавал этот вопрос на StackOverFlow, где проблему подтвердили и обещали исправить. Недавно проверял - действительно, теперь работает."
Мне это пока не надо, так зачем он мне?)
о, любитель читать на английском всё то же самое и ставить себя выше других из-за того, что "не такой как все" порвался
> нужно дополнительно имплиментить три метода коллбэка лоадера.
> Лоадеры отпугивали тонной бойлерплейта.
Ах, какая большая работа, целых 10 строчек кода!
> Правильно я понимаю что лоадеры и их дата помирают вместе с активити
Нет, неправильно. То есть ты прочитал пять частей какого-то говна и так ничего не понял?
Сочувствую.
Если ты не в состоянии элементарное описание компонента найти и прочитать, а только чьи-то высеры цитируешь, о чем с тобой можно говорить?
И вообще представь себе, что в этой профессии нужно много искать информации и читать. Книги, статьи, туториалы. И в большинстве случаев на английском. Если ты этого осилить не можешь, то может пора пойти вон из профессии? Улицы грязные, щебень не разгруженный. Найдешь, чем заняться.
зачем читать на ангельском, если есть уже адаптированный русский текст?
В случае, если инфа по библе/инструменту есть только у буржуев, то да, английский нужен. К слову, я его знаю и часто читаю в оригинале.
Так что не кичься своими знаниями, ты тут не один такой.
Лучше расскажи, почему надо snackbar юзать?
Спасибо. Тогда мож ваще нахуй с жабы и ведроида убегать? Жаба ведь тоже не модная
> ПОСОНЫ Я ПОПРОБОВАЛ ЕНТОТ СНЕКБАР, ЧЕ-ТО ФИГНЯ КАКАЯ-ТО, НЕ ИСПОЛЬЗУЙТЕ ЕГО
> адаптированный русский текст
Флаг тебе в руки.
Верно. Джава умирает. Самое время учить JS.
азаза затроллел))))
да не. выглядит прикольно и фич поболе, чем в тоасте.
но юзать его везде - глупо. головой надо думать, где что нужно.
меня вот тоасты устраивают(я ими тесты провожу).
В случае необходимости заюзаю снэкбар. особенно если захочу стать материал десигн дрочером
Ты правильно мыслишь. Видимо ты не совсем пропащий.
А, так это ты тот даун с Jsoup и AsyncTask'ами в onCreate()? Тебя же еще вчера обоссали. Добавки захотел?
Так и есть. Грустная истина, но JavaScript уверенно шагает по миру. На нём сейчас вообще что-угодно пишут, а в будущем влияние только усилиться.
Вот пример из мобайла: наша студия делает нативные приложения для Android/iOS. Но в последнее время стало сложнее находить заказы. Все уходят туда, где им сделают кроссплатформенное приложение на ReactNativ'е за чуть меньшие деньги, но раза в полтора быстрее. Так что, думаю, скоро и нам перекатиться придётся.
полагаю, что зная Java, перекатиться на JS будет не слишком трудной задачей
@Override
protected void onCreate(Bundle avedInstanceState) {
// ...
new NewThread().execute();
}
Пруф чего?
Да, сырой, глючный и вообще уёбищбный. Но позволяет очень быстро и дешево писать кросс-платформенные приложения. Сначала на уровне прототипа, потом как обычное.
проглядел, пасиб
Спасибо.
Пруф того что кто-то согласен покупать такие приложения у разрабов. Или вакансий с реактнэтивом.
>быстро и дешево
Для молодых технологий как-то сомнительно.
>кросс-платформенные
Не гони, он нихуя не кроссплатформенный, другой дело что не нужно менять язык для того что бы писать под другую платформу.
Да толстит он.
С xamarin еще все понятно, но на RN никто не будет заказывать продакшен приложения.
>startForeground
> It is still theoretically possible for the service to be killed under extreme memory pressure from the current foreground application
Шо ты бомбишь на пустом месте? Школьник штоли?
Аноны, у меня есть лоадер, который отправляет сообщения на сервер, следовательно, юзер может отправить сообщения одновременно, но в таком случае лоадер возвращает результат только для первого сообщения, а если рестартить его, то только для последнего, что делать? Думаю инкрементить айдишник у лоадера, но это, наверное, слишком костыльно, что скажите?
не знаю, юзаю их в связке с rx, как писал чувак из елегиона на хабре, мне всё нравится
вот есть метод, который воззвращает List<E>
допустим этот метод прописан в классе Anon
в мэйн активити делаю
Anon anon = new Anon();
anon.readList();
а теперь мне надо назначить имя этому List<E>, который вернул этот метод
как это сделать
я тупо уже основы джавы забываю сидя 8ой час за всей этой поеботой
> а теперь мне надо назначить имя этому List<E>, который вернул этот метод
Что ты несешь? Ты вообще программировать умеешь?
List<E> myList = new Anon().readList();
Чем заменить parse.com?
Нарыл много статей со списками альтернатив, но реальных отзывов как-то не много. Я бы и простой бэкенд запилил на пыхе, но клиент хочет подешевле.
У кого есть отзывы по таким бекендам? Может какие-то подводные камни.
Ествественно хотелось бы подешевле, побольше бесплатных записей в базе данных, максимально простую конфигурацию, чтоб хуяк, хуяк и работало
Вот наверно самая большая конпиляция https://github.com/relatedcode/ParseAlternatives
И обсуждение на реддите
https://www.reddit.com/r/webdev/comments/435teq/parse_is_shutting_down_what_are_good_alternatives/
https://www.reddit.com/r/iOSProgramming/comments/436kcd/parse_alternatives/
Это копия, сохраненная 11 августа 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.