Учитывая, что яблоко ненужно разработка под яблоко и андроид нихуя не одно и то же, решил таки создать отдельный тред. Коротко о главном: 1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - то добро пожаловать в андроид разработку. 2) Android Studio & Java - единственный легитимный набор. 3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах. 4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js.
Где брать инфу: Интернет-ресурсы 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. Хотя чего тут объяснять.
Книги, их никто не читает, но все советуют только одну 1) The Busy Coder’s Guide to Android Development
Ведраны, андроид сдк то это весело, только вот что. Мне не хватает познаний в самой Java. Для c# есть божественный Рихтер с его clr via c#, а для Java, что является его аналогом? На русском очень хочется.
Поясните по хардкору. В джаву совсем не умею - на моём счету одна полупрочитанная книга, не более. Хочу писать игоры на ведроид. Смогу ли я чему-то научиться на http://startandroid.ru/ или нужно для начала освоить джаву?
Объясните, я раньше изучал веб-программирование, делал сайты со множеством яваскриптов, теперь вот хочу начать делать программы под андроид и продавать их. Знаний javascript из вебиндустрии хватит или ещё что-то надо знать?
>>515226 Sencha Touch позволяет писать на JS под Android и iOS. Но в 99% пишут на жабе. Еще советую учить Go, с высокой вероятностью в будущем Гугль заменит жабу на него.
Посоны, у меня вопрос. У меня есть пикча с шириной 288 пикселей. При чтении ее на эмуляторе все нормально. Но при чтении с китайского ведра она сама внезапно становится шириной 432 пикселя, т.е. в полтора раза больше, при этом с другими картинками все нормально. Почему так? Android studio, ведро китайскоеpadphone n9776
>>515374 У них с Oracle'м постоянные судебные разбирательства из-за использования жабы. Рано или поздно гуглогоспод это заебет, и они перейдут на Go. Там по сути нужно только либы переписать.
>>516006 Батхёрт сеньерогосподина. Учиться надо на живых проектах, а не хэллоуворлдах. Я вообзе начал девить андроид после фразы начальника: бля может на андроид перейдешь?
Записался на один онлайн курс где будут в конце выдавать сертификаты от google, но джаву начал учить совсем недавно и до андроида ещё не добрался как хотел. А тест нужно будет сдать до конца лета. Может ли какой доброанон, с хорошим багажем знаний в андроиде помочь через скайп например или тимвивер? Естественно я буду дальше учить джаву и изучать андроид, просто наперед соберу какие-то бумажки для портфолио. Или не стоит так делать?
Такой вопрос, есть два абсолютгно одинаковых EditText, один лежит на общем layout а второй лежит в TableRow, у первого обычный дефолтный вид, а второй почему-то принимает вид обведенного черной рамочкой. Какого хуя?
>>516173 >>516181 Да, он. Вообще сняли как-то не очень качественно, особенно первые уроки. Много показывают лица вместо презентаций и вообще этот курс не очень подходит для новичков мне кажется. Всё это уже в комментах под видео не раз писали, не буду повторяться короче.
обработка ошибок в MediaPlayerАноним17/07/15 Птн 16:54:29#43№516197
посоны, а как лучше сделать контроль за состоянием буфера потокового воспроизведения? он был в старых версиях приложения di.fm, например. вот, допустим: интернет-радио, связь пропала. как обработать это событие?
В буффер апдейт смотришь процент буффера, если не 100, то апдейтишь UI, мол нет связи. Еще если связь совсем пропадет, вызовется OnErrorListener. Можешь зарегистрировать bradcastreceiver на восстановление связи, по которому будешь снова запускать воспроизведение, если оно не было остановлено пользователем.
>>516213 >>516220 >>516225 >>516253 >>516256 К сожалению что бы пройти финальный тест нужно было зарегаться до 16.07 23:59. Сам узнал про курсы буквально вчера-позавчера и что-то не додумался сюда ещё вбросить, извините. Если вы делали аккаунт раньше, то вспоминайте логины\пароли и проходите. Времени до 31го августа. Больше инфы можно найти в g+ этого курса, там все вопросы и ответы.
Банят мое приложение, связанное с проигрыванием музыки из вконтакта через dlna. Причина: приложение выдает себя за другое. Как с этим роботом бороться? У кого-то такая хуйня была?
Посаны, подкиньте пример, как совмещать MVP с адапетром списка? Суть в том, что адаптер хранит данные для списка. Обновлять их там должен презентер (когда получит из модели, естественно). При этом, адаптер нужен в активити, которое, в свою очередь, держит ссылку на тот самый презентер. Получается отвратительный велосипед
Совсем тупой, блядь.Аноним18/07/15 Суб 04:24:58#64№516503
Использую сторонюю йоба-библиотеку SQLITESIMPLEhttps://github.com/kvirair/SQLite-Simple-Android И, кароч, не могу свершить умственный скачок в этом фрагменте: Model @Column - required parameter for variables, supports attributes: type - optional (ColumnType.TEXT, ColumnType.NUMERIC, ColumnType.REAL, ColumnType.INTEGER, ColumnType.BLOB). name - optional. isPrimaryKey - optional (for keys, supports compound key). isAutoincrement - optional (for key, aka _id). Соответственно, модель выглядит так:
public class Quest { @Column public int Id; @Column public String title; }
Как этот поганный атрибут PK в моё поле с айдишником запихнуть? Попутно возникает вопрос, как присобачить FK, ручками? Кинуть это дерьмо, и делать через обычную библиотеку? Хотел ведь как проще, блять.
>>514927 Программисты, два вопроса. Существует ли программа, которая делает фотографии без разблокировки телефона и мгновенно отправляет их не сервер. Нашел "Фотай кнопкой!" но она сажает батарейку, так-как камера в ней постоянно включена и не отправляет их в сетевые хранилища. Можно ли такую программу создать или существуют ограничения не позволяющие сделать такую приблуду?
Какие проблемы могут возникнуть, при добавлении ListView в ScrollView? Проблем никаких не будет, все будет работать без добавления Возникнет ошибка отрисовки элементов на экране, элементы не отрисуются Возникнет проблема скролинга, один из элементов скролиться не будет Возникнет проблема, скрол полностью работать не будет.
>>516563 Их фейков только почта: [email protected] >>516564 > Какие проблемы могут возникнуть, при добавлении ListView в ScrollView? > Возникнет проблема скролинга, один из элементов скролиться не будет > Возникнет проблема, скрол полностью работать не будет. Из этих двух что-то. Ща нагуглю.
>>516565 Первым побуждением было сделать то, что вынесено в заголовок: поместить ListView внутрь ScrollView. Получившаяся штука отображалась некорректно, что заставило меня зарыться поглубже в гугл.
>>516566 В результате, когда пытаемся поместить ListView в ScrollView, то ListView "сворачивается", в то время, как по задумке он должен быть полностью развернут. > Возникнет ошибка отрисовки элементов на экране, элементы не отрисуются
>>516577 Я тебе привел пример из гитхаба, который ты и скинул. >>516560 >>516570 Пиздос вопросики, но надрочиться можно. Не буду сегодня проходить, лол. Хотя я смотрел вопросы в mail.ru'шном тесте, они еще адовей.
>>516587 > Был вопрос "Сколько раз вызывается Service.onServiceStarted?" Дело в том что в классе Service нет метода onServiceStarted, есть onStartCommand. Ох лол, я знал же что вопрос конченный какой то.
>>516623 Да, 500 первым из СНГ дадут бумажный вариант, всем остальным электронный (PDF). Хотя в G+ они писали, что вообще ещё посмотрят, если тест мало людей пройдет, возможно всем бумажные выдадут.
Как мне лучше всего сделать, чтобы при пролистывании фрагментов во ViewPager'e у них вызывались методы onPause() и onResume()? Ну или onStop() и onStart()? Предлагайте любые способы, особенно интересуют наименее костыльные.
>>516608 "Какой компонент не может быть запущен при помощи Intent? 1) Content provider 2) Broadcast receiver 3) Activity 4) Service" Ответ: (1) Как это так - бродкаст ресивер запущен через интент? Как это так?
>>516417 >При этом, адаптер нужен в активити, которое, в свою очередь, держит ссылку на тот самый презентер. Ты же вкурсе что в ведре активити и есть презентер?
Есть тут андроид девы, которые помогут разобраться с BaseAdapter? Нужно изменить 2 textView нажатием 1 кнопки. Всё это входит в ListView 1 textView изменять могу с помощью setTag
>>517638 Ну почитал бы любой гайд. Я про холдер узнал из примера "ниндзи" какого-то. Так и называлось вроде НиндзяАдаптер. Правда не сразу понял в чем профит, но после нескольких дебагов адаптера сразу понял.
>>517638 Алсо, самый ебанутый адаптер который я делал хранит в себе всякие асинктаски и небольшую логику прорисовки, ну и само собой кнопки перехода на всякие ништяки. Знатно я там быдлокодил, но как сделать лучше пока еще хз. Первый анон, НЕ тот который с игрой, по совместительству ОП.
>>517540 > Быстрее, потому что использует ViewHolder. Я и в ListView использую ViewHolder, и чо теперь? > Проще, потому что тебе нужно реализовать только 1) ViewHolder 2) BindView У адаптера - ViewHolder и getView. Зато обработка кликов искаробки, не надо в проекте тащить лишнюю либу.
>>517832 Дело в том, что там не просто "встроенный" ViewHolder, там по-другому надуваются View, не поштучно, в момент листания, а разом несколько штук. И если тебе в обычном адаптере нужно выполнять проверку, использовать view повторно или надуть новый, в RecyclerView это отсутствует.
>>517878 Там сделать ачивменты и магазин в 15 раз дольше чем саму игру. Так что даже не начинай, либо код пиздил либо еще что-то. Я уже молчу про интерфейс.
>>517881 Так и в чем профит? С холдер-патерном обычный листвью создал себе 10 вьюх все которые на экран поместились и работает с ними. Думаю проверка на равенство объекта наллу не сильно замедляет работу. И еще, вроде бы основное замедление как раз из-за файндВьюБайАйди так что твои 6 надутых вьюх ну нихуя не выиграют.
>>517889 Дольше. Намного дольше. Игра это просто post++ А пока листвью оформишь, пока адаптер сделаешь, пока обработаешь нажатие кнопки в каждом итеме в листвью, пока данные передашь в основное активити, пока сохранение и загрузку данных сделаешь... Очень интересно, в общем. Интерфейс хуйня, код пиздил из гугла(частями)
>>517891 Нет. Во-первых, ты получаешь свой регИд и должен сохранить его в преференсах. Во-вторых, регИд если не вечный, то долгострочный для этой!!! версии апликухи, следовательно гугл советует обновить регИд если обновилось приложение. В-третьих контролировать пришедшие пуши ты можешь через ресивер. Т.е. если не хочешь чтоб пуши приходили на устройство когда ты в логауте, либо вырубай ресивер либо пинай бекенд.
>>517895 Ну для двух дней явный перегруз потому и смахивает на пиздешь. У меня бывало что я из-за элемента интерфейса ебался по 5 часов. >сохранение и загрузку данных сделаешь... Как сохраняешь?
>>517904 SharedPreferences Ну может 2,5. Не сплю просто много. С 4 часов утра встаю и пишу. Продуктивность утром процентов на 40 выше, чем днем\вечером.
>>517889 Тебе же сказано, в RecyclerView другой механизм повторного использования элементов. Когда ты создаешь список на 100 элементов, система не надувает 100 итемов, она надувает около х2 от того что влезает в экран и далее использует их повторно. За счет этого он плавнее.
>>517929 >За счет этого он плавнее. На сколько? У меня при нормальном вайфае даже лист с автоподгрузкой плавный и скролится на сверхскоростях. Так что вилами по воде писано.
>>517898 >В-третьих контролировать пришедшие пуши ты можешь через ресивер. Да, я так и делаю, но если я сделаю логаут, то пуши ведь всё равно будут идти и трафик тратится? Разве нет?
>Т.е. если не хочешь чтоб пуши приходили на устройство когда ты в логауте, либо вырубай ресивер. Достаточно ли будет вырубить ресивер чтобы пуши прекратили приходить вообще?
>либо пинай бекенд В общем-то так и думал.
Просто у меня такая проблема, что мне нужно сделать логаут когда нету доступа к интернету / сети, следовательно я не могу сделать unregister ни к жсму, ни к бекенду.
>>517943 >Просто у меня такая проблема, что мне нужно сделать логаут когда нету доступа к интернету / сети, следовательно я не могу сделать unregister ни к жсму, ни к бекенду. Понимаю, у самого подобная система, нихуя не сделаешь так как сервак не всегда знает когда телефон в онлайне, клаудмесежинг вообще нихуя не знает и ему похуй, а отключение ресивера не поможет экономить пуши. Трафика юзерского они много не жрут если что.
>>514939 Зойчем? Он и так работает free for personal use - однако видел эту же ватермарку на скрине у парня из авиасэйлз, когда тот записывал туториал по анимациям
>>516190 >не подходит для новичков Да блядь! Он как раз самое то. посмотрел этот курс, пройдя половину с юдасити, который уже продолжил. Годно рассказали про анимации. А про сервисы, провайдеры и прочую залупу идите читать на developer.android - по видосикам хуй поймете
Не знаю как грамотно запрос сформулировать, так что скажу как есть. Есть одна мелкоборда, на сидим на ней с анонами 9-20 человек в онлайне. Борда оче мелкая и поэтому её нет ни в одном приложении для кроссбордеров. Хочется запилить андроидо приложение для неё, т.к. сидеть с браузеров просто кошмар как неудобно (панель ответа занимает под 60% экрана, если экран повернется то 80%, и если едешь в метро, например, после каждого разрыва соединения смартфон пытается прогрузить сайт полностью почему то, картинки не раскрыть из постов. И ещё куча мелких неудобств, типа вебм вообще не смотрит, разметка только вручную и т.д.). И ещё пара тройка анонов любит делать IWO, в самом сайте встроены быстрые фотки с камеры, но со смартфона конечно не робит, как и записи с микрофона.
Я сам не погромист, так что прошу хотя бы направить меня нахуй в нужном направлении, может уже есть блоги андроидобогов писавших chan app. Если найдутся гайды попробую из говна и палок собрать приложение под нужды, т.к. запросы невелики и первостепенно нужно только решить подчеркнутые проблемы, на дизайн приблуды и т.д. пох вообще, это вопрос некоммерческий а ради борды любимой. Api нет (я так понимаю это удобный интерфейс какой-то для разработчиков), доступ через http (в рашкореалиах через https иногда).
>>518401 Мне интереснее было бы самому поковыряться во всех этих proxyfactorybeans всё равно я нит тупой и ничто не доставляет тут хоть попердолиться смогу немного. Но если не осилю, всё же напишу разрабу Дэшчана или Оверчана, хоть и сомневаюсь что они будут допиливать приложение под борду с 3-5 активными постерами с андроида.
Добавляю 200 маркеров на карту (google maps v2) каждый раз когда дёргается onCameraChanged (скролл/зум). Процесс берёт ~1s и пользователь ждать секунду каждый зум/скролл не может (и не хочет). Дата для маркеров приносится с сервера.
Одно из возможных решений: Очередь в которую каждый раз будет добавляться партия с сервера. Как только в очереди что-то есть, параллельным образом её обрабатывают таски (AsyncTask?), и каждый таск добавит по 20 маркеров на карту. Когда кол-во маркеров на карте достигнет некоторого порога - карта чистится (убираются маркеры которых нет в данном view). Очистка будет проводится в отдельном треде (нечто в виде gc)
Таким образом пользователь видит постепенное появление тех же 200 маркеров, на разбитое по кускам.
То есть вроде как producer-consumer такой получается. В андроиде почти полный нуб, поэтому вопросы:
1. Чем пользоваться в sdk, дабы минимум велосипедизма? 2. Релевантен ли здесь asynctask в качестве таска который добавит 20 штук? 3. подводные камни и где я могу влететь?
>>518483 Ты хочешь сделать маркеры как в яндекс картах или что? Нахуй тебе вообще уперлось менять 200 маркеров по скролу? Что будет если захерачить три скрола подряд меньше чем за секунду? Треды ты просто так прерывать не сможешь.
>>518566 Да. Новых не было. Пару вопросов только искал не полным предложением, а частями, а то слова чуть-чуть отличаются. Если не можете найти какой-то вопрос - задавайте одно-два слова из середины, должно найти.
>>518558 >Ты хочешь сделать маркеры как в яндекс картах или что? Да, причём с кастомным битмапом у маркера. >Нахуй тебе вообще уперлось менять 200 маркеров по скролу? Чтобы при скролле/зуме юзер видел 200 маркеров. Это требование заказчика, показывать при скролле новую партию в 200. Вообще чем больше маркеров в заданных границах карты он видит - тем лучше. >Что будет если захерачить три скрола подряд меньше чем за секунду? Пошлются три реквеста, вернутся каждый с респонзом, добавят в очередь. Очередь обрабатывается тредами. Прерыватся треды не будут, тред просто не будет добавлять новый кусок в 20 маркеров если он не попадает в текущий latlng. При рождении тред считывает latlng.
>>518598 >Да, причём с кастомным битмапом у маркера. Ты же заметил что у яндекса нихуя не 200 маркеров? Они группируются в один. 200 маркеров слишком много для вывода, особенно по скролу, стандартные гугловские карты ели у меня на тесте выводили 200 маркеров через кластеринг. И то подлагивало при прорисовках. Плюс, они сбиваются в кучу и нихуя не видно
>>518642 >>Когда кол-во маркеров на карте достигнет некоторого порога - карта чистится (убираются маркеры которых нет в данном view ЧО ЭТО БЛЯДЬ? ВЫРАЖАЙСЯ ПО ЧЕЛОВЕЧЕСКИ, ТАТАРИН БЛИН).
Сап, ведраны. Вкатился к вам вчера, поставил Android Studio и обмазался startandroid'ом. Пробным путем установил, что стоковый эмулятор уж очень НЕТОРОПЛИВ, посему заменил на сторонний, но кодить придется в AS, который так же тормозит. Есть ли какие-нибудь другие IDE, помимо его и эклипса?
>>518736 Вместо эмуля юзай свой телефон. Лично я использую Megafon Login 2, полёт нормальный. Сама иде особо не тормозит. >Intel I7 >GeForce 710M >6GB DDR3
>>518745 Имею н5, но лень подключать его каждый раз, да и я перешел на Genymotion, полет нормальный, тормозит сама ведростудия. Хотя может в пекарне проблемы >i5 >intel hd 4000 graphics >4 DDR3 Потому как ОЧЕНЬ НЕТОРОПЛИВАЯ РАБОТА со сборкой и компиляцией по минуте.
>>518777 Хватит и 6 гиг. Очень долгие 1) индексирование проекта 2) сборка Компилит быстро как раз. Правда у меня за 4 месяца уже сам телефон иногда глючит.
Нужна библиотека для создания showcase как на скрине. ShowcaseView и RoboDemo больше не поддерживаются. Либо посоветуйте как еще можно объяснить пользователю некоторые элементы интерфейса и их функции.
>>519188 >Эти и юзай. Как все. Ну если сам разработчик написал что не поддерживает из-за кучи фиксов самой ос и хочет переделать. >Или напиши свою собственную и приделай донат. Идея пиздатая, может сам займешься?
>Application did not close the cursor or database object that was opened here Поясните за эту хуйню, на ведре ниже 4.1 матерится в логах но на работу не влияет. Да и если у меня много запросов к бд, открывать на каждом из действий и закрывать?
Не понимаю как в андроиде выполняются Runnable через Handler.postDelayed(). Вывел в run(){} название потока - получил main. Как это так оно параллельно выполняется, хотя поток тот же?
>>519572 Не работал с этим никогда, потому могу точно не понимать о чём ты, но скорее нет. Ты ставишь событие в очередь на обработку и оно выполняется когда дойдёт до него очередь. А добавляешь ты его в очередь во время обработки другого сообщения. Ну, эта логика ещё усложняется тем, что хэндлеров много и ещё можно устанавливать задержку обработки сообщения.
>>519617 помести эти два скрола в LinearLayout вертикальный, каждому установи android:layout_height="match_parent" и каждому android:weigth="1" или какие там тебе нужны пропорции
Анон, извиняюсь, если платина, но у меня такой вопрос. Какое твое приложение было первым? Недавно захотелось начать осваивать это ремесло, но даже не знаю, с чего начать. Была идея создать калькулятор, но это как-то совсем скучно. Хочется чего-нибудь поинтересней и в то же время не сложного, ибо с Java не совсем "на ты". Хочется заодно и улучшить свои навыки программирования на этом языке. Посоветуйте идею для простого приложения.
>>519942 У меня был клиент для сайтика. Пока все. Писал на js, все выполнялось в webview. Я веб-макака, но хочу написать что-то на джаве, хотя бы для общего развития
Anton pomogi plz, dai pozhalusta chto-to vrode posobia po java gde opisyvayutsya peremennye klassy etc. S nebol'shimi primerami. Ne mogu podobnogo najti.
>>520224 Чтобы слушать музыку. Только медиасервер здесь будет не домашний, а удаленный - сервер с музыкой от вконтакта. Приложение в виде родного вконтактовского плеера, только с выбором dlna устройства на котором будем проигрывать.
>>520244 Дык вот и не понятно, зачем нид? Если такое устройство будет работать онли внутри дома - с компа ставить воспроизведение на удалённом устройстве будет удобнее. А включать музыку извне не имеет смысла.
>>519952 Это усложнит программу, но не по части андроида. Если хочешь усложнить приложение, сделай каких-нибудь анимаций, обработки скроллов, т.е. что-то, что покажет, что ты знаком с платформой.
>>520488 >сделай каких-нибудь анимаций, обработки скроллов >покажет, что ты знаком с платформой. Да нихуя это не покажет кроме знания самих анимаций. Какие вообще обработки скроллов кстати?
>>520482 >Если такое устройство будет работать онли внутри дома - с компа ставить воспроизведение на удалённом устройстве будет удобнее. Тянуть провода к колонкам, бегать к компу, чтобы переключить музыку? Это не удобно и приведет к потере качества. Что будешь делать, когда у тебя в 2-х комнатах стоят колонки? Ставить 2 компа? На комп нет годных программ, чтобы гонять звук из VK через DLNA. >А включать музыку извне не имеет смысла. Где ты музыку берешь тогда, кроме как не из вне? Сам сочиняешь и играешь на рояле дома? Из интернета же. И здесь тоже музыка берется тоже из интернета.
>>520524 >Где ты музыку берешь тогда, кроме как не из вне? Сам сочиняешь и играешь на рояле дома? Я имею ввиду, выбор устройства для проигрывания. Это имеет смысл только если телефон находится в одном помещении с устройствами.
>Тянуть провода к колонкам, бегать к компу, чтобы переключить музыку? Охуеть, вообще 95% так и делают. И беспроводные колонки никто не отменял.
>На комп нет годных программ, чтобы гонять звук из VK через DLNA. Вот тут вообще не понял. Есть у нас аудиопоток. Задача состоит в том, чтобы выбрать устройство его воспроизведения. Ты хочешь сказать, это невозможно сделать с компа?
И во-вторых, с компа ты легко можешь сменить парашу на любой другой сервер.
>>520661 >Это имеет смысл только если телефон находится в одном помещении с устройствами. Так и есть и это очевидно. Не понятно зачем ты про это пишешь. >Ты хочешь сказать, это невозможно сделать с компа? Это удобнее сделать со смартфона или планшета. DLNA поддерживается также беспроводными колонками, но из следующего ценового сегмента. В отличии от bluetooth и проводов при передаче по wifi не страдает качество. Могу тебе сказать на собственном опыте, что такое приложение востребовано, а ниша не занята. Поддержка видео не обязательно, но пользователи хотят.
Пытаюсь получить список выбранных элементов ЛистВью и вывести его в текстовое поле. И пикрелейтед. Уже час медитирую на это и не понимаю, что не так. На соседней активити такой же код выполняется, а тут нет.
>>521024 Вот кстати хотел узнать: как ошибки обрабатываете? Выдаёте юзеру мессагу о том, что произошло, и отчётик в Google Analytics? Или ещё убиваете приложение, от греха подальше?
Посоны, сколько времени проходит с момента публикации *apk через консоль гугловскую до момента того как там все просрется и я смогу тестировать LVL (licensing)? У меня чото пишет ERROR_NOT_MARKET_MANAGED хотя вроде все чотко делаю :С Нужно ли версию каждый раз добавлять если публикуешь альфу? (или бету)
>>521159 Есть данные в json - разделим их на данные юзвера, которые часто обновляются, и данные о сериалах, которые так же обновляются, но реже (например вышла новая серия). Я это все загружаю по мере необходимости.
Вопрос знатокам: стоит ли кэшировать данные, если юз кейсов использования этого приложения нет? Не будет же пользователь открывать оффлайн свои статы и аутировать? Или будет?
андроидобляди, как вы вообще можете писать под эту парашу? как вы вообще осознаете что Microsoft сделало дебаг ndk в андроид приложениях на год раньше google (только на днях в андроид студии появилось)? Вы понимаете что самому владельцу платформы на вас насрать? Алсо ведь немало слухов что гугл понимает какой андроид провал и делает ставку на другую свою платформу chrome os. Да как вы вообще монетизировать то что то собрались, общепризнанный факт, что при меньшем числе пользователей Ios приложения приносят больше денег. Да как вообще себя надо не уважать, чтобы заниматься разработкой под это дерьмо, ладно поддерживать андроид в кросплатформенном коде, но изначально писать на джаве только под андроид? серьезно? каким же нужно быть говноедом. Нет денег на макбук - выдели побольше памяти виртуалке и поставь Mac os X на Vmware, открой Xcode и подумай как ты мог жить без него раньше. Никаких заеб с настройкой, все приятно и доступно, и это при том, что ты пишешь не на ширпотребском тормозном языке крутящемся на тормозных нестандартных виртуальных машинах, а на элитной компилируемой надстройке над чистым Си, если ты кросплатформенный господин, то легче чем здесь подключть к проекту c++ нигде не бывает. Хочешь быть на острие современных технологий? На тебе современный и охуенный Swift! Да ничего подобного в андроиде нет и судя по темпам развития средств разработки и не будет никогда. Перестань быть говноедом, измени свою жизнь к лучшему!
>>521170 когда то objective c был передовым, но ему много лет уже и теперь есть swift, который проще лаконичней и на порядок быстрее вашего глючного джаваговна. Xamarin говоришь? Виртуальная машина внутри виртуальной машины? Серьезно? Хотя если не нужна производительность то даже это перспективнее вашей джавы. И ты вообще вкурсе что есть гейм дев, где кресты единственный возможный на сегодня язык? Единственный, но гуглу настолько насрать на адроидодетей, что полноценный дебаг c++ в андроид студии появился в бета релизах неделю как, это при том, что Microsoft, владеющие Xamarin, но продвигающие c++ как кросплатформенное мобильное решение уже год как тестируют ndk c++ дебаг в visual studio 2015.
>>521182 Ее там нет, но если честно мне не понять зачем она там и нужна. В ios нет такого расброса девайсов и разрешений, там она не нужна. Если уж так охота, то можно извращаться на тех же крестах или просто использовать html интерфейс. И что то я не слышал про векторную графику в android, ну кинь тогда мне ссылку на гугловские гайдлайны, где есть о ней упоминание.
>>521178 > Виртуальная машина внутри виртуальной машины CLRка unmanaged и работает не в виртуалке соответственно > swift > проще лаконичней Простота и лаконичность != годность. Я на питоно-руби высеры смотреть не могу. Лучше уж скобочные сопли жевать обжектив сишки. > на порядок быстрее Это уже на совести компилятора и интерпретатора байт-кода.
>>521189 при изрядном количестве недостатков, денег приносит много, потому что монетизируется на раз, да и в разы интереснее, чем в сотый раз клепать какой нить стандартный table view, все таки мобильные приложения это не то программирование где у тебя есть хоть какая то свобода. Имхо интереснее гейм дева только хайлоад, но их можно совместить делая многопользовательность.
>>521182 Это ещё не все проблемы. Там у них ещё СЦЕНАРИЙНЫЙ ПОДХОД развит, это вообще пиздец. А обж-с - один из немногих языков, на которых писать нормально невозможно впринципе. Свифт - бесполезное говно, которое не зашло.
>>521193 >Это уже на совести компилятора и интерпретатора байт-кода. как будто у тебя есть выбор компилятора и интерпретатора >Я на питоно-руби высеры смотреть не могу. Именно поэтому пишу скриптоту на окамле. Но свифт и правда хорош и годен. Кстати под андроид уже на нем можно http://www.elementscompiler.com/elements/silver/ >>521194 не спорю, наверняка удобно в таком зоопарке девайсов, но ведь нераспространено.
>>521196 свифт уже есть на твоем андроде, писал выше. и скоро будет кроссплатформенным и все растокукаретики прейдут на него. как минимум будет системным языком яблочников
>>521202 Основные проблемы в android - это приложения, которые сильно зависят от железной начинки - у всех девайсов разные параметры железной начинки. Интерфнйс, одинаковый для всех экранов делается элементарно, причем не только от плотности пикселей он будет независим, но и от размера экрана. В купе с векторной графикой становится еще проще. Вот бы еще svg стандартными средствами грузить - можно будет сложные кастомные View делать.
>>521200 просто кукарек в никуда, obj c был и еще побудет в топе популярности языков программирования если у джавы отрезать тырпрайз сектор, то андроид по популярности перегонит
>>521208 не знаешь не говори. С чистыми сями совместимость полная, с крестами полная совместимость в Objective-C++. Алсо уж не jni ли по твоему пример отличной совместимости с крестами? Ох жеж лол
>>521210 рано о таком даже говорить то почему то уверен что вменяемый кросплатформенный свифт запилят первыми microsoft >>521211 да есть есть смысл все таки скобочкоебство занятие для любителя. но даже если ты готов быть скобочкоебом тот факт, что на свифте просто тупо меньше писать кода по объему, порой раза в три четыре, да еще и исполняется свифтовый код быстрее, уже существенный аргумент в его пользу
>>521235 стуяли Swift уменьшает количество кода, необходимого для повторяющихся заявлений и строк. В Objective-C, работая с текстовыми строками, вам приходится быть многословным, и чтобы объединить две части информации, потребуется множество шагов. Swift принимает особенности современного языка, например добавление 2-х строк вместе с оператором «+», что отсутствует в Objective-C. Такая поддержка для объединенных символов и строк имеет основополагающее значение для любого языка программирования, который использует отображение текста для пользователя на экране.
Система типов в Swift снижает сложность в написании кода - так как компилятор может выяснять типы. В качестве примера: Objective-C требует, чтобы программисты запоминали специальные токены строк (%S, %d, %@) и использовали разделенный запятыми список переменных для замены каждого токена. Swift поддерживает интерполяцию строк, что устраняет необходимость запоминания токенов и позволяет программистам вставлять переменные, такие как название ярлыка или кнопки, непосредственно во встроенную пользовательскую строку. Тип вывода системы и строки интерполяции уменьшают количество ошибок, которые распространены в Objective-C.
В Objective-C, если вы нарушили порядок расположения или использовали неправильный токен строки, ваше приложение упадет. Swift же снова освобождает вас от дополнительной работы: вы пишите меньше кода (в следствие будет меньше ошибок) благодаря их встроенной поддержке для обработки текстовых строк и данных.
Удаление устаревших конвенций намного улучшило движок Swift. Тестирования производительности кода в Swift по-прежнему указывают на то, что Apple продолжает преданно улучшать скорость работы приложений на Swift.
В соответствии с данными Primate Labs, по показателям популярного теста GeekBench (кросс-платформенный эталонный тест для измерения быстродействия процессора и подсистемы памяти компьютера) Swift приблизился к эксплуатационным характеристикам C++ по ограничению скорости вычислений с использованием алгоритма Мандельброта в декабре 2014 года. В феврале 2015 года Primate Labs обнаружили, что Xcode 6.3 Beta улучшил производительность алгоритма GEMM в Swift (алгоритма ограниченной памяти последовательного доступа больших массивов (a memory-bound algorithm with sequential access of large arrays)) до коэффициента 1,4. Начальная имплементация FFT (алгоритма ограниченной памяти с рандомным доступом больших массивов) - улучшение производительности в 2,6 раза.
Swift показал и другие улучшенные показатели при дальнейшем тестировании: 8,5-кратное повышением для FFT алгоритма (оставив C++ только с приростом производительности в 1,1 раза). Также, Swift превосходит C++ для алгоритма Мандельброта, коэффициентом в 1,03.
>>521248 ну и зачем ты тут мне цитируешь этот маркетинговый буллшит? насчёт производительности - они её через жопу изменяют - дебилу понятно, что все критичные места для iOS будут писать на C, а в других местах отличия по производительности (например, контейнеров) не важны
отсутствие указания типов, сложить строки через +, угадать placeholder-ы - это всё на радость школьникам, в долгосрочной перспективе это только увеличивает стоимость поддержки кода
>>521249 ну и как оно увеличивает? почему то думаю что ты сам школьник, как уменьшение объема кода, его большая читаемость (от скобок в глазах не рябит) и меньшая вероятность ошибок увеличат стоимость поддержки? Ты поехавший?
>>521252 популистская хуета без идей? да господи какой же ты у мамки максималист. Ты еще при этом джава программист и мне про без идей говоришь? Или давай твою джаву хотя бы с сишарпом сравним, непопулист идейный ты наш о боги. Ну или ты мне хаскели предложишь? Ты блядь тут что то про стоимость поддержки говорил, значит мы обсуждаем еще и рациональность языка на рынке труда. Что ты несешь, что ты делаешь со своей жизнью?
>>521254 чем язык "умнее" (угадывает типы, порядок аргументов и т.п.) - тем больше мозгоёбства программисту при поддержке кода, хороший пример - код на хаскеле - очень плохо поддерживаемый по этой причине
сейчас мы можем только гадать, если apple удастся раскрутить swift, а может microsoft сделают какую-нибудь йобу и зафорсят там F# - то всё пиздец, эта хуйня станет мэйнстримом... пока же предпосылок к этому не видно.. все эти новомодные языки пока только и страдают от детских болезней
>>521257 про мозгоебство я согласен но по твоей логике все должны писать на паскале как учат в школе, зачем нужны эти сложности. Все таки на серьезных проектах нет текучки, там есть системные архитекторы, которые работают на фирме десятилетиями и поддерживают свой код, вот им то "умные" языки и нужны. И при всем при этом твоя аргументация только на пользу свифту, он самый простой из всех новомодных языков и за ним стоит огромное бабло. Предпосылки уже есть как раз у свифта, apple собирается все новое писать на свифте и даже переписывать на него старое. А уж представь сколько они сначала выкинули денег на просчет всех тонкостей, чтобы их новый основной язык выигравал даже у неба даже у аллаха по юзабилити. Microsoft свою йобу не делает, он сейчас поступает умнее, он собирает в visual studio все мобильные инструменты какие можно, у майкрософт уже есть компилятор obj C. F# кстати хороший годный язык, но он сложноват. И кстати если для тебя угадывание типа - "умная" фича, то наверно веб программисты с языками с динамической типизацией тебе и вовсе кажутся все сплошь стивенами хокингами
Да кому нужна жаба и богомерзкий свифт если есть язык богов жаваскрипт? Я тралирую. Все языки говно по своему. Учить много языков = жрать много говна. А жаба норм. Ну не было делегатов, ну дали, еще даже не приходилось юзать, вешать ими листенеры хуево ибо не читается вообще. >>521254 >Или давай твою джаву хотя бы с сишарпом сравним Давай сравним хули. Делегаты есть, линкю нахуй не уперлось, единственный проебв структурах, так что иди нахуй. А еще джава сделала костыль для сачас множественного наследования. Да и в шарпы вливают уйму денег, а жаба сама себя держит.
>>521266 посмотрим... моё видение пока таково, что objective-с продержится ещё долго - в swift очень много шероховатостей и проблем совместимости (если для совместимости с C++ надо писать на Objective-C++ - то не проще ли всё сразу писать на Objective-C) - у меня есть несколько примеров когда молодые студии хватались с горящими глазами за swift, а потом им приходилось от него отказываться
насчёт microsoft и всей их затеи с Visual Studio 2015 - также пока не понятно, только-только выходит она, на каком уровне там совместимость с Apple и Android - не смотрел, да и вряд ли они смогут эту совместимость оперативно поддерживать (Borland в своё время слились с Delphi, привет паскаль, в большой части по этой причине)
насчёт веба - там же формошлёпство кругом.. код элементарный.. но и там бывает страдают от динамической типизации
>>521266 >он собирает в visual studio все мобильные инструменты какие можно Это говно для среднего юзера просто черная дыра для памяти, хуй пойми как совладать сов сем ненужным говном.
>>521266 >И при всем при этом твоя аргументация только на пользу свифту, он самый простой из всех новомодных языков и за ним стоит огромное бабло. А за го не стоит? Давай тогда го рекламировать для всего. На примере жаваскрипта можно было уже понять что неизвестно что куда стрельнет.
>>521275 о господи и за жабой и за сисярпом стоит тырпрайз, который их и содержит учить много языков = не остаться в 40 лет на улице, проработав 20 лет на одном и том же окладе >>521276 Я не спорю что продержится еще долго, но если сама аппле начент все новое на нем писать, то просто уже будет держаться на энтузиастах, хотя загадывать да рано, хотя бы конца года подождать, когда исходники откроют, тогда же мне кажется начнется первый бум портирования всюду формошлепство формошлепством, но часто на языках с динамической типизацией пишутся и бэкенды. Про совместимость с android и apple им просто жизненно необходимо поддерживать, винда на смартфонах провалилась, чтобы хоть какие то приложения были, надо дать все инструменты к портированию >>521278 очевидно, что не использовать ненужное говно, алсо как минимум можно за всеобъемлющую монструозность уважать. Алсо есть уже такое - https://code.visualstudio.com/ >>521280 я столько раз слышал от андроид программистов а вот бы го стал основным языком на андроиде, вот бы зажили. Но с учетом того как долго гугел делал поддержку крестов (а они напоминаю язык любого серьезного гейм дева, а гейм дев единственное оправдание постоянно растущим характеристикам мобильных устройств), то просто очевидно, что гугл сам уже не может совладать со монстром которого породил. >>521283 вы тут как будто из прошлого века, ни в коем случае не будучи фанатом JS очень удивлен успеху NodeJS и тому факты, что нодовцы самые высооплачиваемые специалисты в США
>>521289 что куда портировать? всё уже давно портировали и кросс-платформенные ядра на C/C++ у всех рынок США - это вообще вещь в себе - ты посмотри ради интереса какой процент из топовых контор используют это nodejs - примерно 0% лол.. и поделом
да в том то и дело что не у всех ядра есть, как минимум в небольших и средних предприятиях зачастую есть тимлиды фанаты одной из платформ, считающие что все нужно писать на нативных языках, а на слова про кросплатформенность и упоминание противоположной платформы источающие итры яда
>>521289 >я столько раз слышал от андроид программистов а вот бы го стал основным языком на андроиде, вот бы зажили. Я хз от кого ты такое слышал, потому что я только от го-дебилов слышу. Не то чтобы все кто на го пишет дебилы, просто вот ты свифто-дебил, а есть го-дебилы, есть жс-дебилы, сейчас их больше всего. Суть таких дибилов в попытках засунуть свое говно куда только можно.
>>521298 >а на слова про кросплатформенность и упоминание противоположной платформы источающие итры яда Ты же вкурсе что жаба кросплатформена? Потому идея написанная на жабе кроссплатформена. Вообще нахуй ты завуалировал свои сярпы тут?
>>521299 чини детектор по специальности я крестоблядь мобильщик, но вот как то принял проект на обж си и настолько я не люблю obj c, что все писал в дальнейшем на свфите, и так оно на душе то легче стало, что не вообразить и никаких подводных камней. А так я скорее окамле-дебил, но это другая песня
>>521300 я про мобильные платформы и холивары яблочников с андроидовцами. Мне вот как то похуй так как пишу сразу и под то и то, но сам лично купить себе смартфон на ведре бы постремался
>>521303 >ты попиши на шарпах, жабе и жсе, чтоб уж точно понять. >После крестов все манна небесная. неосилятор мне вот, например, удобнее всего C++, потому что опыта на нём больше всего - написал и сразу всё работает збс
>>521303 да писал я и пишу иногда. но кресты я таки люблю и уже по прошествии лет пишу на них быстро дерзко и кросплатформенно, так что мне ваши джавы и не нужны. Алсо пикрилейтед
>>521301 вот как интересно получается... я точно так же с крестов начинал под Android и iOS, но так проникся их фреймворками для Java и Objective-C, что всю GUI-часть на них сделал и в последствии вкатился в мобайл дев насчёт Objective-C - просто зависит от времени, со временем эти его скобочки перестают раздражать
>>521309 а вот прикинь все то же, что есть в обж си, все то же доступно и в свифте, но даже к скообочкам не надо привыкать и писать на тонну меньше по объему единственный минус - лишние 5 мг сфивтовых библиотек в проекте, единственный
>>521313 я тебе уже несколько раз писал что в swift и без этого много минусов - постоянно то одно не так работает, то другое насчёт синтаксиса - вопрос вкуса, мне его питоноподобный синтаксис не понравился
>>521316 а мне вот он окамль больше напомнил по синтаксису https://ocaml.org/ разные фишечки из мира функциональщины радуют ну я писал на еще первой ипостаси свифта и не словил ни одной проблемы и даже передал проект если честно я даже не могу представить что там может раблотать не так сейчас уже вторая версия и язык продолжает стабилизироваться и обрастать фичами
Как вообще пишутся мультплатформенные приложения? Ведь у приложений даже жизненные циклы разные. Или если писать на ксамарине не будет онкрийта контролере? Да и не понятно почему рынок полон нативных приложений, если по факту кроссплатформенные ничем не уступают. Интересно так как опыта работе на ведро на жабе у самого пол года. Хуй знает оставатся или перекатыватся. Писать смогу на чем угодно.
Вопрос по коллекциям. Допустим, у нас есть ЛистВью с выбором школ, а чуть ниже него текстовая метка. Выбираем школу, переходим на новую активити со списком учеников этой школы (тоже ЛистВью, но с мультивыбором). Отмечаем нескольких учеников, возвращаемся назад - и список учеников выводится в текстовой метке. Идём в другую школу, там тоже выбираем - список увеличивается. Можно зайти в уже пройденную школу и поставить галочки другим образом, тогда и список изменится.
Я сначала подумал сделать это через АррайЛисты или SparseBooleanArray. Один общий и по одному для каждой школы. Но жопой чувствую, что тут можно придумать что-то более изящное. Я прав, или здесь по другому не получится?
>>521423 Я пока что допридумывал до такой конструкции: активити выбора школьников шлёт две переменных: список выбранных и список невыбранных школьников. А потом они обе накладываются на HashSet, который содержит общий список выбранных школьников со всех школ.
>>521423 У тебя есть объект школы и объекты учеников как collection<> в школе. Ты можешь завести поле isSelected у учеников и опрашивать его в цикле на каждой активности, либо тащить sql-ным запросом. Если используешь фрагменты, то необходимо предусмотреть способ оповещения фрагментов об изменении, eventbus или собственный велосипед. Если только активности, то достаточно в onResume составлять список заново.
>>521437 >на планшетах А если телефон? >а фрагменты зделал? Нет, до них пока не дошёл. Пытаюсь сейчас набить опыт на жонглировании активити.
startActivityForResult же может ожидать возвращение любого типа данных, не обязательно String? Допустим, после выбора школьников мы формируем HashMap, где ключи - фамилии, а значения 0 или 1. Передаём их в главную активити. И накладываем на общую HashMap, в которой изначально есть все ключи (фамилии всех школьников), а значения равны 0. А когда нужно отобрать список - отображаем только тех, у кого 1.
>>521453 Если ты оооочень хочешь startActivityForResult, то получаешь следующее: HashMap<номер школы, список выбранных учеников> В результате возвращаешь список учеников и школу, подсеняешь список в карте и собираешь в стрингу выводя это где тебе надо (или не в стрингу)
Выше спрашивал про GCM. Появился новый вопрос: если у меня приложение с несколькими аккаунтами (переключаются эксесс токены), то мне нужно на каждый аккаунт регистрировать пуши на сервере (VK Api). Если я переключаю токен, то есть аккаунт, то мне нужно сначала сделать unregisterDevice или можно сразу registerDevice поверх существующей регистрации?
registerDevice и unregisterDevice это методы VK Api.
>>521718 Могу тлько посоветовать читать именно документацию вкапи. Вообще "чистая" регистрация происходит за счет сендерИд(идишник сервера от которого получишь пуш) и твоего пэкеджа. А как вк реализовал тут хз.
Смотрите, народ. Есть у меня BaseAdapter свой, там в imageView надо загружать изображения из списка по ссылкам. Делаю в асинктаске, изображения загружаются хаотично и мелькают постоянно. Где собака зарыта?
Ананы, смотрите какая ситуация. Есть данные о ~50-60 сущностях, которые я тяну в json. Там содержатся и заголовки, и ссылки на картинки, и все остальное. Я это дело расчленяю, кладу в pojo каждый раз pojo создаётся внутри асинктаска, а их в свою очередь в коллекцию, которую отдаю адаптеру, благодаря которому наполняется ресайклер с карточками. Суть в том, что я не хочу ждать, пока прогрузятся все 50 карточек проходит секунды две. Есть способ загрузить, например, три пожо, отдать в датасет и дальше по цепочке и получать остальные сущности по скроллу?
список с ид сущностей получается из одного большого джейсона, подробная инфа о каждой сущности напрашивается отдельно
>>522050 Еси=ли обновлять при запуске, наблюдаем паузу в 1-2 сек и теряется смысл сохранения в данных в базе. Если я что-то не в ту сторону понял, то поясни, пожалуйста.
>>522021 Понятия не имею. Я прослушал весь их курс и даже желания участвовать в грёбаном тесте никакого нет. Они пидарасы, и курсы их педерастичные. Это не "школа", а говно какое-то. Настолько убого сделать учебный курс даже у Васяна из 8Б не получилось бы. Пусть подавятся своим сертификатом от гугла.
>>522136 Если там вопросы такие же, как в лекциях были, то хуй их правильно ответишь. 22 из 25 нужно правильно, при этом часть их сформулирована на отъебись. И всего две попытки. Не получится с двух - свободен.
>>522136 Думаю лучше махать получится своим гитхабом и/или гугл маркетом. Ибо сертификат это конечно круто, но применение скиллов, описанных в бумажке важнее оной.
>>522144 Ну это уже исходя из опыта. Если у тебя один проект за спиной, и тот не сильно крутой, то бумажка всяко лучше быдлокода на гитхабе.
FLAG_ACTIVITY_REORDER_TO_FRONT Эта хуйня не работает как нужно, тестил на 5.0.1 активити просто пересоздается. На версиях ниже вроде как ок. Когда вешаю на интент для пендингинтента оно вообще не делает ничего на всех доступных мне версиях. Подскажите аналоги, костыли и тд.
>>522112 Очень даже норм, просто не для новичков. Если ты вот нихуя не слышал о том, что такое активити - тебе будет жопа. Если ты уже проскроллил startandroid, либо написал калькулятор - норм. Охуенно рассказали про фрагменты, сервисы, анимацию.
>>522222 >просто не для новичков Вот именно. А они-то позиционировали свою "школу" именно, как школу. Мол, если немного умеешь в жабу, то всё ок будет. А на деле это так, дополнительные материалы для обучения по какой-то своей программе. Вот поэтому и пидары.
Блин, меня это заебало, сам я постоянно сомневающийся начинающий программист. Так блять сейчас бытует мнение что основная проблема ведра это джава, или у меня паранойя? Котлины-хуетлины, злоебучие шарпы, го-хуйо, джаваскрипт, даже ебучий луа, а теперь еще и свифт?
Что выбрать то? На чем лучше? А кроссплатформеные? Фонгеп хоть лагает как сучка на всем. Но как вообще подобие на ксамарине может взлетать не хуже, а то и лучше на всех блять платформах? Как?
Чем блять всех так подкупают вары и нечитабельные делегаты? Их даже по прямому назначению не юзают. Что значит проще писать, когда разница в двух строчках которые генерируются ебучая ИДЕ? Ой смотрите, там быстрее можно в классе написать ридонли переменные. Будто блять уебать два поля и с помощью ИДЕ сложно сгенерить два сетера.
>>522298 основная проблема ведра - куча легаси устройств на рынке и проблемы дизайна android (типа 65K методов хватит всем и т.п.)
сравнивать javascript с xamarin - это как жопу с пальцем.. javascript - интерпретируемая параша, а xamarin компилирует в чё надо. алсо xamarin-ом мало кто пользуется ибо проще писать на java (проблем будет меньше)
всякие kotlin-ы - блажь jetbrains, взлетит не раньше, чем swift у apple (т.е. в ближайшие пару лет можно не обращать внимание)
у scala/clojure на android дохрена проблем и лучше и не пытаться
алсо если есть какое-то легаси на C++, то можно почти без проблем впендюрить себе в java-проект с помощью NDK (JNI)
>>522305 >алсо xamarin-ом мало кто пользуется ибо проще писать на java (проблем будет меньше) Но какой профит в скорости/ресурсах разработки получится если пойдет сразу на 3 платформы. Я просто не верю в эту серебряную пулю. Смотрел код на ксамарине один раз, так там почти полная копия нашего сдк, как они им айфоны пользуются? А что с жизнеными циклами и всякими фичами ОС типа интентов и сервисов?
>>522313 сделаешь быстро, а потом упрёшься в какой-нибудь неочевидный баг на одной из архитектур и привет... потратишь овердохуя времени алсо винмобайл как не платформа вообще - никто на них не обращает внимание и не пишет ничего
>>522316 >сделаешь быстро, а потом упрёшься в какой-нибудь неочевидный баг на одной из архитектур и привет... Да тут на джаве с сдк глаза лезут на лоб от всяких "ну короч в киткате батарею будем беречь и переделаем все начиная от алармменеджера до геолокации", как блять это вообще в кроссплатформенной апликухе можно обскакать,учитывая еще и особенности иос?
Прикрутил к своей хуйне загрузку по скроллу ресайклера, но при загрузке я вижу рывки. Не долго думая, побежал глядеть, что в каком потоке работает. Выяснилось, что наполнение коллекции данными происходит как и надо в отдельном потоке, а обновление адаптера в main. Где я обосрался и как это починить? pastebin.com/E0Vw7Y1W
>>522342 Решил проблему, унаследовав фрагмент, в котором лежит ресайклер от интерфейса с одним единственным методом receive(List<> data). В конструктор таска отдаю фрагмент в качестве одного из аргументов, в postExecute этого же таска отдаю готовые данные с помощью метода receive. В этом методе сам фрагмент отдает данные адаптеру и уведомляет его о новых данных. Адаптер уже делает все как обычно.
Что-то не пойму, если одна за другой открываются несколько активити, а потом закрываются и мне надо работать в первой активити с переменной, которую определили в последней активити, то её нужно последовательно передавать по активностям через интенты? Или наоборот, в первой активити определили переменную, а в пятой по счёту она используется. Прям при создании каждой новой активити писать intent.putExtra?
>>522549 > Прям при создании каждой новой активити писать intent.putExtra Да. У тебя во время очередного открытия активити самая первая может умереть. Либо можешь в Apllication завести статик поле и обращаться к нему, но опять же, когда приложение свернут, оно может умереть.
>>522552 > Либо можешь в Apllication завести статик поле и обращаться к нему Лол, да нахуя, можно в любом месте это статик поле завести. Но завозить не надо вообще, разумеется.
>>522836 Тут надо разобраться с жизненным циклом самой апликухи. Статик в активити может попросту пересоздаться когда активити удалится системой, а статик запросят с другой активити. А вот что если в классе апликейшн это делать я хз.
>>522917 > Статик в активити может попросту пересоздаться когда активити удалится системой, а статик запросят с другой активити. Не бывает такого, далвик/арт не умеет выгружать классы.
>>523081 > всегда Существует, пока существует Application. Как только аппликейшн выгружается (т.е. не остается рабочих сервисов, активностей и т.д.) статика отмирает.
>>523331 Ну, и что? 1. Пишем в статик поле активити 2. Уничтожаем активити 3. Статик поле доступно из сервиса и имеет прошлое значение Ты сам с этим согласен, что не так?
Сейчас прохожу курс по андроиду на этом сайте teamtreehouse.com. Там запиливают простое приложение, которое по нажатию кнопки показывает рандомный факт и меняет цвет фона на рандомный. Я написал это приложение чуть по другому с заделом на добавление дополнительного функционала на будущее и добавил проверку на выпавшее число, что бы не показывался один и тот же факт/цвет фона подряд. И в это проверке и есть проблема. Когда быстро клацаю кнопку все нормально, но иногда происходит затык на ~0.5 секунды или даже меньши, но на глаз заметно. Насколько я понимаю это происходит как раз в случае выпадения одного и того же числа подряд. Это нормально для андроида? Или я совсем наговнокодил. Думал что такой простенький цикл для проверки и создание повторно рандомного числа вообще должны происходить моментально и никаких "затыков" быть не должно. Код проверки на пике. Весь код тут https://github.com/anerisama/FunFactsApp/blob/master/app/src/main/java/com/anerisama/funfacts/FunFactsActivity.java
А так я и пытался тебе это донести, используя статик переменные ты можешь наткнутся на некачественные данные, так как андроид может убить твою активити и не только. Правда в том что именно он из памяти может выгрузить я хз.
>>523371 > А так я и пытался тебе это донести, используя статик переменные ты можешь наткнутся на некачественные данные Где ты пытался мне это донести??? Вот наш диалог: >>523318>>523320>>523322. Какое он отношение к выгрузке классов имеет, о чём ты вообще говоришь?
Класс действительно не может быть выгружен. Может быть убита активити с последующим уничтожением объёкта активити, но класс загружается 1 раз и "живёт" пока не будет убит процесс. Следовательно, данные, записанные в статик поля, в них и останутся, пока не будет убит процесс.
>>523603 > Ты дебил. Нет ты. > И на практике поля все же перезаписываются на изначальные. Это происходит только в одном случае - килляется и перезапускается процесс.
И вообще, я тебе про апельсины, а ты мне про дилдаки блядь. Речь о том, что не важно, где присутствует статик поле: в аппликухе, в активити, в левом классе. Разницы от того, записал ты значение в статик поле Application или в статик поле Activity нет никакой. Хранить данные в памяти они будут с одинаковым успехам.
А судя по твоему "а вот на практике..." ты слабо знаком с матчастью вообще, о чём разговор-то?
>>523604 С какой матчастью долбоебина? Ну ка расскажи в каком случае в ведре килятся активити а в каком сервисы и прочее. Ведь по твоей логике все части апликухи подгружаются и висят пока сам процесс не сдохнет.
>>523609 > Ну ка расскажи в каком случае в ведре килятся активити а в каком сервисы и прочее. Это тут причём? То, как они килятся, зависит от многих факторов, включая говнокод. > Ведь по твоей логике все части апликухи подгружаются и висят пока сам процесс не сдохнет. Нет, но они подгрузятся при первом обращении. Если ты напишешь ServiceName.staticFieldName = "mamuebal"; из активити при не запущенном сервисе - класс подгрузится и статик поле примет указанное тобою значение. Хотя тут могу ошибаться, возможно, классы, которые прописаны в манифесте, реально все сразу подгружаются, впрочем знание этого мало когда может понадобиться. И пока жив процесс, значение статик поля никуда не исчезнет.
>>523612 > Хотя тут могу ошибаться, возможно, классы, которые прописаны в манифесте, реально все сразу подгружаются, впрочем знание этого мало когда может понадобиться. Разумеется нет, только что проверил - все работает как я сказал: подгружается по требованию.
>>523604 Хотя почитал, таки далвик не выгружает классы. На счет арт хз.
Я просто когда-то делал подобный костыль и прихуел от того что он срабатывал, но не всегда. Иногда статики возвращали дефолтное значение. Но ведь при киле процесса он не может пересоздаваться. Или может процес умирал между до момента когда аларм менеджер запускал интентсервис, не помню уже нихуя.
>>523614 > Хотя почитал, таки далвик не выгружает классы. > На счет арт хз. Оба не выгружают классы.
> Я просто когда-то делал подобный костыль и прихуел от того что он срабатывал, но не всегда. Возможно, перезапускался процесс. Возможно, ты где-то накосячил.
Я сам во время работы не раз натыкался на ситуации "дакак так, должно работать блеать!!!", а потом оказывалось, что я недостаточно знаю матчасть. Из последних моих косяков, например, была такая хуйня. Добавил что-то вроде такого поля в сериализуемом классе: public final transient Object o = new Object(); Каково было моё удивление, когда после десериализации эта переменная была равна null...
>>523617 >transient Не приходилось на практике использовать. Но это такое.
Может подскажешь чего, а то сколько не гуглил так и не нашел ничего. >>522153 В тупую на двух идентичных самсунгах с одинаковым ведром оно игнорит флаг.
У меня прогвард перестал работать. Добавляешь удаляешь в билде файл, ему попросту похуй.
>>523735 >Никогда не копипастил код Ты добавил модификатор который убивает сериализацию, и для этого был создан, а потом удивлялся почему сериализация не сработала?
>>523740 > Ты добавил модификатор который убивает сериализацию, и для этого был создан Я этого и добивался > а потом удивлялся почему сериализация не сработала? Я удивился, что final поле не проинициализировалось.
>>523744 Да, инициализация происходит при создании объекта (всё равно что в конструкторе явно написать o = new Object()), а при десериализации конструктор, ясен хуй, не вызывается -> инициализация не происходит.
>>524109 Расскажи на чем писал, как с прогуардом работает? Переподпись сломает все апликухи с картами и тд. Довольно интересно посмотреть как ты саму пересборку устроил.
>>524123 Если ты о самих приложениях, то они не для распространения, а для инсталла. Впрочем, если кто-то выложит на файлопомойку я против не буду. Если ты непосредственно про само приложение, то зачем гитхаб я не знаю.
>>524126 С прогуардом нормально работает, думаю в следующих релизах сделать деобфускацию от вашего прогуарда. Большая проблема с геттерами-сеттерами, копипастой кода и разными версиями либ, но не критическая, понять где говно можно. С декомпиляцией сложно, но пока там только простенький дизассемблер, декомпилятора нет.
Если ты о гуглокартах, то все гугловые модули на корню вырезаются. Хотел было въебать туда ОСМ-карты, но это во первых усложняет компилятор, во-вторых кто-то должен написать дроп-ин замену с эмуляцией всех фишек гугля, а у меня на это нет нет.
Переподпись самодельная, но идентичная штатному сигнеру. Считаем sha1 много-много раз и вот у нас подпись.
Имеющиеся замены в виде ОСМ-карт ебучее говно-говнище, не говоря уже о наборе фич. Я бы мог написать свое, но это будет долго, да и мало толка, если весь гмс не эмулировать. А для этого, имхо, нужно много людей. Да и внутренний компилятор допиливать опять же. Быть может, если тут кого-то найду, может быть что-то и будет.
Кстати, если у вас есть разные версии ГМС-либы, то выложите на рыгхост, а то старых версий найти сложно.
>>524136 Звучит в общем весело, но все гугловские сервисы вырезать как кастрировать ведро. Да и вообще это все на плюсах же пишется, все декомпиляции и тд. Мне лично опыта на плюсах не хватит, да и по правде нахуй ненужно, так как учить само ведро еще надо чтоб на норм работу устроится. Но добра тебе. Поищи в других тредах.
>>524149 При выпиливании гуглозонда становится гораздо удобнее и приятнее. Следующим делом надо будет попробовать сделать свой гуглоплей.
Декомпиляторы обычно написаны на жабке, но у меня все на голой сишечке и адовых костылях. Потому не стоит стесняться. Плюсов тут нет вообще. И как раз ведро выучишь, правда на работе тебе это не поможет, там как правило макакинг, а сишечка для серьезных вещей.
Других тредов, хоть немного релейтед, я не знаю. Немного обидно проебать больше года и видеть фидбек из /mobi/.
>>524181 >но у меня все на голой сишечке и адовых костылях. Это. >И как раз ведро выучишь, правда на работе тебе это не поможет, там как правило макакинг, а сишечка для серьезных вещей. Ндк на плюсы сделана. А ты не проебал год, просто подожди и в тред тех же сишников зайди, по сути тут ведра лишь косвенно касается и скорее работа не с самой осью а продуктами которые она использует.
Но действительно интересно и может взлететь. Сам сейчас на стартапе пол года и хочу уже поработать на дядю ибо заебало.
Мне нужно хранить пару таблиц, каждая по полсотни значений. Туда приложение будет скидывать свои данные между запусками. Будет ли по фен-шую хранить их в SharedPreferences?
И ещё вопрос: мне нужно сделать так, чтобы пользователь мог ткнуть в значение некоего элемента и тут же появилась поверх всей активити формочка для изменения этого значения. Как это вообще делается? Я пока только придумал новую активити сделать, но она не будет поверх, а будет вместо, что некошерно.
чет захотел создать простенький плеер для ведра и начал качать все что нужно по гайду потом понял что на установку ушло часа 2 только потом запустил и охуел андроид студио выжрало почти 2 гига оперативки судя по диспетчеру и начало дико свопить и я нихуя не смог толком переключить в настройках даже это что блядь чтобы написать что то уровня play/stop мне нужно блядь 10 гигов оперы блядь это че такое блядь пиздос протсо блядь
>>524354 У меня студия жрёт 1Гб и 2Гб эмулятор при работе. так что 3 с копейками в общей сложности. Если у тебя всего 4Гб, то со скрипом, но будет хватать. Но лучше таки да, побольше иметь.
>>524342 Если тебе нужны связи - то твой выбор - SQLite, однозначно. А так, зависит от того, что конкретно за данные. В Shared Prferences обычно, хранят данные о непосредственных настройках приложения. Для всего остального существует БД.
>и тут же появилась поверх всей активити формочка для изменения этого значения
Гугли Dialog, что-то надо делать с ним.
>Я пока только придумал новую активити сделать, но она не будет поверх, а будет вместо, что некошерно. Нет, она будет именно поверх, если не мутить ничего с бэкстеком. Можешь, кстати, погуглить метод startActivityForResult - хорошо подойдёт тебе
>>524346 >>524347 Вообще не понимаю этих проблем с оперативкой. У самого 3 гига - два открытых окна студии + эмулятор работают норм. Разве что, лаги при загрузке студии.
>>524366 >Гугли Dialog Ага, судя по названию, должно быть оно. >startActivityForResult не, это тот же вызов новой активити, только с ожиданием результата. Можно, конечно, но мн хочется, чтобы пользователь видел в фоне остальное приложение. >SQLite Чёрт. У меня, грубо говоря, есть таблица. По горизонтали классы, по вертикали фамилии учеников. А в самих ячейках - их оценки по чистописанию. Данных не особо много, но и пальцев на обоих руках не хватит, чтобы пересчитать. СКУЛ, значит? А Internal Storage нельзя?
>>524369 >По горизонтали классы, по вертикали фамилии учеников. Ну ты там почитай про БД, нормализацию, поймёшь, как тебе организовать связь.
>А Internal Storage нельзя? Internal Storage - это внутреннее хранилище данных. У тебя там и так база будет сохранена, в папке приложения. Если ты хочешь руками в отдельный файл писать - это будет бессмысленный велосипед. В твоём случае 100% стоит использовать бд.
Читаю книгу пикрел, там рекомендуют использовать у полей классов префиксы, типа m=member, s=statis и т.д. Поясните за эти префиксы, в реальной жизни они используются? По-моему это долбоебство.
Что делает код мы не знаем, но по такой базе можем ванговать с высокой точностью. Первым делом надо набить всякими рефлекшенами и прочей гадостью, которой пользуется малваря.
3. Нужно создать базу пекеджей вроде android/annotation - ненужное говно от компилятора android/support/v4 - библиотека костылей com/actionbarsherlock - костыль для акшонбара и не только com/google/ads - реклама от гугля com/google/android/gms - гуглозонд com/lmsa/cqkv143768 - airpush троянец com/startapp/android - еще одни рекламные пидоры
Конечно, надо это как-то рассортировать на категории, быть может присвоить этому риски или даже советовать юзеру удалить приложение с этими говнами. Точную схему таблиц сам затрудняюсь назвать, но для начала хотя бы названия гадости + "свой-чужой" + что делает.
По такой базе можно резать гадости/обновлять нужности
Если заинтересовались, пишите какие-то контакты. Ну и предложения как такие базы наполнять тоже, я слабо представляю как запилить групповой датаентри.
Если не сложно, репостните в следующий тредик. Пожалуйста.
>>524443 Это так называемый "кодовый стиль". В некоторых компаниях обязателен, в некоторых не нужен. Бывают и свои стили, ни на что не похожие. На выполнение кода никак не влияет, но бывает полезно если читаешь чужой код и пытаешься понять что это за хреновина - сразу ясно что mHui - член класа.
>>524443 С нормальной IDE такое не нужно, используется только разными упоротыми личностями. Единственно что немного распространено (не в джаве) выделение приватных полей/переменных (например подеркиванием).
Господа, прошу помощи. Есть один апп и есть сервис, который в нем создается. И после того как убивается апп, соответственно убивается и сервис. Как сделать так, чтобы сервис жил после закрытия апа? В манифесте android:process дописал, но это нихуя не помогает.
>>524456 А как ты тогда разделяешь, когда у тебя есть метод, который должен обработать аргумент, что-то с ним сделать, положить в переменную, которую после дальнейшей обработки положить в приватное поле объекта? Ну, например, Entity.setPosition() сделать с пересчётом координат.
>>524765 Муахахах, я хуею. Еще год назад до выпуска свифта выли, мол, обжс дохуя сложный, но это заебись, а андроид с явой для обезьян пишущих мышкой. Сейчас щинки на ц не писавшие уже яву простым и красивым языком не считают.
У меня такой вопрос. В Java есть Random. С которым можно дженирить случайные числа. А вот допустим у меня есть 100 файлов, звуковых, и я хочу, чтобы при нажатии кнопки один из 100 файлов случайно выбирался и включался, то как это сделать? Хотя бы дайте тэги для гуглинга.
mySound = MediaPlayer.create(this, R.raw.1 | R.raw.2); И включается всегда 2. Где логика? Написано же "Врубай либо 1 либо 2", почему он не может хоть раз выбрать 1? Может кто-нибудь помочь?
Ребят, у меня в одном классе один объект равен какому-то числу. Пытаюсь вызвать этот объект в другой класс, и мне пишут: "Нихуя не знаю. Это кто такой?". Как мне этот объект поместить в другой класс, если он рандомный?
1. Есть у меня активити со списком писем, я жму на письмо, открывается другое активити с содержимым письма. Как-то это половчее сделать с фрагментами? 2. Я создаю письмо во втором активити. Как передать в первое активити сообщение, что письмо было добавлено? Бродкастресивером или ещё как-то можно?
Как в андроид студио сделать так, чтобы при блядском перетаскивании одного баттона, не двигался другой? А то один перетаскиваешь и они все в одном месте слипаются. И еще - можно ли повернуть на 45 градусов баттон? Также хотелось бы более плавное передвигание элементов, а не по 50 пикселей скачками
>>525524 > интерфейс билдер Как там в ламповом 2006 в борланд дельфи студии? >>525325 > Как-то это половчее сделать с фрагментами? В чем суть вопроса? Один фрагмент с содержанием, второй со списком. Меняешь фрагменты по необходимости или выводишь рядом. > Как передать в первое активити сообщение, что письмо было добавлено Ну можно тем же startActivityForResult и в onResult поймать. Еще EventBus есть.
>>525539 Хочу переделать, чтобы были фрагменты, но примеров не видел, боюсь это затянется на неделю. Например, как определять, отображать только список или оба фрагмента сразу? И поведение же меняться будет от этого.
>>525602 1) Почему? И как делают дизайн для мобильных приложений? Типа для 5 дюймов такой, для 7 такой? Но сам .apk файл ведь один. А то у меня одно и тоже приложение на Nexus 5 распидорашивается, а на 7 отлично выглядит
>>529066 студия же показывает сколькко процентов устройств на данный момент поддерживает данное апи, ориентируйся на 80% примерно, больше нахуй не надо
для начала сгодились статьи которые в топике, однако есть проблема которую трудно загуглить и нет в теории. может кто поможет? в общем пишу мессенджер, внешний вид чата такой: заголовок контейнер для сообщений поле ввода + кнопка отправить Также как у VK и Viber. Но когда я нажимаю на поле ввода, все элементы, включая заголовок смещаются вверх, а мне надо чтобы заголовок оставался в шапке. VK/Viber сохраняют заголовок как надо, как пример. Значит как-то можно это сделать. Но как? Спасибо
Коротко о главном:
1) Если ты учил джаву но не хочешь пилить тырпрайз до конца жизни - то добро пожаловать в андроид разработку.
2) Android Studio & Java - единственный легитимный набор.
3) Xamarin -для богатых и ебанутых виндовсопоклоников, медленно и невыгодно, но на шарпах.
4) PhoneGap - не пробовал но осуждаю, как и весь не-web на js.
Где брать инфу:
Интернет-ресурсы
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. Хотя чего тут объяснять.
Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development
Пред. тонет тут: https://2ch.hk/pr/res/493522.html