Это копия, сохраненная 4 июня 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
> Хочу вкатиться в разработку под Android! С чего начать?
Большинство приложений написано на Java, выучить её на хорошем уровне — это первое, что необходимо сделать. Рекомендуемую литературу см. в Java-треде.
После этого можно установить Android Studio, открыть официальную документацию http://developer.android.com/training/index.html и попробовать создать по туториалам своё первое приложение.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.
> Мануалы?
- Официальная документация: http://developer.android.com/
- Полезный гайд для начинающих и продвинутых: http://guides.thecodepath.com/android
- Бесплатный видеокурс от Google для новичков: https://www.udacity.com/course/android-development-for-beginners--ud837
- Два ресурса, единственный плюс которых — русский язык: http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
- Классика, способная дать ответ на почти любой вопрос "Как сделать xyz?": http://stackoverflow.com/
> Не хочу писать на Java!
- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. Можно использовать в проекте вместе с кодом на Java.
> Есть что-то кроме нативных приложений на Java/Kotlin?
- Qt — кросс-платформенный фреймворк на C++. Используется в основном для игры и для приложений с высокими требованиями к производительности (обработка изображений, звука, ГИС-системы). Спрашивать в C++ треде.
- Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде.
- PhoneGap/Ionic/Titanium/ReactNative — имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.
> Хочу писать игры!
LibGDX или Unity. Спрашивать в /gd/.
> Что нужно, чтобы взяли джуниором? Что учить в первую очередь?
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library, shared preferences, SQLite), знание популярных библиотек типа Retrofit + Glide/Picasso. И хотя бы оно готовое приложение.
Предыдущий тред: https://2ch.hk/pr/res/940781.html (М)
Начинать всегда лучше с официальных гайдов.
В шапке же есть, алё!
>>957248
Никакого вранья. Стек осваивается за 2 недели при наличии свободного времени. При желании, можно даже чуть быстрее.
Разумеется, в эти 2 недели не входит время на то, чтобы научиться писать код и рабочие программы как таковые.
Может, вы просто тупенькие? Хотя ладно, люди разные, может я и правда слегка перегнул. Просто себя я умным совершенно не считаю.
>>957254
Я опять же имел в виду, когда ты уже под андроид пишешь и решил свой паверлевел поднять. Так-то да, совсем непростая ситуация выходит. Старайся, всё будет хорошо.
Всё до безумия просто: я пишу в поле едиттекст что-то, потом жамкаю кнопку и то, что я ввёл, появляется в отдельном поле как обычный текст. Просто играюсь и изучаю.
Так вот, с жамканием на кнопку и getText/setText всё оказалось просто. Теперь подскажите, как мне сделать так, чтобы в простом Тексте сразу же отображалось то, что я ввожу в едит тексте? Ну то есть в реальном времени как бы дублируя. Я так понимаю, что нужно либо создавать для этого поток Thread(), либо есть какие-то неизвестные мне методы. Спасибо
>>957495
Всё, проблема решена, я даун. Если у кого будет такая же, то вот решение
https://www.youtube.com/watch?v=MJ_32Tuuu74
хз каждый раз когда говорю фразу "х - хуйня, за бутылкой пива проясню все", потом думаю - раз это хуйня чем блядь я 4 последних года занимаюсь. Вся мякотка в том что доступной инфы никто не даст. Помню как ебся 2 дня с тем что не вкуривал что сторио генерит тайпмаппинг на этапе компиляции.
Суп, погромисты. Сам я начинающий, пишу свою прогу типа плеера для интернет-радио. Суть такова, что кнопка плей нажимается, музыка играется. Информация о текущем треке дёргается каждые 10 секунд с сервера, и если трек изменился, то ещё и обложка подсасывается. В данный момент эта процедура отрабатывается в основном активити (он один), музыка же играет в сервисе как положено. Всё работает почти неплохо, несмотря на говнокод.
Собственно вопрос, может ли андроид грохнуть моё активити, но не грохнуть сервис, из-за чего информация о треке перестанет обновляться? Стоит ли запихнуть получение данных с сервера в сервис с плеером? Просто по началу делал без задней мысли, а потом на гитхабе посмотрел сурсы похожих приложений и увидел, что там так же реализовано.
Благодарю за ответы.
Да ты и пса... Oh wait
http://pastebin.com/ch6qwHTh
http://pastebin.com/UsfTwj5c
Первый класс - класс с потоком, где я хочу, чтобы цифра a менялась.
Второй - главное активити, где я хочу, чтобы у txt был setText(gg.a). Но когда я это делаю и нажимаю на кнопку в приложении, всё крашится. При этом, как вы видите, я проверяю через лог поток и он работает. Чому не могу передать значение из одного класса в другой без ошибки?
>
я хочу, чтобы текст в приложении менялся как в потоке. ТО есть 1, 2, 3, 4, 5.
Может надо не через Thread делать, а через Handler или что там ещё. Асинк таск?
Нельзя менять ui в не главном потоке. Используй AsyncTask первое время, чтобы понять идею. начнёшь блевать - гугли rxjava
>>957637
спасибо. АсинкТаск могу использовать в другом классе? Или нужно в том же создавать, где главная активити? Или нужен вложенный класс?
я хочу на онКлик вызывать из другого класса - не хочу нагромождения в главном
Вот например:
TextView t;
Public onCreate(){
t=(TextView)findviewbyid(тут ссылка);
}
Public void переименуемТекст(){
Тут нужно сразу t.setText
Или нужно
t = textview findviewbyid ссылка на текст
Как правильно? Надо как с классами типа новый экземпляр создавать? Или нет, раз он инициализирован в онкриейт?
}
В мат классе учусь, на уровне ЕГЭ знаю математику. А что там прям такого нужного?
Стоит ради этого идти в вуз? До 18 хотел понять на среднем уровне джаву и начать уже чем нибудь заниматься.
Все что ты инициализируешь в onCreate будет в норме. Если дело идет после он криэйт смело вызывай свой сет текст.
alarmMgr.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (time), alarmIntent);
Получается так, что если я создам аларм до того, как предыдущий появился, то они оба алертнутся по времени последнего, что я делаю не так? Request код у них разный и создаються 2 алерта, но последний переписывает время предыдущего.
Да, вполне. Банковский софт сам себя не напишет, так что вкатывайся.
Яндекс вон недавно 17летнего пиздюка себе взял на работу, так что давай скорее вкатывайся, а то будешь слишком стар для этой хуйни.
Просто скопировал код себе, создал такие же джава-классы и иксэмельки(менял только порт и айпишник).
Выводит пикрелейтед ошибки. Классы и методы метит как Cannot resolve symbol/method В чем дело? Гуглил такие ошибки, в основном пишут просто удалить там папку idea и iml-файлы и ребилдить/клинить. Мне не помогает. Если не трудно кому - запустите данный пример у себя и скажите что не так.
Если я смогу в джаву , то есть ли шансы к 18 годикам найти себе удалённую работу?
Как же это так выходит? Я разве не смогу например делать приложения на андроид на заказ/делать и выкладывать в гугел плей.
Графы и комби мы учим с 5 класса, так что в это я могу более-менее. Только алгоритмов не знаю особо, но я думаю это можно выучить.
Дак надо чтобы заказчик у себя размешал.
Да и сам серьезные приложухи ты сделать не сможешь, нужна командная работа. Кто-то рисует интерфейс, другой сервер пишет, и тд.
>Если я смогу в джаву , то есть ли шансы к 18 годикам найти себе удалённую работу?
Нет. Работу в офисе- да, реально.
Удаленно -нет.
Во-первых, как тебе ниже анон сказал, фриланса в джаве нет.
Во-вторых, фриланс начинается после 5 лет работы в офисе. Те, кто сразу идут во фриланс, выдают код хуже, чем индусы, и оплачивается их работа соответствующе.
>>957769
Не дописал. Во что вкатиться что бы удаленно к 18 даже не 30 получать, а хотя бы 20-15к. Ибо меня погонят из дома либо в вуз и общагу, либо надо будет снимать хату.
bump
я всрат
Тут когда-то был, может и сейчас есть, тред по пхп, с аниме на аватарке. Там были гайды и задачки от ОПа, он же их проверял. Рекомендую туда зайти
первое это то, что папа сам работал в офисе админом сети, и сейчас яро против офисов. говорит лучше работать дворником, чем постоянно как солдат в 8 утра приходить и в 7 уходить. Постоянные коллективные собрания, прочая хуйня. ну и да, немного сыч, но это лечится армией
Хорошо, спасибо. Если я на среднем уровне освою пхп, лучше начать легкие задачки по фрилансу делать, или сразу искать удаленку?
Работаю дома, заебало, хочу в офис.
У меня опыта работы нету, не ко мне это. Просто помню что сидел там и решал задачки.
Мне кажется что лучше сначала немного в коллективе поработать, понять как всё работает а потом уже и пробовать искать удалённую работу. Ну и инглиш надо знать (на ру биржу лучше не лезть, само собой).
Ну это все равно, что будучи девственником рассуждать, что секс- это неприятно. Ты сходи, поработай и сделай выводы. Тем паче устроиться на работу ИРЛ намного больше шансов, чем удаленно.
сейчас армия вроде стала лучше, а я блядь ебаное комнатное растение, не способное спросить где находится та или иная улица. Хорошо, спасибо за совет
С андроида 4.4 alarmManager.set() собирает все алармы в одно время, чтобы этого не происходило надо юзать alarmManager.setExact().
Правда не работает.
Нет
Нет таких. У самсунга можно взять девайс в аренду и подключиться к нему удаленно. Для максимального охвата есть фаирбейзовый тест лаб с реальными девайсами, но там гоняются только тесты.
Ты никогда не задумывался, почему эмулятор в Android Studio пиздецово медленный в отличии от ВМ Genymotion?
Юзай гугл.
Гугловский эмулятор по скорости такой же, как и Genymotion, и использует ту же виртуализацию на virtual box.
Я например поставил genymotion, т.к. у меня амуда, которая не поддерживается дефолтным avd.
Кто все?
Старая версия эмулятора работала медленно, да. Новую версию гугл по образу gm запилил, сделав его ненужным.
Но в эмуляторе от Гугл можно же получить на выходе другую архитектуру процессора, в отличии от gm, разве нет?
> Гугловский эмулятор
> использует ту же виртуализацию на virtual box.
Вообще-то qemu гугловский эмулятор использует.
Сделать контейнер (framelayout\relativelayout) с вьюхой и рамочкой. Рамочка то сильно сложная?
Спасибо.
Проблема в том, если приложение уходит в бэкграунд или даже путем нажатия "назад" уходят на более раннее activty из стака - эти listenerы продолжают хуярить.
Есть ли лучший подход, чем держать в activity массив, в который добавляются эти listener'ы при создании, и которые при будут выключаться, если активити будет в OnPause и тд, например?
frManager.beginTransaction()
.replace(R.id.container, currentFragment, currentFragmentTag)
.addToBackStack(currentTag)
.commit();
метод в OnBackStackChangedListener , который onBackStackChanged , срабатывает ДВАЖДЫ? Именно дважды, при первом добавлении одного фрагмента. Причем делаю все , как обычно, на глупые ошибки всевозможные 100 раз проверил, но нифига. Помогите плиз, если кто сталкивался.
Как ты его первый раз добавляешь? Если через replace, то в этом и проблема, используй add.
и так, и так юзпл - проблема остается.
>Котаны, под чем удобнее писать под Андроид - Виндовс или Линукс?
Не ОС-срача ради, а удобства для спрашиваю.
Хотя, можно в onAnimationUpdate Listener'a проверять Activity.isDestroyed(), и отменять анимацию при true.
А какая, нахуй, разница? Ты что-то левое компилировать собрался под ведро, типа интерпретатора петона?
Да и линуксософт хуета ебаная, даже имеющий огромное комьюнити. Например, QT Creator пиздец, какое глючный сравнительно с виндузоаналогом.
>нормальная консоль
И чем же она нормальнее PowerShell? Как обычно, пердоля пукнул без пруфов.
Джва года назад градл у меня на винде был очень медленный, раз в десять медленнее, чем на линуксе на том же пека. С чем связано, не знаю. С тех пор кодил только на линуксе.
>градл
Он и сейчас на винде такой
Причем проект на ноуте с линуксой слабее компа с виндой собирается в раза три дольше
>>958545
Чет мне слабо верится. Да, я верю в проседание процентов на 50, но никак не в 3 раза медленнее на такой же конфигурации. Может ему памяти меньше выделяется по умолчанию, или вы явно указываете? Антивирь-хуивирь там, градл нужно обязательно добавить в исключения виндефендера, а то тот начинает почему то охуевать.
Обоснуй
Бля, меня уже этот градл доебал. Что не сборка, то перекур минимум на 5 минут. Так и от рака легких умереть можно.
Ты разницу между игровым компьютером и рабочим понимаешь?
У меня вот не тянет наверное, зато собирается всё быстро
Отвечаешь тому, кого считаешь убогим? Ты убог в квадрате.
Значит, хуево сделал. Parcelable и передаётся
А там не как с AutoValue? А именно тебе не compile нужен, а provides, и тогда вся их поебень с гуавой только во время компиляции нужна, было бы логично, так как ты в компайлтайме фабрики генеришь.
Сижу на core i3, 8 gb ram и hdd на одном компе и таком же конфиге, но с core i5 4690 на другом.
Так вот, на i5 сильно быстрее, прям заебись даже.
Имею ввиду книги. Я же не совсем дебил чтобы читать статейки.
Двачую.
https://www.youtube.com/watch?v=KoHD6oZzpvk
Inject - метка на поле/конструкторе/методе
Module - метка на классе
Provides - метка на методе класса помеченного Module.
Подумываю перекатиться из питона в джава/андройд (да, я такой ебанутый). Вопрос, нужны ли в андройде навыки аналогичные вебовскому фронтенду? Просто мне надоело что каждый работодатель хочет от меня чтобы я запросы в БД мог оптимизировать, и сделать поиск на эластике и настроить/задеплоить продакшен и чтобы жс и верстка. ЗАЕБАЛО. Я просто не успеваю (и не хочу) изучать это все, хочу сосредоточиться на какой-то отрасли.
Андроид собственно и есть фронтенд. Верстка нужна, но она там изи и не такая ебанутая, как html.
а в чем функциональная разница когда мы пилим Inject и Provides? Второе когда нам нужно что то передавать в конструктор?
Inject обозначает место, куда нужно внедрить зависимость. Provides - метод, который её предоставляет.
Нашел тутор где
public class WeatherReporter {
@Inject
WeatherReporter() {
}
}
Предостовляет.Потом тупо вызвал в компоненте
WeatherReporter getWeatherReporter();
Я чего то не понимаю.
Хочу вкатиться в ондроед разработку на петоне. Игры 2D/3D, нутыпонел. Какие подводные камни, анон?
Он вам не Димон
Два чаю. А еще лучше ssd+ 16+гб оператосы для ramdisk
Нет. Только во всяких хипстерских стартапах. А вообще там ничего сложного и зная джаву учится как нехуй.
Да я про сложность и не говорю ничего. Просто он удобней чем жаба своей сахарностью. Чего только var стоят.
Но ведь гугол уже прогнулся под жбрейнс, сделав андроидстудио оффициальной ИДЕ.
Сомнительно.
Почоны. Есть ли смысл использовать Activity вместо AppCompatActivity если планируется поддержка устройств 5 и выше? Заранее извините если савсем платина, я не смог нагуглить преимуществ Activity по сравнению с AppCompat.
Единственное преимущество - отказаться от компат либы, но ты ее скорее всего все равно будешь использовать, так что преимуществ нет.
Спасибо, это я видел, возможно есть еще что-то.
>>960031
В догонку к этому. При использовании AppCompat я не могу в стилях указывать, например для api 11 Theme.Halo для api 21 Theme.Material - везде приходится использовать Theme.AppCompat
Это не значит, что с AppCompat и Theme.AppCompat мое приложение на андроид с api >21 будет выглядеть хуже, чем с Activity и Theme.Material.
Или с AppCompat можно использовать тему Material просто я где-то очень косячу?
Хуже выглядеть не будет.
Аноны, на вакансию конторки Алеф ван лтд недавнюю не откликался никто? А то вдруг у кого тоже опыт общения с ними есть. А то тут такая ситуация, написал им на hh_ru дня 4 назад, сказали что заинтересованы, дали простейшее и тупейшее тестовое задание, сделал его до вечера с закрытыми глазами, вполне неплохо на мой взгляд, сегодня прислали отказ, ничего не объяснив и не прокомментировав. Вот не мудаки ли?
Может кому-то код отревьюить не лень будет, из спортивного интереса? Может я совсем тупой и не понимаю чем он плох и почему не приняли. Я бы ссылку на архив скинул сюда + переписку с hh. Приложение с одим экраном, кода немонго.
Не хотелось мусорить в треде, если всем похуй. Ну ок, прикрепил
Ссылка на json - devcandidates.alef.im/list.php
Архив с кодом - https://yadi.sk/d/Qt6_Oojv3GK6Nn
Мб просто кто то другой закрыл собой вакансию.
Это позволяет найти баги, про которые вы вспомните, только когда они проявятся.
И ловите барса няшного.
Может стоит заливать код в репозитории?
> у меня нет резюме
А должен был написать, даже если нет. Слишком неформальное описание себя. Ты не на дваче, блядь.
>>960207 этот намекает, что код надо выкладывать не архивом, а на github/bitbucket.
> AsyncTaskLoader
> catch (IOException e) {
> e.printStackTrace();
> return "";
> }
> JSONArray baseArray = new JSONArray(json);
> BaseActivity
????
> int columnCount = getResources().getBoolean(R.bool.isTablet)? 3: 2;
> нет тестов
Зачем эти лоадеры городить, когда можно просто сделать асинхронный запрос при помощи OkHTTP?
> А должен был написать, даже если нет
Там написано, что полноценного нет, но общее с инфой о том сколько лет, где живу и чем питаюсь пристуствует.
> этот намекает, что код надо выкладывать не архивом, а на github/bitbucket
Меня просили отписать на почту, если бы попросили выложить на github - так бы и сделал. Ссылку на свой профиль с репами я им письме дал.
> return "";
Что ты предлагаешь сделать внутри лоадера при возникновении исключения? Выше его не пробросить, а если вернуть пустую строку, то во фрагменте можно это проверить и показать ошибку. Нет?
> ????
Вот хули ты мне свои закорючки бессмысленные пишешь? Им скажи что навание класса плохое
https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java
> Может кому-то код отревьюить не лень будет
Нахуй ты тогда ревью спрашиваешь, даун, если воспринимать его не можешь?
Мы вам перезвоним.
Два чая.
Я надеялся, что мне нормально пояснят какие проблемы в коде, а ты мне копируешь название класса с вопросительными знаками под ним. Выше я просил уточнить, в чем проблема в коде лоадера. И ты мне отвечаешь, что я твое ревью воспринимать не могу. Что конкретно, копипасту кусков своего кода? Я его и без тебя уже видел, когда писал.
> Съеби уже.
Если здесь отвечают только бесполезные чсвшные мудаки, что же еще остается делать
Алёшенька, дурилка ты картонная. Уёбывай по-хорошему играть в свою контру, пока тебе за шиворот не насрали.
А можно просто воткнуть Don't keep activities
1. Длительный запрос к серверу в intent service (он убьётся при смахивании приложения из recent?)
2. Проброска в UI: результата и состояния (выполняется или провалился)?
Двачую за пояснение.
Зачем здесь лоадер, если достаточно сделать асинхронный запрос при помощи retrofit и отменить его в onDestroy или там, где логически это лучше подходит?
Дело в том, что я в армии и я написал программу, которая по показаниям акселерометра определяет хлопки по бушлату, и нужной комбинацией можно незаметно включить или выключить музыку (телефоны то тут нельзя). Но оно выжирает батарейку раза в четыре быстрее просто музыки и я подумал что может быть си-функции порезвее будут, если переключение на них не слишком накладно.
Мамка гонит, так что отвечу быстро. Код не смотрел.
>но общее с инфой о том сколько лет, где живу и чем питаюсь пристуствует.
Город? В ДСах такое не прокатит
>Меня просили отписать на почту, если бы попросили выложить на github - так бы и сделал.
Ебаться с архивом им тупо неудобно. С другой стороны, у шизоконтор бывает багор что их тестовое выкладывают на гитхаб. Но архив с кодом - пиздец.
>Что ты предлагаешь сделать внутри лоадера при возникновении исключения? Выше его не пробросить, а если вернуть пустую строку, то во фрагменте можно это проверить и показать ошибку. Нет?
Можно такой костыль
class LoaderResponse{
private String result;
private Exception error;
}
Но пустая строчка - это пиздец, как и вообще строчка без константы в данном случае.
> int columnCount = getResources().getBoolean(R.bool.isTablet)? 3: 2;
Число колонок вроде можно задавать в Xml. Да и вообще, выглядит костыльно.
> нет тестов
Хотя бы андроидовские можно запилить
Вот отсосы дегенерата из того сообщения
> BaseActivity
Не обращай внимания, в ведроиде физически не заменить наследование композицией полностью. Разве что назвать можно по возможности более информативно.
> JSONArray baseArray = new JSONArray(json);
Тут тоже нет ничего критичного, если это класс из либы.
Мамка гонит, так что отвечу быстро. Код не смотрел.
>но общее с инфой о том сколько лет, где живу и чем питаюсь пристуствует.
Город? В ДСах такое не прокатит
>Меня просили отписать на почту, если бы попросили выложить на github - так бы и сделал.
Ебаться с архивом им тупо неудобно. С другой стороны, у шизоконтор бывает багор что их тестовое выкладывают на гитхаб. Но архив с кодом - пиздец.
>Что ты предлагаешь сделать внутри лоадера при возникновении исключения? Выше его не пробросить, а если вернуть пустую строку, то во фрагменте можно это проверить и показать ошибку. Нет?
Можно такой костыль
class LoaderResponse{
private String result;
private Exception error;
}
Но пустая строчка - это пиздец, как и вообще строчка без константы в данном случае.
> int columnCount = getResources().getBoolean(R.bool.isTablet)? 3: 2;
Число колонок вроде можно задавать в Xml. Да и вообще, выглядит костыльно.
> нет тестов
Хотя бы андроидовские можно запилить
Вот отсосы дегенерата из того сообщения
> BaseActivity
Не обращай внимания, в ведроиде физически не заменить наследование композицией полностью. Разве что назвать можно по возможности более информативно.
> JSONArray baseArray = new JSONArray(json);
Тут тоже нет ничего критичного, если это класс из либы.
Анон помоги. Второй день ебусь. Есть FutureTask ждущий и возвращающий лист. Надо с Rx проследить что бы этот таск выполнялся не больше определенного времени, если больше - все ложим и вызываем onComplete. Как это запилить?
пока есть такая дичь
Observable.fromFuture(futuraTask)
.timeout(i -> Observable.timer(50, TimeUnit.MILLISECONDS), Observable.empty())
Ну вот, уже есть над чем подумать. До тестов не дорос пока, и в ресурсах, как оказывается можно и integer хранить. Спасибо что расписал.
>>960236
Лоадеры хорошо с жизненным циклом связаны, решают все проблемы AsyncTask и не будут продолжать шуршать фоновыми операциями, если Activity ушла в BackStack
Если данные уже загружены в лоадере и гововы, то при изменении конфигурации лоадер просто вернет их, а не будет грузить снова. Поэтому не придется ебаться с поворотами экранов, они все умеют сами
Ну и AT Лоадер сейчас это основной СДКашный дефолтный способ для любой многопоточки, особенно для загрузки чего-то откуда-то. А не 5 разных колбеков, у 5 разных либ, которые типо умеют в асинхронность
Попробуй обычный сервис обмазанный бродкаст ресивирами
Запилил так:
Observable.fromFuture(futureTask)
.timeout(100, TimeUnit.MILLISECONDS) .flatMap(this::listPopulationMoreThanOneMillion) .onErrorResumeNext(Observable.empty())
.doOnComplete(() -> futureTask.cancel(true));
У кого-то есть вариант получше?
В общем, у меня есть MainActivity с ViewPager, в котором статически загнаны 2 фрагмента.
В MainActivity опреден листнер на FAB, который делегирует выполнение в один из фрагментов.
У фрагмента, в его реализации обработки идет вызов DialogFragment.show(), который принимает getFragmentManager.
Все бы ничего, но после поворота экрана getFragmentManager начинает возвращать null. Попытался вызвать getActivity().getSupportFragmentManager, но getActivity() тоже null. Какого хуя анон? Пытался всякие setRetainInstance юзать и прочее - нихуя не помогает.
Нашел таки решение. В общем юзал я FragmentPagerAdapter не FragmentStatePagerAdapter, в котором хранил коллекцию фрагментов, заполняемых заново каждый раз при повороте экрана. Но фрагменты там по факту создаются один единственный раз через getItem(position), а в ту заполняемую мной коллекцию каждый раз сыпались фиктивные фрагменты, которые не кидались в фрагментманагер.
Решение состояло из ручного вытаскивания фрагментов из фрагментманагера по тэгу: "android:switcher:" + pagerId + ":" + getItemId(position). Нахуй так жить посоны?
ViewPager вообще один из самых глючных и неудобных в использовании компонентов. У меня тоже постоянные с ним проблемы. Хуже него, пожалуй, только camera api
Используй SmartPagerAdapter, он хранит коллекцию текующих фрагментов.
File -> Project Structure -> SDK Location
Когда пытаюсь натравить адаптер на ListView/RecyclerView и быстро покручиваю список, он начинает ужс как тормозить, очевидно, не хватает вычислительной мощности дабы все отрисовать. Но шаблон ведь, сука, элементарный! Там несколько FrameLayout'ов и LinearLayout'ов! Если же все View'шки создавать предварительно, а не рантаймно, уходит около 100 мс только чтобы создать одну! А это уже вечность, около двух-трёх секунд в результате получается. А RecyclerView ничем, как оказалось, не лучше ListView по скорости отрисовки.
Блджад, как суициднуться? Надеюсь юмор понятен.
1) ты срукожопил
2)ресайклер лучше
3)посмотри видео от школы яндекса на тему лайоутов.
>Там несколько FrameLayout'ов и LinearLayout'ов!
>уходит около 100 мс
Вангую что твоя вьюшка будет долго рисоваться даже сама по себе.
в onResume():
compositeSubscription.add(
loadCountRequest.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber)
);
в onDestroyView():
compositeSubscription.unsubscribe();
И как же этим говном пользоваться, когда запрос только 1 раз проходит?
Смотри документацию по CompositeSubscription::unsubscribe, в частности там написано что все последующие поступающие подписки будут автоматом отписываться. Так что тебе или новый compositeSubscription надо сделать, либо использовать clear
Приду домой - проверю еще раз.
Вообще я пробовал его пересоздать перед запросом и это не помогло.
Пробовал обычный subscription юзать - тоже не помогло.
Я удивлен. До этого юзал rxjava, но не с retrofit.
Ты явно что-то не так делаешь. Я один раз создаю compositeSubscription (считай в onCreate). А в onPause просто вызываю clear
Проверил - clear тоже приводит к тому, что запрос проходит один раз только.
Пересоздание CompositeSubscription приводит к тому же.
Мне то нужно всего лишь отписаться, тогда, когда view уничтожается во время переворота экран (чтобы не крашнулось все из-за NPE) и отправить повторный запрос в onResume.
Вот оно что.
До чего же неочевидный момент.
Попробую попозже.
Имеет ли смысл использовать RxJava 2?
Ага, переехал на RxJava2 - там даже без clone запрос выполняется каждый раз при вызове onResume.
Наконец-то!
У retrofit'a так всегда было, клята мутабельнсоть.
Как известно, запросы к VkSdk работают через коллбэки.
Перенося на RxJava делаю так:
Observable.create(s -> {
VkRequest.executeWithListener(new ...{
s.onNext(res)
s.complete()
})
})
Появилось желание сделать цепочку таких вот асинхронных вызовов:
getUsers().getFriends().subscribe() где getUsers и getFriends являются такими вот обертками, описанными выше
Но я чет не догоняю, как это лучше реализовать
На ум приходит что-то типо такого:
Observable.create($get_users_with_listener$).subscribe(res -> Observable.create($get_users_with_litener$))
Но это очевидная дичь какаято
Как правильно такие штуки делать?
RxJava 2:
Запускаем запрос к серверу:
disposable.clear();
request = API.getService().getTableContent(req).cache();
disposable.add(request.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new ResultObserver())
);
.cache(); используется для того, чтобы не прерывать запрос и после того, как пересоздастся разметка после переворота экрана - подтянуть результат запроса и показать его в UI:
public void setView(IView view){
this.view = view;
if(view == null){
disposable.clear();
} else {
if(request != null)
{
disposable.add(request
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new ResultObserver()));
}
}
}
Observer'ы в обоих случаях создаются новые - т.к. иначе это не работает. В итоге пришлось Observer сделать внутренним классом.
Всё ли правильно?
RxJava 2:
Запускаем запрос к серверу:
disposable.clear();
request = API.getService().getTableContent(req).cache();
disposable.add(request.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new ResultObserver())
);
.cache(); используется для того, чтобы не прерывать запрос и после того, как пересоздастся разметка после переворота экрана - подтянуть результат запроса и показать его в UI:
public void setView(IView view){
this.view = view;
if(view == null){
disposable.clear();
} else {
if(request != null)
{
disposable.add(request
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new ResultObserver()));
}
}
}
Observer'ы в обоих случаях создаются новые - т.к. иначе это не работает. В итоге пришлось Observer сделать внутренним классом.
Всё ли правильно?
Где это нужно использовать?
Нифига подобного. Если ты не даун, осваивается за несколько минут, затем со временем просто осваиваешь разные менее тривиальные операторы, а вот их уже довольно много.
Так я сам вообще не осваивал, там всё интуитивно совершенно.
RxJava это аналог LINQ в дотнетике. Он тривиальный только в тривиальных задачах.
Все наполнители лежат в трех! Массивах, а не водном. Смогу использовать три массива для наполнения каждого текствью через адаптер? И как?
Сможешь
Хуй знает бро. Мне показалось, что стримы - лайтверсия Linq, которая работает онли с коллекциями. RxJava - ебаный эмиттер данных, который легко реализуется средствами IEnumerable. Думаю, что дотнетовая реализация рекса так и сделана.
https://pastebin.com/m7ysyjEf
https://pastebin.com/AF6dxzNY
https://pastebin.com/1et5HS68
Ок спасибо
RxJava
Retrofit
Okhttp
Dagger
Eventbus
Butterknife
LeakCanary
Timber
Storio
Fabric
в одном петпрожекте, работодатель не обоссыт за дикое использование либ?
Я бы за Eventbus обоссал. остальное норм, если используешь с умом, а не просто напихал всё подряд.
Он deprecated вроде, не? И можно для этих целей использовать rx.
Я тоже автобус заюзал в своем пете, потому как лень было велосипедить через RxJava.
Рейтани мой список:
RxJava, Picasso, EventBus, VkSDK. Последние три чисто, чтобы самому не велосипедить.
Даггеры не стал юзать, т.к. чувствую, что еще сперва нужно разобраться с основами разработки, а потом уже лепить туда DI и прочую новомодную хуйню. У меня даже MVP нету. В роли презентера выступает сам фрагмент.
>VkSDK
Эту корявенькую порашу с отсутствием половины функционала в апи лучше вообще заменить ретрофитом
Я заюзал чисто ради окна логина.
Что помимо Java-core надо знать конкретно для этого ТЗ?
Раньше android не интересовал, но решил попробовать.
Создать приложение для Android на языке Java. Оно должно обладать такой минимальной функциональностью:
Поле для ввода текста, который будет переведён на другой язык; переключатель языка и варианты перевода, которые появляются, когда пользователь вводит текст в поле.
Возможность добавить переведённое слово или предложение в избранное.
Возможность просмотра истории переводов.
Возможность просмотра избранного.
Перевод с одного языка на другой с помощью API Яндекс.Переводчика.
Спасибо
>>963632
Из какой профессии? Я сейчас работаю курьером и до этого всю жизнь работал курьером. Откуда ты меня выгоняешь?
>Я сейчас работаю курьером
Ты сейчас уже работеш программистом, да не простым, а делающим тестовые задания. Тебе подобных сносило в канализацiю в 1998, 2003, 2006-2008 и 2014, но вы никуда не исчезаете, просто место Windows'95 заменил Android — и только-то.
Ты даже не видишь, насколько упали з/п, насколько «рынок» задемпингован... типичный же случай. Возьми вон с полки учебник Экономики и о спросе да предложении почитай.
Ст. 330 УК РФ, ст. 165 УК РФ и ст 163 УК РФ тебе в любой мусарне объяснят. Задания он делает...
Порядок действий таков:
1. Приложение запущено.
2. Открываю recent, выбираю это приложение
3. Здесь должен быть вызван onResume?
На XIAOMI onResume не вызывается в таком случае.
На Nexus 5 вызывается.
Ведрооо!
Должен.
Желательно еще максимально простую в конфигурации.
>StorIO
Расскажи вкратце - ждут ли меня там SomeTableContract
SomeTableContractEntry
Cursor через Cursor и тп?
Или прямо в вьюхе?
Как вариант,
https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
И сам еще почитай про таски и бек стек активити
Caused by: java.lang.ClassNotFoundException: Didn't find class "java8.util.stream.RefStreams" on path: DexPathList
Что блять? Что нахуй? Я не верю своим ебаным глазам, какой нахуй StorIO, у меня не хватает слов чтоб выразить свое негодование, пошел нахуй отсяда, сраный уебок, и чтоб я тя больше не видел здесь, или я вычислю твой ойпи и ты будешь всю жизнь есть манную кашу через трубочку, ебаный дегенерат.
Какое аргументированное мнение. А теперь съеби в js-тред.
Аааааа , блядь, я уже не человек нахуй...
Тогда как правильнее всего поступить. Вот допустим у меня цель написать свое приложение (есть пара идей) для андроида. Что мне делать? С чего начать что бы не обосраться? inb4 ты уже обосраться, проснись
заранее спасибо за ответы
Для начала напиши хелоу ворлд под ведро и затем просто начни делать проект, что не понятно гугли/сюда пиши
Тебе нужно что бы возвращался ResponseBody.
Через CSS же можно запилить годнейшую разметку, которая будет отлично смотреться на практически всех экранах.
Особенно это касается шрифтов. vw и vh дают ТУ САМУЮ возможность задавать размер текста процентно, например.
Какие еще есть альтернативы такому процентному заданию размера текста? sp или dp вообще не гарантируют, что надпись будет занимать не больше 5% от ширины экрана, например.
> Какие вообще минусы у WebView перед TextView?
То, что вебвью жрет ресурсов дохуя например?
> ТУ САМУЮ
Ту самую ненужную? Больше экран = больше контент, для остальных случаев есть intuit/sdp
>Ту самую ненужную?
Ты знаешь текущую задачу, которую нужно реализовать, чтобы говорить, что не нужно?
Это мантры сектантов, "нету - значит и не нужно".
Небось, еще до появления Percent(Relative\Frame)Layout'ов то же самое бы сказал.
>intuit/sdp
Но sdp видится как раз очень хорошим дополнением к Percent(Relative\Frame)Layout'ам. Точнее, spp для текста. Спасибо за наводку.
Кстати, как вообще такие библиотеки находятся? Через гугл бесполезно искать же. Сарафанное радио? Собственноручные копания в гитхабопомойке?
Вот никогда бы не натолкнулся на это сам.
Всего 21 упоминание там. И всего одно с 10 голосами. Остальные не получали больше 0-2, что очень странно для такой годноты.
И это за три года. Неужели всем так нравится пердолить пиксели в 100500 вариациях, вместо траты времени на что-то более полезное и интересное?
Я пробовал это решение, конкретно мне не подошло, я сам зафигарил себе с десяток размеров под мобилку семидюймовый и десятидуймовый. Идеальная ситуация когда дизайнер сразу рисует какое увеличение тебе нужно. А там мне показалось слишком большой мультиплякатор.
на джаве*
О, тогда круто.
Я бы порекомендовал прочесть какую нибудь макулатуру по андроиду, вроде BigNerdranch, где более менее доступно пояснены основные моменты в разработке. Естественно, что ты нихуя толком не запомнишь, но это даст тебе хотя бы начальный кругозор, дабы не обосраться в темном лесу, при написании даже чего либо легкого. Далее просто создаешь проект и начинаешь потихоньку его пилить, гугля все и вся.
Хороший уровень владения чем либо, это когда ты можешь в голове прикинуть сразу несколько путей решения той или иной задачи, а не "а с чего бы вообще начать?".
Андроид разработка, это и есть фронтенд. Только без ебаного html+js. Пиздец, что за люди пошли. Ты кроме веба вообще ничего в жизни не видел?
Вот только у меня нет дизайнера, я один, и меня уже заебало тратить время на более чем 4 варианта разметки (2 под ориентацию, и их вариации под планшет).
С этими десятками размеров пидорасится инкапсуляция - захочешь где-то сделать изменения и придется в каждый xml-файлик залезть, и ничего не забыть (а ведь они еще и на куски могут быть разбиты, пздц). А потом еще и все это говно запустить на десятке тормознутых эмуляторов.
СЛИШКОМ много времени уходит на все это. И часто - с костылями в коде, потому что тот же кастомный шрифт ты хуй задашь через xml, например.
На SDL2 кто-нибудь писал? Сложно вкатиться в этот NDK?
>тот же кастомный шрифт ты хуй задашь через xml
Wrong
В О завезут нативную поддержку, с calligraphy давно есть.
interactor/presenter
да, именно так. Просто StorIO дает немного ништяков при сохранности возможности управлять ей на низком уровне
>с calligraphy
Я слышал про нее, но пока не щупал. Но в принципе и сейчас можно через style. Я больше имел в виду возможности "из коробки", наверное.
А насчет О - это вообще не решение в перспективе лет 5, потому что более старым версиям от этого ни холодно, ни жарко будет (min api 14 не даст этим пользоваться же, например).
А делать что-то эксклюзивно под 5% обладателей О как-то не очень.
Понятное дело, просто оно потихоньку доползает.
Хех, у меня есть набор расширений к AppCompatTextView, каждый для своего шрифта, и их прям в xml и пихаешь. Нормально так выходит.
Пизда, а если тебе нужен шрифт в TextInputLayout'e? Лучше бы в databinding запихал ей богу.
Ну, мне было не нужно добавлять кастомный шрифт в textinputlayout
Если все равно приходится делать свой сабкласс View, почему бы в конструкторе свой кастомный параметр в xml не парсить?
Например
String font = attrs.getAttributeStringValue(null, "font", "default.ttf");
Не придется кучу вариаций содержать.
И потом в сабклассе Application закешировать, чтобы один шрифт был загружен только один раз на все приложение, и не было утечек памяти не было через
Typeface.createFromAsset(context.getAssets(), fontName);
>андроид грохнуть моё активити, но не грохнуть сервис
может, и не может наоборот. если сервис грохнет - то только после того как грохнёт активити. такие приоритеты уж у него. поэтому пихай в сервис.
армию нахуй, постарайся пробиться в какойнибудь яндекс на стажировку на годик-два во время учебки (там какраз порядка 30-50 платят стажирующимся). заодно и социализацию прокачаешь.
потом поднимешь опыт и можешь удаленку искать. иначе без пруфов того что умеешь могёшь на удалёнку тебя работодателю слишком рисково брать.
Хороший уровень Java - это ответить на любой вопрос, упомянутый в этой книге https://www.amazon.com/Programmer-Study-1Z0-803-1Z0-804-Certification/dp/0071772006
По Андроиду, к сожалению, почти все книги - хуйня.
/g android ui elements list
третья ссылка
https://www.tutorialspoint.com/android/android_user_interface_controls.htm
Intent.FLAG_ACTIVITY_NEW_DOCUMENT - доступна только с api level 21
У меня вопрос, как в конструктор определённого класса передать свойства элементов из xml кода. Дело в том, что я пытался делать вот так https://pastebin.com/DK020UJ0 но благополучно получаю NPE. Помогите советом.
Чет не понял, зачем тебе конструктор в activity.
И в твоем примере не понятно, какой ты аттрибут из xml хочешь вытащить.
Изучаю Java и андроид около месяца, до этого другие языки не изучал, разве что только поверхностно. Никак не могу понять, как получить SHA1 и заюзать google api. Уроков по созданию сетевых приложений я не нашел, а в официальной документации от гуглов хуита непонятная. Подскажи, адекватный анон, как же это сделать или какие уроки загуглить, а то я уже неделю в ступоре
А потом такой
"в официальной документации от гуглов хуита непонятная"
Пиздец. Насмотрятся своих видосиков и ябутся в жеппы.
https://developers.google.com/maps/documentation/android-api/signup?hl=ru
Если тебе не понятно, что тут написано - то программирование явно не для тебя.
Это так не работает, убери конструктор нахуй. Если тебе надо в активити что-то передать используй Intent, потом в onCreate всю эту хуйню сделаешь, а данные через getIntent() достанешь.
Я хочу записать данные с EditText в переменную.
Но при создании приложения вылетает.
Ругается на последнюю строчку.
В может быть чем причина??
Caused by: java.lang.NumberFormatException: Invalid int:
public class MainActivity extends Activity {
private EditText EditView;
private int x;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText EditView = (EditText) findViewById(R.id.editText);
x = Integer.parseInt(EditView.getText().toString());
}
}
>В может быть чем причина??
>Caused by: java.lang.NumberFormatException: Invalid int:
Действительно, в чем же? Неужели оно не написало, странно...
А вообще ты совсем какую-то хуйню делаешь, кроме того что там может быть пустота и не число, а потому и NumberFormatException, ты почему-то смотришь в onCreate, что очевидно не верно, так как в onCreate там еще пусто скорее всего.
>>966520
Я исправился
public class MainActivity extends Activity {
public EditText EditView;
private int x;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onClickButton(View view) {
TextView textView = (TextView) findViewById(R.id.textView);
EditText EditView = (EditText) findViewById(R.id.editText);
try {
x = Integer.parseInt(EditView.getText().toString());
} catch (NumberFormatException e) {
System.out.println("Could not parse " + e);
}
textView.setText(String.valueOf(x));
}
}
>>966520
Я исправился
public class MainActivity extends Activity {
public EditText EditView;
private int x;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onClickButton(View view) {
TextView textView = (TextView) findViewById(R.id.textView);
EditText EditView = (EditText) findViewById(R.id.editText);
try {
x = Integer.parseInt(EditView.getText().toString());
} catch (NumberFormatException e) {
System.out.println("Could not parse " + e);
}
textView.setText(String.valueOf(x));
}
}
По-приколу сделал для тян подобие "3 в ряд" на обычных вьюшках (GridView, да, я мазохист, и вообще это было в целях обучения работы с ведром).
Ей зашло, и она хочет еще. Но вот беда - все это говно уже жутко тормозит, стандартные вьюшки не тянут сотни объектов на экране. Ничего нельзя добавить без удара по производительности.
Улучшатся ли мои дела, если я перейду на Canvas? Не хотелось бы брать простой путь в виде готовых движков, хочется попердолить стандартные костыли.
Или с Canvas тоже нет пути?
У кого есть опыт в Canvas и SurfaceView? Что из этого тут будет уместнее - и почему?
Я так понимаю, SurfaceView предпочтительнее, ибо можно вывод вывести в отдельный от mainUI тред?
Но в то же время Canvas из этого SurfaceView не может быть hardware acceleration. Насколько это критично?
Хотя, судя по всему, Canvas тоже имеет проблемы с доступной памятью. Лучше перейти на OpenGl.
LibGDX или Unity бери
> Но вот беда - все это говно уже жутко тормозит
Так делай перемещения объектов на translation'ах, а не margin'ax
Я так и делаю, но у меня две матрицы, и два представляющих их поля одно над другим.
Вот когда одно при каждом изменении обновлялся лишь адаптер одного поля - все было еще терпимым, но два работающих одновременно уже не тянет. И это при том, что в адаптерах новое View (с ViewHolder'ом, ага) создается лишь при определенных условиях, а не все сразу.
Каждая ячейка поля составная, часто из нескольких 10-20кб картинок.
Суммарно картинки не занимают больше пары мегабайт в объеме, казалось бы, но стоит добавить еще и фон на 500 кб - и тормозить начинает даже с одним полем и адаптером.
Хотя, можно было бы подумать над кешированием одинаковых картинок - но я хз, поможет ли это.
При срабатывающих одновременно 50-100 анимациях куча кадров пропускается, вплоть до невидимости происходящего. + Эта же проблема с добавлениям очков над уничтоженной клеткой. И бинго пердольности - сделать так, чтобы при уничтоженной бонус-клетке от нее разлетались шарики к клеткам того же типа на поле, например.
Кроме того GridView, в принципе, вообще хуево подходит для матриц, из-за прибитого гвоздями адаптера и отсутствия нормальной работы со столбцами.
Слишком пердольно и костыльно уже. Проще самому написать представление с 0, чем возиться с костылями.
Делать на GridView - признак неправильного мышления.
Всё, что нужно для 3 в ряд - нарисовать несколько фигур.
Как я уже говорил, я выбрал обычные вьюшки, чтобы поучиться стандартной библиотеке (чтобы взяться за более приложение, не связанное с играми, уже набив шишки). Этим я полностью удовлетворен.
Ну и соблазнился сеткой, по примеру всяких уже деланных морских боев и саперов на декстопах.
Юзал-не осилил
Я все больше наблюдаю вакансий по react native и даже на рассейском фрилансе заказчики часто хотят приложение имено на нем, а ведь Андроид он пока умеет дико коряво в глючно и все равно уже востребован. С ректом видится мне реально есть вероятность того, о чем говорили большевики и нативные приложения медленно но верно начнут умирать и я этому препятствий не вижу, честно говоря. Кто захочет платить в 2 раза больше, когда можно так нехило сэкономить, да и еще фронтенд обезьянку, которые и так в каждой первой конторе водятся, припахать можно, а не искать непонятных разработчиков на swift или kotlin. И, в общем, Антоны, у вас от всего этого еще не пригорает? А то у меня по немногу начинает, с учетовм того, что вкатиться пока только во фриланс получилось, а удаленных вакансий на hh по нативному Андроиду на последние 3 недели было 4 с половиной штуки (я мониторю). Куда, они, сука, делись?!
Особенно забавно на фоне всего этого выглядят те, кто только начинает ботать нативный мобайл, когда уже сейчас на фрилансе 80% заказов на гибридное приложение, сразу под обе платформы. А нативная разработка имеет неплохую вроятность перетечь на реакт по названным выше причинам. Поэтому если кто-то здесь только начинает, то я бы очень рекомендовал выбирать ios а не Android. Вакансий существенно больше и востребованность с недостатком кадров выше. Хакинтош настраивает за день и работает весьма плавно, первое время можно пускать хелло ворлды в симуляторе, а б/у Айфон с рук можно купить за очень небольшие деньги и накатить на него актуальную версию ios. Хотя меня Android и java нравятся и устраивают полностью, но ios сейчас востребованне и вкатиться проще.
И так, Антоны, что делать? Продолжать углубляться в чистый натив и надеяться на то, что хотя бы процентов 40 рынка останется за ним или понемному начинаться учить сраный js?
У меня приложение использует bluetooth и алгоритмы ЦОС. При этом ключевой момент - низкое потребление аккумулятора.
Как ты предлагаешь это на реакте делать?
При размытии контуры же станут менее четкими, кенни сможет тут нормально отработать?Как потом убрать размытие?
Логично в таких случаях использовать компонент типа JobScheduler, ну, или просто самописный сервис, работающий в отдельном процессе. Но тут всплывает проблема номер 2 - необходимость либо дублировать инициализацию всех компонент domain и data слоев в этом(-их) сервисах, либо же инициализировать их только там, и болтать с ними из основного процесса через AIDP/Intent-ы, что, в общем то, далеко от предела мечтаний чуть менее, чем на дохуя.
Как вы решаете эту проблему ?
Натив онли, если тебя интересует что-то сложнее запроси-покажи приложений, конечно же.
Интересует прежде всего простота тестирования.
В зависимости от сложности проекта нужно смотреть, да и специфики. На больших - лучше выбрать чистую/VIPER, сделаешь скелет, пропишешь основные компоненты и дальше со скоростью экран/сутки штампуешь.
Если речь идет о мелких приложениях - то банального MVP будет достаточно, да и тот не сильно обязателен. Можно даже попробовать что-нибудь на service + Broadcast receiver/другой шине запилить, чтобы быстро было
Есть вьюха 3 пик, которую я запихиваю через include в другую.
Когда ставлю layout_height в match_parent, то все смотрится нормально 1 пик. Когда выставляю более логичное значение wrap_content, то вьюха съезжает вниз 2 пик.
Что за хуйня анон?
Например пока я пишу hello
мне выдает:
he - он
hell - ад
и т д.
Ontextchangedlistener
не GONE
<GameplayView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_centerHorizontal="true"
android:id="@+id/gameplay"/>
Напоминаю, что до onLayout getWidth/Height будет возвращать 0 всегда.
это западло у меня только на одном телефоне. На втором и на эмуляторе все в порядке
https://academy.yandex.ru/events/mobdev/msk-2017/
инет на телефоне есть. Что делать? Реально нужна помощь, иначе я тупо забью на всё это
А интернет на устройстве-то есть? Если это эмулятор то может стоит перезагрузить. Попробуй еще https://github.com
>инет на телефоне есть
писал же. устройство реальное. перезапуск апки не помог
Пробовал опять та же ошибосина.
У меня знакомый при весьма хуевом знании жабы да и ведра вроде как сделал (смотрел его демку). Приходилось правда разъяснить ему че такое архитектура и с чем ее нужно подавать, но в целом - задание довольно простое. Мой совет - не используй там никаких ORM и юзай поменьше фреймворков. Тогда получится нормально запилить в срок. Начнешь ебаться с сторонними фреймами - хуйцов по срокам соснешь
https://pastebin.com/7uN8sLrv
Вот смотрите. Со стрингами всё нормально, если щелкать на эту штуку, то в логах всё выводится. Проблема в том, что изначально он находится в выключенном состоянии - так надо, но другие методы почему-то не видят стринг language. То есть стринг так-то задан и по-идее должен работать, но он работает только если я включу и переключу обратно Switch. Как поправить?
Ок, спасибо, попробую
Простите, сам обосрался. Исправил
> хуй_пизда_джигурда
Завязывай, в джаве CamelCase. Ты небось в сеть на главном потоке ходишь.
Нет, все же мидловские. По требованиям необходимо разработать конечный продукт не из говна и палок, так еще и покрыть его тестами.
бля не нужно жи гадать где я накасячил. тупо android не моё. Карма испорчена иду назад гонять змей в змеетред.
>>970236
Но это бы просто не поменяло текст. а текст меняется будто инета нет. Блин может это из за того что у меня на телефоне api4 а собираю в api25?
> а текст меняется будто инета нет
Ну у тебя по идеи должна была выпасть ошибка Only the original thread that created a view hierarchy can touch its views.
> api4
Где ты это откопал?
Обязательно.
Я кстати нашел несколько хороших open source подобных ТЗ.
Как их грамотно спиздить и выдать за свои чтобы не запалил?
Или можно смело пиздить ВСЕ ?
Я думал в общий доступ выкладывают чтобы можно было спизить, посмотреть как реализовано, не?
Ну там конкурс около 20 человек на место.
Не возьмут да и похуй.
Зато есть мотивация поделать (спиздить) приложение.
>>969867
Блять, с какими же червями я на одной борде сижу.
Один хочет ВКАТИТЬСЯ за две недели.
Второй хочет чужое ТЗ украсть и выдать за свое.
Черви, пидоры.
Так я и спрашиваю, можно ли (понял уже что нельзя)
Genymotion ?
Аноны, как правильно сверстать элемент который на пик? Я пока вроде сделал и кажется получилось то что нужно, но меня гложут сомнения, что вложенность слишком большая и я не умею в верску UI. Аккуратнее и проще сделать как-то можно или и так неплохо?
https://pastebin.com/mCf5c8j0
Не самая глубокая вложенность, терпимо на самом деле, можно использовать вместо <l><i><t></l>, один TextView, а можно использовать ConstraintLayout, тогда все вообще в одном перенте будут.
>можно использовать вместо <l><i><t></l>, один TextView
drawableLeft/right у TextView не позволяет размер иконки менять, они слишком здоровы были, поэтому пришлось отдельным ImageView сделать. Про ConstraintLayout надо почитать, спасибо
>drawableLeft/right у TextView не позволяет размер иконки менять
yep, это основная проблема, потом еще и не расположить как надо.
Еще можно попробовать RelativeLayout или даже PercentRelativeLayout
У СЧЕТЧИКА БУДЕТ:
Имя, тариф, показание, id, дата последнего показания.
И счетсчиков можно будет добавлять несколько. КАК организовать БД правильней? Сколько таблиц? разделять не разделять? Что делать?
Вряд ли, я бы обошелся чем-то менее тяжеловесным и Glide и Picasso имеют нужные возможности.
Я бы сделал две таблицы:
1) id-счетчика, имя счетчика, тариф
2) id-показания, показание, дата, id-счетчика
+ индекс для показаний, и тебе не надо хранить последнее показание отдельно;
Пока что у меня получается только моментальный перевод через TextWatcher
update: пока писал нашел инфу сам, дополнительная инфа по переводу запрашивается через API Яндекс словаря. (Это для анона который со мной делает это ТЗ)
Давно пилишь?
Я с 15 марта еще начал, запилил все минимальные требования + подробное описание со словаря, сейчас покрываю тестами.
Моментальный перевод не делал. Не знаю, стоит ли
Оставь контакты, пообщаемся
Внутри функции есть исключение try catch.
Мне нужно, что функция возвращала return-ом переменную.
Но как сделать, чтобы return срабатывал в поле try?
Пример кода
http://pastecode.ru/0eb518/
А ты хорошо знаешь Ведроид? Какой опыт в программировании? Просто интересно.
Я другой анон, не тот, которого ты спрашиваешь
мой телеграмм - ambientbro
У меня наоборот сделан моментальный перевод (через AsyncRequest) , а как подрубить словарь я еще не допер.
Активно делаю только с выходных, до этого проходил всякие туториалы по андройду.
А какие контакты нужны?
У меня сейчас телефон в ремонте, так что могу либо фейкопочту либо скайп там или дискорд.
Еще такой вопрос в догонку. Вот такие дырки во вьюхе сделать реально? Важно чтобы тень от cardview правльно отображалась, т.е. додавить drawable цвета фона не выйдет. Пока решение не хочет гуглиться, есть какие-то варианты?
Нет. Нужна вышка и справка о том, что ты не лиственник.
Можно, как вариант - кастомная вьюха. Там ты на канвасе будешь рисовать правильный путь и ему тенюху.
Сидел, писал приложение и до какого-то этапа всё понимал. После чего стал охуевать от кучи собственных костылей, левых ненужных классов и явно лишних действий. Понял, что нужно было в начале всё на листике где-то расписать "что и как будет", после чгео только браться.
Я знаю, что это такое и почему его делают. Но блять! Если у меня в классе всего ОДИН стринг, то нахуя его делать приватным? Кто его дернет? Что с ним станет? Или это просто пишут ради написания, типа ебать умный дохуя написал ееееее ?
https://github.com/schvabodka-man/WhatToDo
Собираюсь это выложить в гуглоплей.
> compile group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.0.7'
Зачем либы подключать в полной форме записи, вместо сокращенной?
> BindView
> //Heh, they're all actually public because butter knife need them to be public, not private
Можно спокойно ставить protected
> getString(R.string.awards) + movie.getAwards()
getString поддерживает форматирование через аргументы
Но это все хуйня, ты хули subscription'ы не отписываешь?
А зачем это нужно? Сборщик мусора и так все почистит - а что не почистит, то и не нужно чистить.
> очевидная утечка памяти в приложении
> И что? Пару мегабайт памяти сэкономить?
Ну я хуй знает что тут сказать даже.
Ну тебе виднее.
Какой то классический пример уже:
> не понимает даже лайфсайкл активити
> зато уже напихал RX с даггером
Лайфцикл это просто последовательность вызовов 3.5 методов, там нечему понимать.
Я самый умный и хороший программист области, района и всех трёх миров.
Я решил сделать такую структуру:
ТАБЛИЦА СЧЕТЧИКОВ:
1) id счетчика
2) Название
3) Начальное показание
ТАБЛИЦА ПОКАЗАНИЙ:
1) id показания
2) показание
3) дата показания
4) тариф
5) id счетчика
и тут меня осенило:
У меня же разные типы счетчиков на разных фрагментах (СВЕТ, ГАЗ, ВОДА). Счетчики это элементы ListView. Мне надо вводить новую колонку для счетчиков? ТИП СЧЕТЧИКА
очевидно, да, если под названием имеешь в виду модель счетчика(название модели железки).
Это конечно не так
Чуть больше полугода работаю джуном, одно маленькое приложение в сторе.
В принципе сейчас могу что угодно сделать под ведро, вопрос только в качестве, особенно когда проект разрастается.
Тестовое моё мне уже не так нравится как в начале работы.
>>971824
>AsyncRequest
Это встроенное в ведро что-то?
Я за обращения в сеть напрямую через стандартное api вообще не шарю, заюзал ретрофит.
>А какие контакты нужны?
Ну лучше тоже ТГ, соберем конфу раз тут много желающих
Хикка чтоле?
Необходимо, чтобы приложение написанное на react-native запускалась при запуске девайса, а так же, чтобы это приложение нельзя было ни свернуть, ни выйти из него.
Сам вебразраб, в андроиде не силен
Для запуска:
https://habrahabr.ru/post/271663/
Дай угадаю, киоск? Насчет не сворачиваемости не скажу, но можно сделать сервис который запускает приложение если оно не запущено и тупо по таймеру чекать, вообще все зависит от условий на устройстве, с рутом ты конечно многое сможешь сделать. Другое дело что все это надо делать вне js'a.
>Насчет не сворачиваемости не скаж
Цитирую заказчика
>при попытке свернуть приложение центральной кнопкой или удержанием других комбинация выскакивает надпись, что "политика безопасности запрещает использование диспетчера задач". Приложение развернуто на весь экран.
Ну тут и до кастомной прошивки можно дойти. http://stackoverflow.com/questions/17549478/how-to-disable-home-and-other-system-buttons-in-android
Для начала научись читать вопрос, который слабо связан с react-native, глупенький.
Еще и сагает собственный тред, ух, какой злой!
>>972382
>>972396
>http://stackoverflow.com/questions/17549478/how-to-disable-home-and-other-system-buttons-in-android
Спасибо, надеюсь поможет
Чтобы в strings.xml это выглядело как
<string name="next">Hello %username%</string>
я так как-то делал:
<string name="next">Hello %s</string>
tv.setText( String.format( getString(R.string.next), "yoba"))
общую мысль, надеюсь, понял.
Понял, да
Посмотри презентацию Григория Ключникова на тытрубе, он рассказывал о том, как он кодировал и декодировал видеопоток. Принцип будет примерно тем же (в NDK с его слов он не лез)
Если это корпоративное приложение - то попробуй посмотреть вот здесь. Но соглашусь с одним из ответивших - тут на js не решить особо ничего, наверное: https://developer.android.com/work/guide.html
Лучше продублировать дату последнего показания в таблицу со счетчиками и поставить триггер на insert в показаниях, который будет автоматически обновлять дату в табице счетчиков при внесении нового показания. да, я, блеать, ненавижу joinить, когда можно избежать этого
Можно даже package-private, удивлю тебя. И не только можно, а нужно
>или даже PercentRelativeLayout
Фу-фу-фу, говномес, трубочист, еретик. Сжечь нахуй.
Каким ебланом нужно быть, чтобы не вектор выстанавливать в процентных значениях ?!
Это несколько ортогональные вещи как бы (лэйаут и картинки), че тебя так от лэйаута порвало?
Умри. Просто, блять, сдохни. Ты из какого потока View обновляешь, пес?! Я тебя сейчас за это за щеку обновлю, сука, накачаю тебе апдейтов полон рот.
И что? Само приложение тянет максимум на upper-junа, там нету нихуя сложного. Все решается без каких-либо сложных архитектурных решений. Не требуется работать со сложными компонентами API Android, ну и так далее.
Потому что по контексте видно, что процентаж относится не только к tv, иначе о нем речи бы не зашло.
>Григория Ключникова
Спасибо за совет, но я что-то совсе не могу найти, нк мог бы ты скинуть линк?
Ну я вообще не предполагал процентами на картинку влиять, я больше о позиционировании.
даже за это можно ноги-руки поотрывать процентах в 90 случаев. В офф. нотациях про проценты ни слова, так хули ты решил вдруг что нужно мутить что-то, о чем нормальные дяди ничего не говорят?
В смысле? Про эти лэйауты есть в статье про саппортные либы, у меня есть ощущение что в некоторых случаях эти лэйауты использовать лучше чет констрейнт.
>>972896
Спасибо.
Несмотря на то, что они саппортные, в материал дизайн нотации очень четко прописаны 99,9% отступов в dp. Не следует делать адаптивку для мобайла, это плохой тон.
Eclipse
А как тогда без адаптивки учитывать, то что например, в лендскейпе у некоторых дейвасов есть нав бар, а у некоторых нет, я в процентах в констрейнте/персенте раскидаю и если пользователь сделает размер текста больше фиксированные отступы не пожуют текст и все хорошо.
>>972922
Возьми котлин, у кложы будет серьезный оверхед на мой взгляд. Компилировать можешь через консольку и заливать через нее же. Я думаю для вима даже есть плагины.
Code studio + ручной билд
Ну давай отдели экран нексуса 5 от экрана например S5. У одного есть навбар на экране, у другого хардварные кнопки. Или я накачу кастомную прошивку и сделаю себе в довесок к хардварным кнопкам навбар на экране. В результате теряю ~40dp во горизонтали из-за навбара.
Нормальные люди не поддерживают кастомные прошивки и не гарантируют корректное отображение UI и работоспособность приложений на них...
Что за пушку я прочитал? Как ты отличаешь кастомную от обычной, наркоман? Гапс это кастомная или родная? А если я на хуеми линедж накачу, или я купил хуейзу и хочу туду от васян666 запердолить, или мне надоела самсунговская анальная хуйня.
Если человек будет обращаться с проблемой в тп, с него спросят данные о девайсе. Или если в статистике будет крэшлог - сначала будут смотреть на данные о девайсе, и если это официалка - уже фиксить
Я запутался что такое activity и что такое fragment, получается делать только через обычное меню (три точки сверху слева) но это не то что нужно.
Ссылку или что гуглить хотя бы
Открой семпл который предлагает студия для этого боттом бара. И в тот фрейм что сразу в активти просто пихай фрагменты, все как с дровером.
Сначала нормально разобраться в том, что такое Активити и что такое Фрагмент и зачем они нужны
https://pastebin.com/kZqUEvRc
> выбираю между Kotlin и Clojure
Ещё Scala посмотри, под андроид на нём отлично писать выходит.
Думаешь, если сдохнет EE, то это никак не отразится на SE и она будет себя прекрасно чувствовать?
бамп
Данные добавляются в БД (скачал базу с утройства после выполнения. данные есть), но в ListView через кастомный адаптер не хотят идти.
300р могу дать за решение проблемы. + задам пару вопросов.
Кто готов помочь - пишите.
regex
>>973657
Данные у него идти не хотят, пиздос, еще и секретный дохуя, вот ты бы выложил кучок кода на пастабин и тебе бы уже кучу ответов за щеку напихали.
Нашел два примера, в одном все меняется через fragmentы
В другом меняется видимость элементов:
if(layout.equals("main")){
main.setVisibility(View.VISIBLE);
favorite.setVisibility(View.GONE);
settings.setVisibility(View.GONE);
Какой способ правильный из этих двух??
Починил уже. в адаптере кое что не так возвращалось
Легче фрагментами, но можно и через вьюхи. телега вон все на вьюхах, код ужасный но продукт нормальный.
Насколько я понял, то не очень.
http://stackoverflow.com/questions/40183239/remove-bottomnavigationview-labels
Нет, просто поддерживает спецификации
Так ViewPager жи.
Apt? Логи?
Ну, у тебя есть выбор: писать на активно разрабатываемом языке с удобным сахаром, комфортной работой с данными и минималистичным синтаксисом, или писать на старом, медленно развивающимся языке, на котором ты для элементарных задач будешь фигачить тонны циклов и страдать от синтаксиса.
Сам решай. Котлин умирать совсем не собирается.
в гугле по тегам, MVP(либы: mosby, moxy), MVVM(не актуально вроже), VIPER (не пугайся, что там про айфон в основном - для ведра тоже актуально), (еще есть даташины и подобные - но вроде уже считается не актуальным, в том смысле что возлагали надежды, которые не оправдались - вместо нагромождения еболы в активити получили колбэкхэлы) + посмотри что такое DI
в ютубе, кстати, есть довольно много видосиков на тему
+ на десерт: луркай гитхабы
рассмотрим два ситуейшена: у тебя есть просто паблик стринг и есть прайват стринг с геттером и сетером. Проходят дни, недели и ты понимаешь что этот стринг нужно не просто устанавливать\получать, но еще и как то предварительно проверять на нулл или менять. И в случае с паблик стрингом - тебе придется пройти по всему своему говнокоду и поменять везде на то, что ты хочешь. В случае с геттером\сеттером - ты поменяешь код только в одном месте - в самом геттере\сеттере.
На самом деле я бы посоветовал тебе не использовать private, а наступить на эту граблю самому, тогда до тебя дойдет вся магия.
Выебет в анальную жепу ануса
Кроме как поменять название всех переменных методов и классов?
И что потом будет если на собеседовании попросят пояснить за этот кусок? Посадят на бутылку?
@Override
public void onPictureTaken(byte[] bytes) {
Bitmap imageBitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
...
}
Дебажил это говно, массив байтов нормально заходит, но пикча не декодится, в чем проблема?
пробовал сохранять в интернал мемори, а потом брать оттуда, та же хуйня
МОжно сделать лучше например.
Есть два стула...
ПЕРЕКАТ https://2ch.hk/pr/res/974849.html (М)
ПЕРЕКАТ https://2ch.hk/pr/res/974849.html (М)
Опыт работы обязателен.
Мои контакты son.IFivebaANUSyande`{dxPUNCTUMr=fyu
Зарплата от 500зеленых в месяц. В перспективе рост зп
В письме рассказать немного о себе, о своих проектах и т.п., сколько готовы уделять времени работе, возраст.
В компоненте не обязательно объявлять WeatherReporter, т.к. твой WeatherReporter может инжектиться без модулей с пустым-то конструктором
Это копия, сохраненная 4 июня 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.