М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 19 декабря 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

122 Кб, 400x267

Android Development Thread 2.0.3 10 Ноя, 10:19 #873367 В конец треда | Веб

Android Development Thread 2.0.3

Мир твоему смартфону, анон. Прежде чем задавать свой вопрос, прочитай:

FAQ

> Хочу вкатиться в разработку под Android!
Большинство приложений написано на Java, выучить её на хорошем уровне — это первое, что необходимо сделать. Рекомендуемую литературу см. в Java-треде.
После этого можно открыть официальную документацию http://developer.android.com/training/index.html и попробовать создать по туториалам своё первое приложение.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.

> IDE и инструменты?
Android Studio — основной инструмент разработчика. Кроме неё потребуется Android SDK (устанавливается вместе со студией).

> Мануалы?
- Официальная документация: 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.

> Есть что-то кроме нативных приложений?
- Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия.
- 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/856749.html (М)

Ответы>>873382>>876275>>879182

10 Ноя, 11:33 #2 #873382

>>873367 (OP)
Где норм цена заказать таких зеленых роботов?

Ответы>>873542

193 Кб, 720x720

10 Ноя, 17:28 #3 #873542

>>873382
Нафиг они тебе?
Бери таких!

Ответы>>873547

10 Ноя, 17:37 #4 #873547

>>873542
Брату игрушка, а вот на работу наверное можно, если он с кофе конечно.

Ответы>>873550

10 Ноя, 18:01 #5 #873550

>>873547
Подари ему лучше пистолет.

10 Ноя, 18:08 #6 #873553

Эу, пидорги. Сложные ли вообще андроид-спеки? Есть норм фреймворки, чтобы не писать кучу патформо-зависимого кода? Хочу пет-прожект нахуячить с клиентом на андроиде, но чет не хочу в параше копаться.

Ответы>>873555>>873556

10 Ноя, 18:12 #7 #873555

>>873553
> не хочу в параше копаться
А зря, добро пожаловать в современную разработку.

Ответы>>873558

10 Ноя, 18:13 #8 #873556

>>873553
>Сложные ли вообще андроид-спеки?
>чтобы не писать кучу патформо-зависимого кода?
Лентяя в тебе вижу я.
Твой petproject не взлетит.

Ответы>>873559

10 Ноя, 18:14 #9 #873558

>>873555
Я тырпрайз-девелопер. В говне копаться я без проблем и на работе могу.

Ответы>>873562

10 Ноя, 18:15 #10 #873559

>>873556
Так мне для себя, хуле. Главное, чтобы мерзко от написания кода не было.

Ответы>>873585>>873655

10 Ноя, 18:19 #11 #873562

>>873558
>В говне копаться
Твой pet project говно?

Ответы>>873568

10 Ноя, 18:41 #12 #873568

>>873562
Что ты несешь вообще?

Ответы>>873655

10 Ноя, 19:17 #13 #873585

>>873559
Будет. Альтернатива нет, мерзко будет от любой.

10 Ноя, 21:40 #14 #873655

>>873568
>>873559
pet project априори не может быть мерзким.
Он делается в своё удовольствие.
Так что бери и пиши на Java, как все.

Ответы>>873668

10 Ноя, 22:08 #15 #873668

>>873655
Да меня просто спеки андроида немного напрягают. Насколько в лучшую сторону изменился андроид за последние года 3-4? Когда-то давно я ковырялся в нем, но блеванул и сбежал в ужасе.
Кстати, он будет на котлине, лел. Как и бэк. Охуенни язык.

Ответы>>873672>>873694>>878206

10 Ноя, 22:10 #16 #873671

Вот что бывает, когда бывшие энтерпрайз-макаки пишут приложения под ведро: https://bitbucket.org/derekwilson/recommender-android/src/e585b3cac38cd6cdf5c9a0e60f4fc7fed1aaedbe/RecommenderAndroidStudio/app/src/main/java/net/derekwilson/recommender/?at=master

Ответы>>873678

10 Ноя, 22:12 #17 #873672

>>873668
Ничего не изменилось. Вообще. Серьёзно. Апи тот же.

Ответы>>873678

10 Ноя, 22:19 #18 #873678

>>873672
Блядь. Хуево тогда. Ну хоть появился материалдесигн и не нужно руками все компоненты писать.
А что там насчет фич джавы 8? Все ли доступны?
>>873671
Проиграл. Прям видна рука легаси-девопса.

Ответы>>873686>>873720

10 Ноя, 22:31 #19 #873686

>>873678
Retrolambda

Ответы>>873692

10 Ноя, 22:43 #20 #873692

>>873686
Ебать, там через тернии надо нихуево пробиваться, чтобы стрим апи и java.util.function подключить. Теперь я точно на котлине писать буду, рофел.

Ответы>>873698

64 Кб, 1180x842

10 Ноя, 22:46 #21 #873694

>>873668
>Кстати, он будет на котлине
Ай Молодца

Пиши свои DSL и extension methods что бы скрыть android-костыли

Ответы>>873715

10 Ноя, 22:55 #22 #873698

>>873692
Кстати советую https://github.com/streamsupport/streamsupport для CompletableFuture.
Там есть еще Java Stream, но если он не нужен его можно спокойно вырезать в Proguard.

Ответы>>873700

10 Ноя, 22:55 #23 #873699

Хранить презентер в Loader'е, что думаете?

Ответы>>873737

10 Ноя, 22:56 #24 #873700

>>873698
> CompletableFuture
Observable для бедных.

Ответы>>873764

10 Ноя, 23:12 #25 #873715

>>873694
А мне норм. После одного проекта на скале дороги назад в ооп уже нет, лол.

10 Ноя, 23:19 #26 #873720

>>873678
> А что там насчет фич джавы 8? Все ли доступны?
Вообще ни одной. Некоторые синтаксические конструкции таки можно использовать вроде <>. Лямбды через retrolambda.

Ответы>>873727

10 Ноя, 23:24 #27 #873727

>>873720
> Java 8
> <>

Ответы>>873735

10 Ноя, 23:29 #28 #873735

>>873727
Не забывай, что на ведре 6 джава, поэтому я скорее не за 8 говорил, а за отличия от 6.

10 Ноя, 23:31 #29 #873737

>>873699
А зачем? Есть RetainedFragment, а childFragmentManager для суппорт фрагмента вызывается во всех актуальных апи.

Ответы>>873757

10 Ноя, 23:47 #30 #873757

>>873737
В смысле? Предлагаешь делать каждый фрагмент (который View в MVP) делать setRetainedInstance(true) и в нем же и хранить презентер? А childFragmentManager тут причем?

Ответы>>873777>>873783

10 Ноя, 23:58 #31 #873764

>>873700
>Observable для бедных
CF + async/await позволяет писать простой императивный код, который при этом будет асинхронным.

RX в неумелых руках будет городить вот такое >>867659

Ответы>>873767

11 Ноя, 00:06 #32 #873767

>>873764
Ога, простой императивный. Который ни дебажить, ни тестировать нормально нельзя.

> в неумелых руках
Как будто CF + async/await в неумелых руках приведет к чему-то хорошему.

Ответы>>873808

11 Ноя, 00:25 #33 #873777

>>873757
да храни презентер как хочешь, какая разница вообще?

Ответы>>873780

11 Ноя, 00:41 #34 #873780

>>873777
Ну, суть в том, что это совсем не тривиальная задача, сделать так, чтобы презентер жил ровно столько, сколько нужно, переживал изменение конфигурации и чтобы всей этой конструкцией было удобно пользоваться и можно было тестировать.

11 Ноя, 00:56 #35 #873783

>>873757
Предлагаю тебе хранить в каждом view (активити/фрагмент) внутренний фрагмент, с setretaininstance - и в нем хранить свои презентеры.
Что именно ты там собрался тестировать? Презентеры тестируются отдельно, view вроде тоже но я никогда не писал тестов для view

Ответы>>873791>>873797

11 Ноя, 01:06 #36 #873791

>>873783
retain-фрагменты ведь не могут находится внутри других фрагментов, разве не так?

> view вроде тоже но я никогда не писал тестов для view
Отдельно тестировать View нет смысла. Нужно интеграционное (один экран) и системное (всё приложение) тестирование. Espresso, все дела.

Ответы>>873796>>873797

11 Ноя, 01:21 #37 #873796

>>873791
>retain-фрагменты ведь не могут находится внутри других фрагментов, разве не так?
Эту хуйню пофиксили давно. Для этого и есть childFragmentManager().

11 Ноя, 01:21 #38 #873797

>>873791
>>873783
Кстати, в прошлом треде мы обсуждали, что retain-фрагменты нельзя добавить в back stack.
И вроде как выяснилось, что теперь фрагменты из support lib вроде как можно.

83 Кб, 713x480

90 Кб, 747x479

11 Ноя, 01:49 #39 #873808

>>873767
>Который ни дебажить, ни тестировать нормально нельзя.
Единственное что легко отлаживать - это последовательный код.
У RX и CF есть свои проблемы, но они решаемы (в перспективе в IDEA можно будет даже степаться по коду).

>Как будто CF + async/await в неумелых руках приведет к чему-то хорошему.
На клиенской стороне это будет тот же последовательный код обернутый в await()
В RX начинается тот еще пиздец, когда цепочка не линейная и там есть условия/ветвления/циклы.

Вот пример преобразования "запроса картинки с кэшированием" из линейного в асинхронный.
Как видно, разница минимальная, а при этому во второй версии:
- requestImage вызывается в главном потоке и результат возвращается тоже
- все запросы к сети/диску исполняются в фоновых потоках
- getFromCache/putToCache работают в выделенном однопоточном пуле (для синхронного доступа к диску)

Ответы>>873810

11 Ноя, 01:59 #40 #873810

>>873808
А, это опять ты. Нет, я не буду тебя кормить.

11 Ноя, 15:01 #41 #873976

Котаны, покажите как на котлине красиво делаются асинхронные операции, соединенные в цепочку из двух?
К примеру - скачивание файла и его обработка.

Ответы>>873981>>874280

11 Ноя, 15:06 #42 #873981

>>873976
>красиво делаются асинхронные операции, соединенные в цепочку из двух
Зависит от библиотеки которую ты используешь.
Из коробке ни в JDK ни в Kotlin нет поддержки асинхронности.

11 Ноя, 17:42 #43 #874043

Аноны, gradle решил издеваться надо мной и хватает вот такие exceptions : or try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(AaptProcess.java:108)

Гугл сказал увеличить SLAVE_AAPT_TIMEOUT, однако я не понимаю куда это прописать. Подскажите, пожалуйста

Ответы>>874156

11 Ноя, 19:28 #44 #874115

Анон, помоги! Хочу занятся чемто и думаю попробывать поучить ваш андроид. За сколько можно выучить основу чтобы взяли на роботу? И есть ли работа на фрилансе в данной сфере, а то в моем мухосранске походу нету. И какая средняя зарплата джуниора? Знаю что вопросы наверно тупые и частые но блять помогите с ответом пожалуйста.

Ответы>>874141>>874144>>874234

11 Ноя, 20:09 #45 #874141

>>874115
если тебе понравиться программировать то все само выучиться

если ты супер спец тебя с ушами заберут
гениям 4 года надо чтобы быть супер спецами

11 Ноя, 20:12 #46 #874143

Сап, /pr. Пишу клиент для харкачей, может кто занимался подобным? Интересует постинг в тред через api двача, ибо в официальном гайде наебаловка какая-то. Как составить этот url? Вот это не работает (запрос для этого треда):
https://2ch.hk/makaba/posting.fcgi?task=post&board=pr&thread=873367&comment=test&captcha_type=2chaptcha&2chaptcha_id=[id]&2chaptcha_value=[value] (М)
, где [id] - многабукавицифр, а [value] - цифры с картинки капчи.

Писать ридонли-апликуху не хочу. Кто-то еще разрабатывал клиент двача?

11 Ноя, 20:12 #47 #874144

>>874115
1) Один плотный год, тратя честных часов 6 в день или полгода с сумасшедшим въебыванием и то если у тебя невероятные способности к обучению и почти эйдитическая память.
2) Фриланса почти нет, а так как у тебя нет опыта и топ аккаунта, то не существует.
3) От 25-30 тысяч рублей до 60 тысяч.

Ответы>>874146

11 Ноя, 20:16 #48 #874146

>>874144
у меня фриланс случайно по ведру получился. Я писал под шиндоуз, но тут клиент сказал, а хочу на ведро тоже самое, в итоге познал ведро и сейчас делаю опенсоурсы всякие, с них донаты собираю.

Ответы>>874147

11 Ноя, 20:24 #49 #874147

>>874146
У тебя есть и опыт и аккаунт, а у этого чувака нет этого. Как думаешь, будут ли пользоваться его услугами?

Ответы>>874149

11 Ноя, 20:26 #50 #874149

>>874147
Самое-то, что именно на таких чуваках я зарабатывал раньше. Делают курсач какой-то и нихуя не могут, в итоге платят и я им делаю

11 Ноя, 20:48 #51 #874156

>>874043
пробовал добавлять старые SDK, нифига не помогло. На всякий случай пишу под Шиндоуз.

sage 11 Ноя, 23:03 #52 #874234

>>874115
> занятся
> чемто
> попробывать
> на роботу
Даже и не знаю, что тебе посоветовать.

12 Ноя, 01:31 #53 #874280

>>873976
Палю годноту:
http://kovenant.komponents.nl
Тебе будет нужен kovenant-core и kovenant-android.

Ответы>>874373

12 Ноя, 08:04 #54 #874350

Есть pet project, который интересенлюдям, но он использует api вконтакте для воспроизведения музыки в итоге подвергается нападениям копирастов.
У меня диллема - забросить его (он неплохо работает, но код местами запутанный) или перепилить каждый кривой модуль в нём и уйти на левый иаркет, где пытаться продавать?

Приложение изначально делалось для себя и я им пользуюсь часто (через день)

Ответы>>874375

84 Кб, 919x587

12 Ноя, 11:39 #55 #874373

>>874280
Деточка, у тебя от сахара жопка не слипнется?

Такой DSL можно написать в пару строк самому.

Ответы>>874756

12 Ноя, 11:47 #56 #874375

>>874350
> 2016
> вконтакте для воспроизведения музыки
Забей это бесперспективная тема, они и дальше будут ограничивать доступ к апи.
Даже РФ идет в строну Apple/Google Music (тем более там семейную подписку на 6 человек завезил).

Ответы>>874399

12 Ноя, 12:45 #57 #874399

>>874375
На apple music и google music уже есть тот функционал, что в моем приложении.

Ответы>>874401

12 Ноя, 12:46 #58 #874401

>>874399
А нет, ошибся. Только на ios есть.

12 Ноя, 20:37 #59 #874756

>>874373
Ты простой такой, как три рубля. Написал либу в три строки? Сорцы глянь, там куча всего. https://github.com/mplatvoet/kovenant

Ты прав в том, что для одной простейшей задачи либу подключать необязательно. С другой стороны, не знаю не помню, как красиво написать цепочку тасок стандартными средствами котлина.

12 Ноя, 23:06 #60 #874896

Господа, поясните за ситуацию. Есть презентер, который хранит состояние. Он во время поворота сохраняется в отдельном RetainedFragment.
Проблема в том, что в нём есть ссылка на вьюху она поворачивается и адаптер.
В адаптере тоже есть ссылка на вьюху точнее, на экземпляр интерфейса ItemClickListener, хранящийся во вьюхе.
Стоит ли городить велосипед с кучей WeakReference? Или же тупо убрать ссылку на ебаный адаптер в презентере, а во View тупо дублировать кучу методов адаптера?

Ответы>>874933

12 Ноя, 23:55 #61 #874933

>>874896
> тупо убрать ссылку на ебаный адаптер в презентере, а во View тупо дублировать кучу методов адаптера
this

13 Ноя, 07:55 #62 #875012

Есть овердохуя времени на основной работе, хочу удаленно писать приложения.
Опыт есть. Куда податься?

141 Кб, 720x1280

13 Ноя, 08:39 #63 #875016

Здравствуйте, ррребята!
Пилю своё первое приложение https://www.youtube.com/watch?v=P-e6nTInYBE , хочу произвести впечатление на потенциального работодателя.
У приложения мало функций. В таких случаях делается ставка на дизайн и спецэффекты. Я не дизайнер. Шаблоны материального дизайна спасли ситуацию, но не во всех случаях экраны выглядят хорошо по умолчанию.
Как можно причесать стену текста? Есть какие-нибудь паттерны?

Ответы>>875045

13 Ноя, 10:20 #64 #875045

>>875016
Обоссал либарасню.

13 Ноя, 14:07 #65 #875112

Господа, дайте совет. Учил я джаву и андроид с пол года, написал даже 2 простеньких приложения и игру. Как первый мой опыт программирования было интересно. Потом делал большой перерыв, около года, многое позабывал. Сейчас начал все повторять/вспоминать, так как желательно бы через пол года уже найти работу.
Но есть один друг, который работает версталой и начал учить фронтенд, и он все подначивает меня, мол "го со мной во фронтенд, уже через месяц-два работу найдешь".
Как там у js-разработчиков обстоят дела в сравнении с андроид-разработчиками? Я почитал, вакансий раз в 5 больше, но все эти фреймворки учить + верстку, тот еще гемор, наверное. У кого был опыт и там и там, где интереснее?

Ответы>>875137>>875148>>875308

13 Ноя, 14:58 #66 #875137

>>875112
Геморрой и там и тут. Говнобиблиотеки и говнофреймворки выучишь и там и тут, там их правда больше, верстка там удобней, а здесь куча костылей.

13 Ноя, 16:07 #67 #875148

>>875112
comScore недавно делали отчёт
в этом году мобильный траффик превысил десктопный.
Но это тренд в развитых странах, если ты работаешь не на белых господ, сам понимаешь. Влезай в mobile-first-веб-парашу, не проиграешь.

9 Кб, 532x151

13 Ноя, 20:11 #68 #875234

Есть тут аноны, которые пишут/писали под андройд на С# с помощью Xamarin?
Прошу у вас помощи. Я установил Android SDK ещё когда устанавлиют Android Studio, потом решил писать на C# и скачал Xamarin. Создаю проект, а когда пробую компилировать, вылазит пикрилейтед. Как исправить? Что я делаю не так?

Ответы>>875257>>875261

13 Ноя, 20:41 #69 #875257

>>875234
https://docs.elementscompiler.com/VisualStudio/Setup/AndroidSDK/

sage 13 Ноя, 20:47 #70 #875261

>>875234
> Что я делаю не так?
Становишься анальным рабом микрософта.

13 Ноя, 22:59 #71 #875308

>>875112
Пускай он сначала выучит фронтенд, и вкатится туда - а потом кукарекает. Любителей js сейчас овердохуя, в том числе full stack, с опытом похапе. А зп у верстал крайне низкие, и расти без переката во фронт они не будут.
Да и нужды в чистых фронтовиках не так много

14 Ноя, 15:48 #72 #875559

Есть фрагмент с лист вью слева и пустой фрагмент справа. Когда нажимаешь на лист айтем - в правом фрагменте показываются подробности для текущего айтема.
Вопрос - как сделать, чтобы при запуске приложения первый айтем уже был выбран и подробности к нему показывались в правом фрагменте?
ListView.performItemClick() успешно симулирует эту функцию, но его почему-то нельзя вызывать из onLoadFinished()

Ответы>>875564

14 Ноя, 16:19 #73 #875564

>>875559
Нужно декаплить листвью и фрагмент.
При выборе пункта меню, медиатор листвью высылает оповещение с id айтема. Медиатор фрагмента подписан на это оповещение, получает id, открывает соответствующую страницу. Медиатор листвью тоже будет подписан на него. При старте приложения посылаешь оповещение выбора айтема. Если айтем с id не выбран - выбрать.

409 Кб, 1080x1920

409 Кб, 1080x1920

14 Ноя, 17:56 #74 #875588

Как сделать такую подсветку посередине листвью? Тут она подсвечивает не центральный элемент, а расположена как бы над списком, всегда оставаясь по центру при скролле.

Ответы>>875648>>876107

14 Ноя, 21:17 #75 #875648

>>875588
Нахуя? Просто берешь и вешаешь в одном перенте после листвьюхи над ним раз так надо.

Ответы>>875655

14 Ноя, 21:35 #76 #875655

>>875648
Так а какой родитель должен быть? Или какие атрибуты юзать? У меня родитель - листвью, и виджеты один за другим располагаться будут.

Ответы>>875656

14 Ноя, 21:38 #77 #875656

>>875655
Тьфу. Родитель - LinearLayout

Ответы>>875682

14 Ноя, 22:24 #78 #875682

>>875656
FrameLayout или RelativeLayout, или ConstraintLayout, вариантов много, но точно не линеар. Короче такой который позволяет располагать вьюхи друг над другом.

Ответы>>875877

15 Ноя, 04:16 #79 #875837

Кто-нибудь из здесь присутствующих работает ведроёбом?

Ответы>>875862>>876100

15 Ноя, 07:39 #80 #875862

>>875837
Нет конечно.

Ответы>>875864

15 Ноя, 07:43 #81 #875864

>>875862
похоже на то

15 Ноя, 09:46 #82 #875877

>>875682
Благодарю

15 Ноя, 16:56 #83 #876100

>>875837
Ну я работаю. В легаси-проекте но довольно годном баги чиню, фичи пилю. Задавай свои ответы
inb4 не сосу, не делаю

15 Ноя, 16:57 #84 #876102

У меня адаптер наебнулся и отображает полученные данные только после поворота экрана/сворачивания/разворачивания приложения и тд. Причем данные он нормально получает и сохраняет, но отображать при первой загрузке отказывается. Истыкал его логированием вдоль и поперек, данные все в него заходят корректно, но метод getView в нем вызывается только один раз, когда должен 20, и ничего не выводит.
При этом опять же - стоит повернуть экран или зайти в другую активити и вернуться кнопкой назад - сразу все корректно отображается.
Категорически не понимаю, в чем может быть причина - адаптер самый простой унаследованный от ArrayAdapter, данные в него загружаются простеньким лоадером в onLoadFinished() методе. Несколько раз так уже делал, но сравнение со своим прошлым кодом меня на решение не наводит.
Гугол не помог, надежда только на вас.
Адаптер используется в GridView, все что он делает - просто подгружает сеткой изображения по ссылкам через пикассо.

Ответы>>876103>>876107

15 Ноя, 17:01 #85 #876103

>>876102
После привязки к источнику данных вызови notifyDataSetChanged

Ответы>>876394

15 Ноя, 17:11 #86 #876107

>>875588

А что бы при скролле само доворачивалось. Когда находишься на одном элементе, и делаешь неполный скролл до соседнего. Это через onScrollChangeListener по размерам элемента/вью и количества элементов расчитывать или есть спец. методы?

>>876102
notifyDataSetChanged вызывал?

Ответы>>876122>>876394

15 Ноя, 17:44 #87 #876122

>>876107
Хотя наверно через SmoothScroll в лисенере.

15 Ноя, 17:59 #88 #876128

Есть допустим приложение - пара активити, пара вьюх, плюс гора вспомогательных классов. Хочу выпускать кучу разных версий этого приложения отличающихся в общем-то названиями да конфигами. flavor'ы не катят потому что различные части (манифесты, иконки вот это всё) должны лежать в разных репозитариях.
Как правильно реализовать?
В идеале хочу из базового приложения-фреймворка сделать в библиотеку, подключать её к финальным приложениям, наследовать активити и переопределять что нужно. Как такое сделать?

Ответы>>876186

15 Ноя, 18:57 #89 #876186

>>876128
git submodule c общей логикой. Остальное разносишь по разным репозиториям.

Ответы>>876588

15 Ноя, 20:11 #90 #876275

>>873367 (OP)
Сижу, епт, и развлекаюсь с Инь-Янь. Нужно соединение по синезубу сделать, сервер на питоне, клиент - на андроиде. БЛЯДЬ СУКА АНДРОИД ПОЧЕМУ СУКА БЛЯДЬ ЧУКА ХУЛЕ ТЫ ТАКОЙ КРИВОЙ БЛЯДЬ!!!

Все. Выговорился.

А вообще вопрос, как держать это сраное соединение открытым-то, а не переоткрывать заново каждый раз? Сервис что ли создать?

Ответы>>876311

15 Ноя, 20:51 #91 #876311

>>876275
Конечно сервис, как еще епт.

15 Ноя, 22:51 #92 #876394

>>876103
>>876107
notifyDataSetChanged к сожалению не помог. Сейчас изменил GridView на ListView и все заработало как надо. Не могу даже представить, в чем тут дело.

Ответы>>876431

15 Ноя, 23:53 #93 #876431

>>876394
Попробуй кастомный адаптер расширяющий BaseAdapter вместо хуйни под названием ArrayAdapter, а заодно RecyclerView проверь.

16 Ноя, 12:46 #94 #876588

>>876186
Не, так тоже не хочу - исходники приложения так не нужны ладе в виде подмодулей. Разве нельзя никак упаковать в зависимость которую градл разрулит?

439 Кб, 2000x2000

OrmLite 5.0 16 Ноя, 14:18 #95 #876644

А вы в курсе что вышел OrmLite 5.0

Ответы>>876776

16 Ноя, 15:21 #96 #876667

Что значит "Понимание принципов UI/UX" в описании вакансии? Если я не люблю интерфейсную дрисню, значит ли это что я понял принципы?

Ответы>>876671

16 Ноя, 15:30 #97 #876671

>>876667
Обычная эйчарская заглушка, игнорируй.

16 Ноя, 17:44 #98 #876734

Какой самый эффективный способ реализации "подгрузки" данных в адаптер при прокрутке списка вниз? Нашел в гугле несколько, во всех предлагают сделать свою вьюшку и интерфейс, попробовал - работает не совсем так, как хотелось бы.

Ответы>>876773

16 Ноя, 19:17 #99 #876773

>>876734
Скролл листенер

16 Ноя, 19:18 #100 #876776

>>876644
StorIO и так хватает

16 Ноя, 20:20 #101 #876823

В новом проекте с мин апи 10 почему-то не оказалось экшен бара у сеттингсактивитидочерней от PreferenceActivity.
Гугл предлагает дичайшие костыли невероятных размеров, нет вариантов вернуть экшен бар по-приятнее?

Ответы>>876839>>876940

16 Ноя, 20:38 #102 #876837

Привет анон.
Отослал резюме в фирму, прислали 2 теста, один по джаве, другой "Analytics Quiz"
Написали что есть встроенные алгоритмы детекта гуглопидоров и идеюзеров, поэтому ничего не использовать.
Что будет в аналитикс квизе? Можно к нему как-то подготовиться? Алсо, обязательно надо написать желаемую зп. 250$ норм? Украина, студент.

Ответы>>876843

16 Ноя, 20:41 #103 #876839

>>876823
Может ты тему не ту используешь?

Ответы>>876946

16 Ноя, 20:43 #104 #876843

>>876837
Документацию джавы открой на пол окна и из буфера обмена не вставляй.

Ответы>>876845

16 Ноя, 20:46 #105 #876845

>>876843
Ну я не хочу никого наебывать, я имел ввиду, мб кто знает что будет в тестах, мб есть подобные в интернетах и по них можно потренировать себя.

Ответы>>876850>>876996

16 Ноя, 20:54 #106 #876850

>>876845
Ну повтори лайфцайклы, по верстке чето, курсоры и лоадеры. Погугли вдруг в интернете есть.

Ответы>>876859

16 Ноя, 21:10 #107 #876859

>>876850
Довольно интересная хуйня, там были логические задачки аки из разных школьных олимпиадок, но были и совсем простые на логику для дебилов? типа:
2 велосепедиста выехали из одной точки в разные направления, проехали 9 км каждый, потом поехали назад на 12 км оба, какая между ними дистанция.
А из сложных:
Если до Х добавить Х, потом добавить 1/2 X, потом добавить 1/4 X и добавить еще 1 будет 100. Сколько равно Х

Ответы>>876869>>876871>>876902

16 Ноя, 21:22 #108 #876869

>>876859
Расстояние: 3*sqrt(2-2cos(a)), где a - угол между изначальными траекториями велосипедистов).

274 Кб, 463x660

16 Ноя, 21:25 #109 #876871

>>876859
>из сложных
пиздец, (11/4)x = 99, ты какой курс? Где вакансию нашёл?

Ответы>>876882

16 Ноя, 21:38 #110 #876882

>>876871
Ну я и написал 36, просто это явно сложнее чем о велосипедистах.
третий

Ответы>>876904

16 Ноя, 22:10 #111 #876902

>>876859
Причем это к джаве нахуй?
мимо-олимпиадник

Ответы>>876906

53 Кб, 680x583

16 Ноя, 22:11 #112 #876904

>>876882
Вакансию в интернете нашёл, или просто послал резюме в компанию наобум?
Какие вообще есть годные сайты с работой? А то я только на dou и work.ua бываю

Ответы>>876906

16 Ноя, 22:12 #113 #876906

>>876902
Это по аналитикс квизу, по джаве был отдельный тест.

>>876904
rabota.ua еще, там и нашел, доу, ворк.юа и работа.юа - топовые, остальные по сути просто дублируют их, я еще кидал в разные компании, но никто не отписал )

16 Ноя, 23:18 #114 #876940

>>876823
> в новом проекте
> с мин апи 10
Нормально вы там объебались.

Ответы>>876946

16 Ноя, 23:32 #115 #876946

>>876839
Возился с темами, но безуспешно. В итоге сейчас стоит та же тема, что на главном активити. На главном активити есть экшен бар, на сеттингс нет. Гугл мне подсказывает, что может помочь использование PreferenceFragment вместо PreferenceActivity. Из-за мин апи 10 быстро я это сделать не смог, так что попробую завтра.

>>876940
Я нуфаг, учусь по курсам от гугл, они там предлагают для проекта по курсу использовать мин апи 10. Из-за этого я конечно уже знатно подазебался гуглить запросы вроде %хуйнянем% api 10. Но зато приложение работает на телефоне за 999р
Какой апи оптимально использовать для проектов в портфолио? 15?

Ответы>>876961

17 Ноя, 00:10 #116 #876961

>>876946
Я не берусь за проекты, где minSdk меньше 16. Слишком много дополнительных затрат ради двух процентов пользователей. https://developer.android.com/about/dashboards/index.html
Для портфолио или пет-проектов уже можно на 19 перейти https://twitter.com/minSdkVersion

17 Ноя, 01:19 #117 #876996

>>876845
https://gist.github.com/lawloretienne/6f7d7d92f72986f5ebd60f226d9044ee

17 Ноя, 01:59 #118 #877007

Господа, подскажите, есть чат и у него есть возможность отправки голосовых сообщений, у клиента аудиосообщение отображается как треугольник(плэй), когда он его на него нажимает-начинается воспроизведение аудиосообщения и кнопка трансформируется в две палочки(пауза), по окончанию проигрывания возвращается в состояние треугольника. Но есть одно но, если юзер прокрутит список с сообщениями и текущее проигрываемое аудиосообщение выйдет из зоны видимости, а потом вернется обратно-адаптер всё перерисует и у кнопки будет начальное состояние треугольника в момент проигрывания(а должны быть палочки). Хуево объяснил, надеюсь, вы поняли. Подскажите, чем это фиксить?

Ответы>>877019

17 Ноя, 02:17 #119 #877019

>>877007
Сохранять статус проигрывания по-видимому в переменной. Или увеличить буфер чата, чтобы не перерисовывалось.

0 Кб, 512x512

17 Ноя, 06:50 #120 #877056

Люди, уже который день не могу решить проблему отжирания памяти: у меня есть сервис в бэкграунде, который раз в 1 секунду делает запрос с сервера.
Создаю соединение, получаю данные, закрываю поток, закрываю соединение, повторяю. Через минуту-две приложение вылетает с fatal signal 11 (sigsegv), code 1, fault addr
В дебаггере видно, как по сотне-другой килобайт растет потребление памяти, доходит до лимита, после чего происходит ошибка и вылет. Утечка идет именно тут:
[code]
@Override
public void onCreate() {
super.onCreate();
try {
Thread thread = new Thread() {
@Override
public void run() {
try {
while (true) {
sleep(2000);

HttpURLConnection conn = null;
InputStream is = null;
try {
System.setProperty("http.keepAlive", "false");
URL url = new URL("http://example.com");
conn = (HttpURLConnection)url.openConnection();
is = new BufferedInputStream(conn.getInputStream());

is.close();

} catch (Exception ex) {
} finally {

if (conn != null) {
conn.disconnect();
}
}
}
}catch (Exception e) {
e.printStackTrace();
} finally {

}
}

};

thread.start();
} catch (Exception e) {
e.printStackTrace();
}
}

}
[/ code]

ЧЯДНТ? Почему андроид не освобождает память после выполнения запроса? Причем даже включено android:largeHeap="true", но оно не всегда успевает, и приложение падает.
При этом проблемы нет в 4 андроиде, но есть ярко выраженная в 6.

0 Кб, 512x512

17 Ноя, 06:50 #120 #877056

Люди, уже который день не могу решить проблему отжирания памяти: у меня есть сервис в бэкграунде, который раз в 1 секунду делает запрос с сервера.
Создаю соединение, получаю данные, закрываю поток, закрываю соединение, повторяю. Через минуту-две приложение вылетает с fatal signal 11 (sigsegv), code 1, fault addr
В дебаггере видно, как по сотне-другой килобайт растет потребление памяти, доходит до лимита, после чего происходит ошибка и вылет. Утечка идет именно тут:
[code]
@Override
public void onCreate() {
super.onCreate();
try {
Thread thread = new Thread() {
@Override
public void run() {
try {
while (true) {
sleep(2000);

HttpURLConnection conn = null;
InputStream is = null;
try {
System.setProperty("http.keepAlive", "false");
URL url = new URL("http://example.com");
conn = (HttpURLConnection)url.openConnection();
is = new BufferedInputStream(conn.getInputStream());

is.close();

} catch (Exception ex) {
} finally {

if (conn != null) {
conn.disconnect();
}
}
}
}catch (Exception e) {
e.printStackTrace();
} finally {

}
}

};

thread.start();
} catch (Exception e) {
e.printStackTrace();
}
}

}
[/ code]

ЧЯДНТ? Почему андроид не освобождает память после выполнения запроса? Причем даже включено android:largeHeap="true", но оно не всегда успевает, и приложение падает.
При этом проблемы нет в 4 андроиде, но есть ярко выраженная в 6.

Показать весь текст
Ответы>>877057>>877068>>877137

17 Ноя, 06:54 #121 #877057

>>877056
Упс, плохо вставил, залил сюда: http://pastebin.com/9MZDaX1R

sage 17 Ноя, 08:30 #122 #877068

>>877056
> у меня есть сервис в бэкграунде, который раз в 1 секунду делает запрос с сервера
Ну я даже не знаю, в чем может быть проблема.

Ответы>>877449

17 Ноя, 12:05 #123 #877137

>>877056
Ну начнем с того что ты делаешь полную хуйню. Подключай LeakCanary и смотри кто именно жрет память. Подозреваю что неявная ссылка на сервис в треде это пиздос.

0 Кб, 512x512

17 Ноя, 19:25 #124 #877449

>>877068
А как надо? Мне нужно в фоне раз в секунду отправлять данные и получать тоже, как еще это сделать?

Ответы>>877476>>877490

17 Ноя, 20:28 #125 #877476

>>877449
сокеты, слышал такое?

Ответы>>877515

17 Ноя, 20:43 #126 #877490

>>877449
> Мне нужно
Скорей всего не нужно и ты компенсируешь кривость свою/бэкэнда.

Ответы>>877515

0 Кб, 512x512

17 Ноя, 21:05 #127 #877515

>>877476
>>877490
К бэкэнду доступа нету, не смогу сокетами сделать.
Как быть?

72 Кб, 800x534

17 Ноя, 22:49 #128 #877581

Сап, андроид-девелопер-куны , необходима ваша помощь. Надо в приложуху внедрить chrome custom tabs . И есть одна проблемка. Не получается никак заменить цвет тайтла на тулбаре при открытии этих самых вкладок. А также кнопки закрытия и контекстного меню.
Как написано в доках, цвет этот нельзя менять, он сам будет автоматом подстраиваться под цвет тулбара. Но понятное дело, что это полная залупа, у меня к примеру приложение в песочных тонах и с белыми кнопками на тулбарах везде, а тут сделал песочный тулбар и заголовок с кнопкой закрытия какого-то хуя коричневатый стал автоматом. В общем, не порядок.
Анончики, кто с подобным сталкивался, как побеждали? Может как-то через рефлексию достучаться можно до переменных с цетом табов? Было у кого такое? Няшу вам для привлечения внимания

Ответы>>877640

18 Ноя, 00:08 #129 #877637

Имеется схема приложение -> [триггер oauth] -> выбор браузера -> (если юзер выбирает дефолтный браузер «интернет» и авторизуется там) -> приложение открывается в таске браузера, как итог в таск менеджере два инстанса приложения.
Одно во вкладке браузера, другое - в самом таске приложения.
Это пиздец, сами понимаете. Причем в силу специфики api нельзя сделать то же самое через WebView ( сейчас через Intent-ы сделано ACTION_VIEW )

Ответы>>877661

18 Ноя, 00:20 #130 #877640

>>877581
Чтоб ты в аду сгорел с этими custom tabs.
Хотя бы сделай настройку в своем приложении для отключения этой срани

Ответы>>877655>>877717

18 Ноя, 00:37 #131 #877655

>>877640
Малой, чем они тебе так не угодили ? Они же явно выигрывают у вебвью и у интентов в браузер по всем параметрам.

18 Ноя, 01:02 #132 #877661

>>877637
разобрался, singleTask в манифесте спас. Теперь такой вопрос - api блочит oauth авторизацию из WebView ( можно только через браузер ), а браузер сохраняет кэш, соответственно в силу отсутствия функции logout в апи, перезайти через другой аккаунт из приложения пользователь не сможет. Есть ли какой-то workaround для обхода блока oauth из WebView внутри приложения ?

Ответы>>877669

18 Ноя, 01:31 #133 #877669

>>877661
разбиристь как они детектят webview (user-agent поменяй и js-включи)

Ответы>>877670

18 Ноя, 01:33 #134 #877670

>>877669
и не забудь проставлять referrer в обработчике shouldOverrideUrlLoading по умолчанию он не прокидывается

Ответы>>877739

18 Ноя, 07:45 #135 #877717

>>877640
Мне тоже норм зашли. Довольно удобно.

Ответы>>877738

18 Ноя, 10:20 #136 #877738

>>877717
Цвет удавалось поменять у тайтла-урла сверху ?

Ответы>>877743

18 Ноя, 10:22 #137 #877739

>>877670
Если для тупых - что нужно в referer пихать ?
Скажем, идут последовательные редиректы при oauth и хуй знает когда закончатся, мне пихать постоянно изначальный url, с которого чейн начался, полностью ли или только BASE_URl, параметры - ?

18 Ноя, 10:49 #138 #877743

>>877738
Нет, я забил.
У меня такая же проблема, что цветовая схема светлая, и текст с кнопкой белые в приложении, а в хромтабах темные.

18 Ноя, 13:17 #139 #877791

ребят, подскажите плиз годную альтернативу плееру Витамио. А то нужно проигрывать видео формата .m3u8 , родной андроидовский ествественно не тянет. Раньше юзал витамио, но из-за того, что он не работет на targetsdk больше чем 22, то само собой скатывается в сраное говно (а жаль, годный был).

319 Кб, 512x512

18 Ноя, 17:14 #140 #877881

Антоши, странная проблема появилась - приложение падает, если его однажды вырубить такменеджером. Т.е. оно работает, ты его вырубаешь таскменеджером, запускаешь снова - пара секунд показа экрана и вылет. И все, лечится только переустановкой. Подозреваю, что андроид как-то сохраняет состояние, и какую-то ссылку на не ту память.

Как сделать так, чтобы после перезапуска работа приложения начиналась с "нулевой точки"?

Кроме этого у меня в шаредпрефс хранятся данные пользователя, но их я в процессе работы не меняю. Может, там проблема?

Ответы>>877928

18 Ноя, 18:44 #141 #877928

>>877881
Стектрейс смотреть не пробовал?

Ответы>>877944

18 Ноя, 19:37 #142 #877944

>>877928
Смотрел, там примерно это:
A/libc(32140): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
Как из-под макоси это можно раскрыть?

Ответы>>877956

18 Ноя, 19:59 #143 #877956

>>877944
Ты тоже самое и на виде увидел. Что там у тебя за набор библиотек?

Ответы>>877976

18 Ноя, 20:09 #144 #877970

Похоже, в /mobi/ разработчиков нет, по этому спрошу тут.
Есть одна онлайн игрушка, я хочу смотреть её трафик, зареверсинжинирить протокол и написать бота для рутинных действий. Но опыта по разработки под ведро нет. Да и бота я под ведро делать не планирую. Мне нужен просто способ, как на ноуте с пердоликсом смотреть в прямом эфире трафик с приложения, типа wireshark. Можно, конечно, поднять точку на ноуте, подключить туда трубу и смотреть, это самое простое, но там скорее всего SSL и всё такое, так что нужно намутить полноценный MITM. Как это правильно сделать? Или в/для ведра есть инструменты что бы это просто сделать?

Ответы>>877978

18 Ноя, 20:15 #145 #877976

>>877956
Просто я нашел, но не могу в силу криворукости воспроизвести на макоси, установил ports, к нему binutils, не могу запустить addr2line, чтобы расшифровать.

Библиотеки:
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.kyleduo.switchbutton:library:1.4.4'
compile 'com.googlecode.json-simple:json-simple:1.1'
compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'

Ответы>>877982

18 Ноя, 20:17 #146 #877978

>>877970
Fiddler и устанавливаешь его сертификат на ведро

Ответы>>877979>>878015

18 Ноя, 20:19 #147 #877979

>>877978
>Current Linux build: 4.4.8.4 Built: June 13 2014
Похоже, не всё так просто. Но за наводку спасибо.

18 Ноя, 20:20 #148 #877982

>>877976
Не вижу какх-нибудь сильно хуевые завимостей, попробуй запустить с брейкпоинтами в onCreate приложухи и первой активити.

Ответы>>877990

18 Ноя, 20:33 #149 #877990

>>877982
Пробую...
А как вообще происходит восстановление работы или повторный запуск после вылета?
Параметр android:launchMode может влиять?

Ответы>>877998

18 Ноя, 20:49 #150 #877998

>>877990
Хз, обычно его трогать нет необходимости.

18 Ноя, 21:04 #151 #878015

>>877978
Я накатил Genymotion и Charles Proxy. Установил сертификат и всё такое. Вижу SSL трафик и его содержимое, но не вижу трафика приложения. Генерируется трафик Google API когда я логинюсь в игре, с моими учетными данными и токенами для игры, но трафика игры нет. Значит ли это, что там какой-то свой, не http-трафик или приложение на упаковало его в прокси, или что?

Ответы>>878019

18 Ноя, 21:16 #152 #878019

>>878015
сокеты может

Ответы>>878024

18 Ноя, 21:22 #153 #878024

>>878019
По идеи через SOCKS можно гонять весь TCP трафик, так вот, как завернуть всю виртуалку в него? Ибо в настройках псевдовайфая можно только указать обычный прокс и написано, мол, не гарантируется, что приложения будут его использовать.

Ответы>>878040>>878181

18 Ноя, 21:44 #154 #878040

>>878024
А если там сертификат пининг?

19 Ноя, 01:55 #155 #878136

Привет программач. Как в андроид студио сделать автоматический импорт нужных референсов? ctrl+Enter не помоогает чет.

Ответы>>878149

19 Ноя, 02:14 #156 #878149

>>878136
Отмена. Powersafe mode включен был оказывается.

19 Ноя, 07:10 #157 #878181

>>878024
Так и не понял, в андроид SOCKS не завезли? Поставил ProxyDroid. Рут есть. Он то не заворачивает трафик, то заворачивает, но не пускает в прокси, хотя пишет что соединение установлено. Ни SOCKS, ни обычный. Так как заставить андроид использовать прокси?

Ответы>>878184

19 Ноя, 07:27 #158 #878184

>>878181
Только что проверил Wireshark ом: ProxyDroid вообще не пытается даже делать соединение с указанным IP. Попробовал Shadowsocks - он соединяется, но в подконтрольных приложениях просто отваливается интернет. Пойду в /mobi/, наверное.

604 Кб, 2893x1931

19 Ноя, 09:24 #159 #878206

>>873668

Очень сильно изменился. Когда я запрыгнул в его вагон, одним из первых, в ужасе съебался через гальюн. Потом пробовал ещё раз.

Наконец попробовал на днях. Просто сел и написал своё приложение. Первое открытие - Java это примитивная форма C#. Я целыми функциями копировал код без изменений. Результат - свою первую прогу сейчас тестирую в маркете. Android Studio, конечно, до сих пор не дотягивает до Visual Studio, но к нему можно привыкнуть и воспринимать его не как нечто худшее (потому что некоторые фишки там даже лучше), а просто как несколько иную среду. Принципы, как и в языках, остались прежними.

Ответы>>878287

sage 19 Ноя, 14:54 #160 #878287

>>878206
> Java это примитивная форма C#
> Android Studio, конечно, до сих пор не дотягивает до Visual Studio
Ох лол. Анальные рабы мелкософта озвучивают своё очень важное мнение.

Ответы>>878299

19 Ноя, 15:18 #161 #878299

>>878287
Но жаба и в правду хуже диеза, а вот претензии к AS непонятны.

Ответы>>878320

19 Ноя, 16:15 #162 #878320

>>878299
Так то java вообще не нужна,

а VS дотягивает до IDEA CE только в комплекте с платным решарпером.

19 Ноя, 20:09 #163 #878448

Сколько оперативки хватит для студии+хром? Сейчас 4 и одна планка свободна, докупать 4 или 8?

Ответы>>878452>>878537

19 Ноя, 20:12 #164 #878452

>>878448
16 минимум должно быть.

19 Ноя, 22:32 #165 #878537

>>878448
8 гб хватает.
На работе запускал на 4 гб - збс, не свопилось даже.

Так то от 8 гб и выше.

20 Ноя, 01:09 #166 #878623

Как вы решаете задачу, когда у вас по ТЗ выходит один и тот же экран, применяемый как активити в одном месте, и как фрагмент в другом?
К примеру, фрагмент со списочком и выбором одного элемента X должен быть в одной из табов.
Но в то же время в другом месте кода, по клику на баттон должно открываться окно с такой же функциональностью, и запиливаться в Backstack?
Делаете всё на фрагментах?

Ответы>>878707

20 Ноя, 03:35 #167 #878653

У кого какая ОС на работе стоит? Есть ли какие-нибудь профиты, если пересесть на Линукс с винды?

Ответы>>878684>>878691

20 Ноя, 08:53 #168 #878684

>>878653
Windows 7 ultimate.
Профитов нет.

Ответы>>878691

20 Ноя, 10:13 #169 #878691

>>878684
> ultimate
Пожаловался полицаям на контору пиратов.

>>878653
По мне так одинаково, все равно ты в некотором роде абстрагирован до IDE. Сможешь в консольке разное делать. Хотя postman по мне так удобнее curl + jq, но второе удобно кидать бэкэндищикам, чтобы они сразу увидели баг.

Ответы>>878710>>878778

20 Ноя, 11:08 #170 #878707

>>878623
Делаешь хуйню фрагментом, и в одном месте пихаешь в пейджер, а в другом - в активити.

20 Ноя, 11:11 #171 #878710

>>878691
А бекендщики не умеют в постман?

20 Ноя, 13:25 #172 #878760

В LocalBroadcast есть очередь сообщений?
Если я отправлю хуйню, отпишусь при помощи localbroadcast.unregisterReceiver() и потом чеез минуту заново подпишусь - получу ли я сообщение?

Ответы>>878786

20 Ноя, 13:42 #173 #878771

Какой метод сервиса вызывается первым? onCreate или onStartCommand без аргументов?

Ответы>>878786

20 Ноя, 13:50 #174 #878778

>>878691
>Пожаловался полицаям на контору пиратов.
Зато не лезет качать обновления когда этого не надо.

20 Ноя, 14:01 #175 #878786

>>878760
> есть очередь сообщений
В некотором роде есть.
> потом чеез минуту заново подпишусь - получу ли я сообщение
Нет.
>>878771
> onCreate

Ответы>>878812

20 Ноя, 14:58 #176 #878812

>>878786
>В некотором роде есть.
Ну... Это пока ситуацию не прояснило.
> onCreate
У меня наоборот получилось - сначала onStartCommand, а потом onCreate когда система убила сервис и перезапустила.

Ответы>>878898

20 Ноя, 17:07 #177 #878898

>>878812
Я понимаю, почему ты спрашиваешь этот вопрос. Нет, если сервис кинет интент, твоя активность при пересоздании его не поймает. А очередь там только при отправке сообщений не на главном потоке, ибо они закидываются в handler, который на Looper.mainLooper.

> У меня наоборот получилось
> (creating it and calling its onCreate() method if needed) and then call its onStartCommand(Intent, int, int)

Ответы>>878901

881 Кб, 1600x900

20 Ноя, 17:09 #178 #878901

>>878898
О! Теперь понял, спасибо.

1876 Кб, 2560x1920

76 Кб, 604x553

20 Ноя, 18:03 #179 #878942

Привет, котаны.
Пришел к вам за советом - как наиболее эффективно подготовиться к собеседованию на junior или middle?
Что имею: год работы в частной конторе разнорабочим программером, писал на C++ Qt, C#, C и конечно же под android на java. Так получилось что имею 4 законченных приложения. Каждое по ~10 000...15 000 строк.
Цель - свалить в ДС на не менее, чем 100 тр./мес. Мелкая контора в которой я работаю разваливается - в течении пары месяцев нужно валить.

Каких советов дадите?
Никогда по собеседованиям уровня ДС не ходил.

Ответы>>879068>>879144

20 Ноя, 19:31 #180 #879068

>>878942
> на junior или middle
> не менее, чем 100 тр./мес
Хорошие у тебя планы.

Ответы>>879101

20 Ноя, 19:57 #181 #879101

>>879068
Ну так смысла же нет иначе ехать в ДС.
На всяких сайтах типа hh.ru на мидла как правило от сотки. Джуны 80...90.

Ответы>>879148

20 Ноя, 20:38 #182 #879144

>>878942
>имею 4 законченных приложения. Каждое по ~10 000...15 000 строк.
ты крутой, думаю достаточно будет их показать и тебя возмут на соточку
удачи, не парься особо

Ответы>>879187

20 Ноя, 20:40 #183 #879148

>>879101
> Джуны 80...90
Ну ты приезжай, приезжай.

Ответы>>879177>>879468

20 Ноя, 21:27 #184 #879177

>>879148
Приехал тебе за щеку.

20 Ноя, 21:31 #185 #879182

>>873367 (OP)
где хранится фоновая картинка экрана блокировки андроида 5.0?

Ответы>>880349>>882497

20 Ноя, 21:36 #186 #879187

>>879144
Да ладно, такого же не бывает.
Всегда собеседования с целью сбить планку до уровня дошираков, не?

20 Ноя, 23:46 #187 #879258

Такое дело.
Смотрю я еврогейские вакансии. Во многих требуется шива, которая может и нахуй сесть и рыбку сьесть сразу на двух платформах iOS и Android. Какого хуя? Я не конечно понимаю, что можно овладеть обеими платформами, но добиться совершенства можно задрачивая только одну.
Поясните же мне, почему они требуют сразу два скила?

Ответы>>879259>>879381

20 Ноя, 23:47 #188 #879259

>>879258
> добиться совершенства можно задрачивая только одну.
Лол. Просто ты глупенький.

Ответы>>879265

20 Ноя, 23:51 #189 #879265

>>879259
>Лол. Просто ты глупенький.
Кукарек-куку.
По делу есть что сказать, петушара?

Ответы>>879386

21 Ноя, 00:17 #190 #879296

По чему учить JSON и REST для сабжа?

Ответы>>879299

21 Ноя, 00:19 #191 #879299

>>879296
Ретрофит наверни, ну и там общую теорию что такое рест и джсон в гугле.

Ответы>>879462

21 Ноя, 02:02 #192 #879381

>>879258
Same shit в Канаде. Чаще всего в таких случаях требуют владения Xamarin, либо PhoneGap.
>запустил пустой шаблон Xamarin.Forms на физическом девайсе; 3 секунды, чтобы на экране что-нибудь появилось; на официальном форуме пишут, что проблема фундаментальная, нужно переписывать формс с нуля.
Есть Xamarin.Android/IOS, но в этом случае всё равно нужно знать архитектуру и принципы нативной платформы. Профит только от некоторых плюшек языка и общей логики.
PhoneGap подходит разве что для прототипирования.

Сейчас вот думаю, продолжать ковырять Xamarin/Haxe/Adobe AIR или оставаться в нативной.
Буквально 5 экранов https://dimous.github.io/rntr/ брат чуть не умер.

Ответы>>879407>>879430>>879431

21 Ноя, 02:20 #193 #879386

>>879265
Скажу чтобы ты назад в b уёбывал, школьник.

21 Ноя, 07:51 #194 #879407

>>879381
Flutter уже пощупал? Похоже на самую годноту.

Ответы>>879408>>879413

21 Ноя, 07:54 #195 #879408

>>879407
Ммм, дарт, обмажусь как-нибудь

21 Ноя, 08:41 #196 #879413

>>879407
УБИЙЦА АНДРОЕДА

21 Ноя, 11:17 #197 #879430

>>879381
Как то у тебя там по скринам судя все люто черезчур, можешь исходники кинуть посмотреть ? Даже интересно стало, у меня тащемта такого треша нету, а приложеньки экранов на 15-20

21 Ноя, 11:23 #198 #879431

>>879381
А зачем лезть в кроссплатформу ? На вскидку проще уж заделаться стабильным мидлом и в стартапах за доли учавствовать, если уж не по Рашке имеете возможность работать, а в Гейропе/СПШ

Ответы>>879432

21 Ноя, 11:23 #199 #879432

>>879431
Быстрофикс: мидлом по конкретной платформе

21 Ноя, 12:27 #200 #879462

>>879299
Этого хватит для джуна? Дроид подучил, SQL, Git. Рест много где надо. Вкачусь? Киев, если что.

Ответы>>879465

21 Ноя, 12:52 #201 #879465

>>879462
Да не, рест не надо

Ответы>>879466

21 Ноя, 13:07 #202 #879466

>>879465
Смотрю вакансии - много где надо. Не знаю с какой стороны к нему подойти.

21 Ноя, 13:10 #203 #879467

Как хранить данные небольшого объема лучше? Например, список заметок/список дел, в котором не может быть больше 10-15 пунктов одновременно. БД не создавать же для такого? Shared preferences какие-нибудь?

Ответы>>879473

21 Ноя, 13:12 #204 #879468

>>879148
>4 приложения
>каждое по 10000-15000 строк
Не завидуй, дно. Если у него это не сапёры/КРЕСТИКИ-НОЛИКИ ПА БЛЮТУС - оторвут с руками

Ответы>>879469>>879490

37 Кб, 625x415

21 Ноя, 13:21 #205 #879469

>>879468
> 10000-15000 строк кода
> приложения джуна
Ну это же JAVA

Я прям представляю что там за месиво и макароны.
А вообще количеством строк гордятся только Индусы.

21 Ноя, 13:31 #206 #879471

[code lang="xml"]
<resources>
<style name="AppTheme" parent="@style/Theme.Leanback">
<item name="android:colorPrimary">#000000</item>
...
[/code]
Как сделать чтоб android:colorPrimary можно было переопределить для разных flavor'ов? Помимо styles.xml для каждого

Ответы>>879540

21 Ноя, 13:35 #207 #879473

>>879467
shared-prefences / файлы с json или ObjectOutputStream

А вообще не еби мозгу, заюзай паттерн адаптер.
Сделай интерфейс типа Repository и конкретные реализации PreferencesRepository / FileRepository

21 Ноя, 13:46 #208 #879479

сап двач, у меня такой вопрос
я прикрутил эпло сервисы (геолокация по вафлям) в андроид приложение
насколько сильно меня выебет эпол, если я это пущу в продакшн?

21 Ноя, 14:13 #209 #879490

>>879468
Блютус? В чем суть?

21 Ноя, 15:38 #210 #879540

>>879471
<item name="android:colorPrimary">@color/colorPrimary</item>
Потом отдельный файлик с цветами называющийся например flavor_colors.xml в values для каждого переопределить.

22 Ноя, 13:42 #211 #880134

Почаны как лучше. Что бы все по MVP и максимально расширяемо/платформонезависимо. Есть активити, в которой презентер с чатом. По нажатию на кнопку отправить презентер сообщает модели (какому нибудь репозиторию) отправить месадж. Репозиторий добавляет что-то к данным полученным от презентера (tmp_id/payload), а далее должен вернуться к ведроидскому сервису, который по сокету пошлет сообщение, а после этой отправки репозиторий запишет сообщение со статусом pending в db, а презентеру придет нотифкация мол есть pending сообщение и тот кинет его вьюшке на отрисовку. Все верно? Можно ли как-то лучше? Как давать сервис модели? Должен ли он вообще тут быть, или нормально будет просто предоставить сылку на сокет репозиторию и оповещать его когда сервис и соответственно сокет становятся недоступными?

Ответы>>880178>>880369

22 Ноя, 15:43 #212 #880176

Сап, котаны, мне тут подвернулась возможность сделать приложение под заказ косплейщице а-ля ее персональный фид, как думаете, стоит ли браться и где можно найти годный авторский дизайн помимо дрибла ?

22 Ноя, 15:46 #213 #880178

>>880134
ей б-гу, пока читал успел дважды отречься от MVP. Что же ты мутишь там такое лютое то, что все настолько весело ? И зачем сообщения из модели отправлять, ведь по факту она есть data layer, а потому данные берутся из нее плюс из нее предоставляются низкоуровневые интерфейсы для взаимодействия с кэшэм. То есть отправка сообщения вроде в presenter-layer должна происходить, ибо бизнес логика в презентере, не ?

Ответы>>880195

22 Ноя, 16:08 #214 #880193

Ведраны, ай нид хелп!
Вышел обосрамс. Выполнил задание, проверил, собрал релиз, отправил, отказали без объяснения причин. Решил проверить этот apk.
>FATAL EXCEPTION: main
>Caused by: java.io.NotSerializableException: android.widget.ExpandableListView$SavedState
На дебаге не было прогарда. Сейчас перебираю правила:
>-keepclassmembers class implements android.os.Parcelable {;}
>-keepclassmembers class implements android.view.AbsSavedState {;}
>-keepclassmembers class implements android.view.View.BaseSavedState {;}
>-keepclassmembers class implements android.widget.$SavedState {*;}
Помогает только отключение прогарда. Ну поцчему!?

Ответы>>880196

22 Ноя, 16:15 #215 #880195

>>880178
Мне казалось что презентер должен быть максимально легковесным, в отличии от контроллера в MVC, и бизнес логика не на его уровне происходит. Ну может я не правильно выразился, разумеется я не отправляю сообщение как Message msg = ...; msg.send()
А собираюсь делать что-то вроде:
btn_send -> click -> repository.sendMessage(msgData)
А дальше репозиторий сам разруливает что там за месадж - текстовый или картинка, а может и стикер, или не весть еще что. Ну и вроде как все не весело, просто нужно же как-то кешировать отправленные сообщения локально и показывать что до сервака еще не дошло. Разве это не должно происходить в слое модели? Что бы не трогая презентер можно было поменять способ кеширования и отправки. Чет у меня каша в голове, надо детальней прочитать кто, что и кому.

Ответы>>880221>>880369>>880377

22 Ноя, 16:17 #216 #880196

>>880193
Кого ты там сериализуешь? Ты точно дефолтный прогвард андроидовский используешь?

Ответы>>880201

22 Ноя, 16:19 #217 #880201

>>880196
состояние сохраняю в бандл
всё по дефолту AndroidStudio
>proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

Ответы>>880246

22 Ноя, 16:42 #218 #880221

>>880195
да всё правильно, это вроде ещё называется VIPER (там типа класс Router, который работает с бд и сетью, а презентер дерагет его методы)

Ответы>>880243

22 Ноя, 17:12 #219 #880243

>>880221
VIPER это же вроде самопальный шаблон какой-то конторы?

Ответы>>880256

22 Ноя, 17:16 #220 #880246

>>880201
Хрень какая-т о у тебя, у меня везде:
>proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

22 Ноя, 17:24 #221 #880254

Не получается сделать обновление контента методом свайп ту рефреш использую SwipeRefreshLayout, попросту не ничего не происходит. Как показали понатыканные везде логи, лоадер отказывается запускаться второй раз, но все работает как надо, если в onRefresh() вызвать mLoaderManager.destroyLoader(LOADER_ID).
Что-то мне подсказывает, что это не лучший выбор - как эффективнее поступить в таком случае?

Ответы>>880259>>880375

22 Ноя, 17:25 #222 #880256

>>880243
вроде да, но он достаточно известен

22 Ноя, 17:26 #223 #880259

>>880254
почитай как работают лоадеры, и в чем их главнй плюс

Ответы>>880304

22 Ноя, 18:25 #224 #880304

>>880259
В чем правда плюс лоадеров?
Монструозная такая вещица.

Ответы>>880306>>880867

22 Ноя, 18:32 #225 #880306

>>880304
Ни в чём. Тяжелая и, что главное, не рабочая вещица.

Ответы>>880867

22 Ноя, 19:25 #226 #880349

>>879182
бамп вопросу

22 Ноя, 19:46 #227 #880369

>>880195
>>880134
Всё верно, отправкой и получением данных должен заниматься слой данных (репозиторий или интерактор). Презентер должен лишь дергать соответствующий метод и не зависеть от конкретного источника данных.

Так что, я бы сделал примерно так, как ты описал: репозиторий будет вызывать сервис и передавать в него сообщение для отправки.

22 Ноя, 19:48 #228 #880375

>>880254
> лоадер отказывается запускаться второй раз
Что значит отказывается? Ты restartLoader() вызывал или что?

22 Ноя, 20:02 #229 #880377

>>880195
Наоборот же.
У тебя презентер создается для того, чтобы отделить бизнес логику от view. Смысл сего действа актуален, когда у тебя жирная логика по скрытию/показу элементов, загрузке/подгрузке, а также контролу за состоянием сего действа. С презентером ты можешь эту всю хуйню изолировать, и оттестить на jvm

Ответы>>880385>>880393

22 Ноя, 20:21 #230 #880385

>>880377
Два чая.

22 Ноя, 20:26 #231 #880393

>>880377
Ну я так и хочу, но не хочу что бы презентер занимался ебалой с записью/удаленными запросами, как-то это не к лицу ему.

Ответы>>880977>>881005

23 Ноя, 04:20 #232 #880667

Котики, кто-нибудь считывал пульс с фит-трекеров? Как разрабатывали без устройства? Говорят, сенсоры не эмулируются.

Ответы>>880692

49 Кб, 465x604

23 Ноя, 08:21 #233 #880689

Котаны, где хранить ссылку на GoogleAccountCredential?
Нужно для доступа к Sheets API, Drive API и т.п.

Ответы>>880860

23 Ноя, 08:46 #234 #880692

>>880667
Если нет документации - подключаешься к браслету, смотришь список характеристик, смотришь какие из них меняются. Далее догадываешься где там пульс.

23 Ноя, 14:45 #235 #880837

Что за хрень, короче хотел посмотреть депенденси проекта, а грейдл меня в рот ебал. (android - название модуля где валяется чисто андроидовский код)
$ gradle android:dependencies
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':android'.
> Could not resolve all dependencies for configuration ':android:_debugApkCopy'.
___> Could not find com.android.databinding:baseLibrary:2.2.2.
___Required by:
______project :android
___> Could not find com.android.databinding:baseLibrary:2.2.2.
___Required by:
______project :android > com.android.databinding:library:1.2.1
______project :android > com.android.databinding:adapters:1.2.1

Что не так и как пофиксить? Собирается все нормально.

23 Ноя, 15:29 #236 #880860

>>880689
AccountManager

23 Ноя, 15:41 #237 #880867

>>880306
>не рабочая вещица.
На говнофоне с android 3.0? Или ты у мамки забыл forceLoad вызвать?

>>880304
В том, что поворот экрана не прерывает загрузку.

Ответы>>880898

23 Ноя, 15:46 #238 #880876

Топ 10 андроид-разрабов в мире по вашему мнению?
Имхо:
1) джейк уортон
2) майк пенц
3) антонио секас
4) ромка нурик
5) лиза рей
6) антонио левиа
7) тёма зинатуллин
8) даня сердюков

Ноунейм-индусов из гугла в расчёт не берём

Ответы>>880880>>880897>>880943>>880949>>880970>>881303

23 Ноя, 15:49 #239 #880880

>>880876
Чет Хейза куда-то впихни.

23 Ноя, 16:22 #240 #880897

>>880876
>Топ 10 андроид-разрабов
Звучит как "Топ 10 защкваренных девелоперов",
учитывая что Android это был кривой форк JVM,
состоящий из костылей чуть более чем полностью.

Ответы>>880902

23 Ноя, 16:24 #241 #880898

>>880867
> На говнофоне с android 3.0? Или ты у мамки забыл forceLoad вызвать?
Везде не рабочая. Нет, не забыл.
Она работает, но работает так, что лучше бы не работала.
> В том, что поворот экрана не прерывает загрузку.
В том то и дело, что прерывает. Loader гарантирует хранение загруженных данных, но работающую фоновую задачу он перезапускает, если она не была завершена.
По крайней мере если использовать на фрагментах. На активити же вообще работает с откровенными багами, которые, возможно, уже исправили, но как минимум до 5.1 андроида включительно они были. Полтора года назад здесь об этом сокрушался, вряд ли свой пост уже найду, я уже и суть бага забыл.

Ответы>>880903>>880904

23 Ноя, 16:26 #242 #880902

>>880897
> форк JVM
Ты из какого треда к нам забежал?

Ответы>>880910

23 Ноя, 16:26 #243 #880903

>>880898
Ты хоть саппортный лоадер менеджер использовал?

Ответы>>880905

23 Ноя, 16:27 #244 #880904

>>880898
Используй support library и не выёбывайся.

23 Ноя, 16:29 #245 #880905

>>880903
Нет, встроенный. Я в курсе, что саппортный всегда лучше, только код андроида вместо с саппортным тоже обновляется. То есть если с 4 по 5.1 (как минимум) вёдра были такие проблемы — я очень сомневаюсь, что в то время в саппортном не было тех же проблем. Сейчас, возможно, всё изменилось.

Ответы>>880923

23 Ноя, 16:34 #246 #880910

>>880902
>Ты из какого треда к нам забежал?
Из "Java vs GO"

шутка, я тут с вами уже пару лет деградирую

23 Ноя, 17:14 #247 #880923

>>880905
Сам себе злой буратино, в саппортном хотя бы баги фиксят.

29 Кб, 365x500

23 Ноя, 17:47 #248 #880943

>>880876
Марк Мёрфи ровный пацан

23 Ноя, 17:55 #249 #880949

>>880876
1) Я
2) Мой коллега Славик
3) ОП этого треда
4) Мой коллега Дмитрий
5) Котлинофаг этого треда

Ответы>>880952

23 Ноя, 17:59 #250 #880952

>>880949
забыл чувака написавшего HaskellActivity :D

Ответы>>880955

23 Ноя, 18:03 #251 #880955

>>880952
Ну, на том clojure можно с удобством под андроид писать, я думаю, так что не всё потеряно.

Ответы>>880958

23 Ноя, 18:19 #252 #880958

>>880955
ну там какбэ что-то похожее на наполенние .smali файлов. Жуть низкоуровневая по большей части. К слову было бы занятно посмотреть, есть ли преимущества при разработке крупных проектов, где функционалка побольше преимуществ даст...

23 Ноя, 18:35 #253 #880970

>>880876
Ролл

23 Ноя, 18:52 #254 #880977

>>880393
Где хранишь презентер во время пересоздания активити/фрагмента?

Ответы>>880983

23 Ноя, 18:59 #255 #880983

>>880977
В синглтоне.

Ответы>>880989

23 Ноя, 19:09 #256 #880989

>>880983
Хм, странное решение.
А как состояние сбрасываешь или память освобождаешь?

Ответы>>881073>>881079

19 Кб, 629x86

23 Ноя, 19:28 #257 #880998

Пытаюсь получить текущий месяц, получаю пикрелейтед. Пытаюсь получить через getmonth - пишит deprecated, лол.
Как получить месяц на 16 API level-то, блеать?

Ответы>>881013

23 Ноя, 19:36 #258 #881005

>>880393
Он и не должен. Детали логики запроса - обязанность модели. Хотя тут всё зависит от задачи - может пользователю принципиально важно получать данные именно из источника X - тогда да, презентер может выбирать источник данных.

Алсо, мне одной проще писать презентеры через TDD?

Ответы>>881064>>881361

23 Ноя, 19:38 #259 #881013

>>880998
Смени импорт с
android.icu.text.SimpleDateFormat
на
java.text.SimpleDateFormat

Ответы>>881017

23 Ноя, 19:42 #260 #881017

>>881013
Месяц надо получать через
https://developer.android.com/reference/java/util/GregorianCalendar.html

23 Ноя, 20:22 #261 #881064

>>881005
TDD очень полезно для презентеров и слоя данных, да. С UI слоем сложнее.

асечку, писечку?

Ответы>>881285>>881328

23 Ноя, 20:32 #262 #881073

>>880989
onDestroy + isFinishing

Ответы>>881077>>881095

23 Ноя, 20:43 #263 #881077

>>881073
Но ведь это не будет работать для вложенных фрагментов

Ответы>>881083

23 Ноя, 20:45 #264 #881079

>>880989
Statless presenter, он все поменяет только когда получит данные для отрисовки, по анбайнду от вью все данные зануляются, вообще согласен что не лучшее решение, но пока так.

23 Ноя, 20:50 #265 #881083

>>881077
У вложенных нужно проверять состояние всех родительских и будет все ок.

23 Ноя, 21:00 #266 #881095

>>881073
>2016
>onDestroy
Я надеюсь, ты не работаешь?

Ответы>>881099>>881112

23 Ноя, 21:05 #267 #881099

>>881095
В чем проблема?

Ответы>>881108

23 Ноя, 21:21 #268 #881108

>>881099
Хуй знает когда вызовется, если пользователь не смахнет пальцем может вообще не вызваться.

Ответы>>881112

23 Ноя, 21:25 #269 #881112

>>881095
Конечно не работаю. А @ActivityScope в даггере по такому принципу вообще не используется.
>>881108
> Хуй знает когда вызовется
И?
> может вообще не вызваться
Не вызывается только в одном случае - если процесс полностью убивается. А если он убивается, то вообще уже похуй, ты ничего не сделаешь.

Ответы>>881115>>881250>>881292

23 Ноя, 21:28 #270 #881115

>>881112
>И?
Несвоевременное освобождение ресурсов.

Ответы>>881134

23 Ноя, 21:54 #271 #881134

>>881115
А ресурсы в том же лоадере не несвоевременно освобождаются? Он также будет держать ссылку на свой результат пока не закроется родительский компонент, иначе бы он терял результат на втором перевороте.

Mortar использует тот же подход. Mosby собирается перекатиться на него тоже со своих ретеин фрагментов.

Ответы>>881136

23 Ноя, 21:55 #272 #881136

>>881134
> Он также будет держать ссылку на свой результат пока не закроется родительский компонент
Или явно не вызовешь destroyLoader.

Ответы>>881147

23 Ноя, 22:22 #273 #881147

>>881136
Хуй соси, пидор.

24 Ноя, 00:04 #274 #881250

>>881112
> А @ActivityScope в даггере по такому принципу вообще не используется.
Расскажи подробнее. Ты в ручную как-то сообщаешь даггеру, что этот скоуп завершён, используя onDestroy и isFinishing?

152 Кб, 650x477

24 Ноя, 01:26 #275 #881285

>>881064

Ответы>>881291

24 Ноя, 01:52 #276 #881291

>>881285
Да. И не вижу в этом ничего плохого.

Ответы>>881309

24 Ноя, 01:55 #277 #881292

>>881112
> Не вызывается только в одном случае - если процесс полностью убивается. А если он убивается, то вообще уже похуй, ты ничего не сделаешь.
Насколько я помню, существует способ закрыть активити так, что у него onDestroy не вызовется и при этом процесс останется в памяти.
Через CLEAR_TOP это вроде делается, когда A порождает B, а из B с таким флагом запускаешь A, из-за чего B неявно удаляется. Но это было давно уже, я точно сам забыл, да и исправить уже могли.

24 Ноя, 02:44 #278 #881303

>>880876
Cyril Mottier.

321 Кб, 1000x525

24 Ноя, 03:01 #279 #881309

>>881291
ты уверен?

Ответы>>881311

24 Ноя, 03:02 #280 #881311

>>881309
Абсолютно.

24 Ноя, 04:58 #281 #881328

>>881064
Странно, что по нему так мало материалов для ведра.

только если ты сениор с зп 150к+

Ответы>>881332

24 Ноя, 05:24 #282 #881332

>>881328
Ведро - довольно молодая отрасль, многие разработчики даже про разделение логики/представления не слышали.
Но материалы по TDD для ведра всё же имеются.

Синьор-помидор. Пиши на фейкопочту ia.eDmhereforyouANUSbkpJMPUNCTUM0$ ru если хочешь.

24 Ноя, 08:34 #283 #881349

Господа, подскажите по ситуации (Rx):
1) Вызов X из сети
2) По поступившим данным - два параллельных запроса
3) Результаты двух запросов собираются в один
Всё это должно быть холодным, все запросы - Single. Есть-ли какой-то более нормальный способ, кроме
[code]
createRequestA()
.flatMap( -> {
return Single.zip(createRequestB(), createRequestC());
})
.[/code]

Ответы>>881365

24 Ноя, 09:45 #284 #881359

Сап, котаны. Может кто доков по основным компонентам rxJava2 подкинуть ? Мне сказали перекатываться, но я чет прихуел маленько от количества нововведений. А в доках нихуя не написано что такое процессоры-хуессоры и прочее говнище.

24 Ноя, 09:48 #285 #881361

>>881005
О, а не подскажешь: если есть опция кэширования в приложении, то модель должна быть ответственна за выбор источника, или презентер смотрит а-ля есть кэш - оттуда, нет - грузим в кэш ?

Ответы>>881366>>881368

24 Ноя, 10:01 #286 #881365

>>881349
И чем тебя этот не устроил?

24 Ноя, 10:08 #287 #881366

>>881361
Хуй знает. Во всяких примерах кэш разруливается в модели. Но если у тебя пользователь может управлять кэшем - зависит от того, что конкретно он может с ним делать, и когда.
Если там хуйня в настройках типа "кэш вкл/выкл" - я бы делал всё в модели

Ответы>>881367

24 Ноя, 10:11 #288 #881367

>>881366
Нет, для пользователя не должно быть видно разницы. Для пользователя должно быть видно лишь что все очень быстро работает.

24 Ноя, 10:11 #289 #881368

>>881361
В презенторе не должно быть ни какой логики, это просто смазка между конкретным UI и бизнес-логикой.

P.S.
Огромный минус MV(P/C/VM) что новички не понимают зачем нужна прослойка.
В итоге в сложном UI она просто превращается в костыль из спагетти под 1k строк,
куда скидывают весь непонятный код.

мимо

Ответы>>881371>>881383

24 Ноя, 10:34 #290 #881371

>>881368
Ну вроде как аксиома Эскобара. Ибо либо модель жиреет и вью, а презентер тонкий, либо же презентер, а соответственно модель и вью потоньше. Разницы то по факту нет.

Ответы>>881382>>881383

24 Ноя, 11:16 #291 #881382

>>881371
Single Responsibility Principle - твой друг
Сложный UI - сложные(кастомные) контролы
Сложная предметная область - сложная бизнес логика

imho Сложный Presenter это:
• нет времени обдумывать архитектуру - положи код в презентер
• не знаешь к какому слою относится код - положи в презентер
• не знаешь как сделать правильные зависимости - положи все зависимости в презентер
Это почти как когда все сували внутрь активити, только тебе в отдельный Java класс.

P.S.
Кстати императивные правила правильного презентера:
1) Меньше 100 строк
2) Все зависимости на другие классы через конструктор (что бы писать тесты без заморочками с даггером или др DI)
3) Не больше 2 зависимостей на другие классы. Если больше - значит что твой презентер слишком много делает, а он должен делегировать задачи на более низкий уровень.

Что думаете?

Ответы>>881385>>881390

24 Ноя, 11:19 #292 #881383

>>881368
Сорян, а где тогда эта самая бизнес-логика?
И каково тестировать логику в UI, например, или в модели (если у тебя модель из rx-вызовов - ещё куда ни шло, а вот если лоадеры/асинктаски?)

>>881371
Разница есть, и охуенная. Толстый презентер тестируется на jvm. А в тонком лично я не вижу смысла

Ответы>>881398

24 Ноя, 11:31 #293 #881385

>>881382
Я думаю что два с половиной сабскрайбера rxJava будут больше твоего презентера, о чем спешу тебе сообщить. Тащемта пагинация одна из наиболее простых и часто встречаемых вещей, добавим возможность фильтрации элементов, а еще например неможко экшонов с ними ( клики по лайкам-хуяйкам, например ). Все еще 100 строк ?

Ответы>>881386

24 Ноя, 11:32 #294 #881386

>>881385
Да, в презентере тупо будут дергаться методы модели и подписка на излучаемые данные по скроллу списка плюс коллбэк на клики. Я вот сомневаюсь что у тебя выйдет меньше ста строк

Ответы>>881387

24 Ноя, 11:33 #295 #881387

>>881386
Да блять, два маппера dto->vo уже будут 100 строк размером, че я заливаю то

24 Ноя, 11:41 #296 #881390

>>881382
>Сложный UI - сложные(кастомные) контролы
Читай: анимации по 100 строк, setTextColor, setVisibility, навигация между скринами и диалоги

>нет времени обдумывать архитектуру - положи код в презентер
>не знаешь к какому слою относится код - положи в презентер
В этом случае наверное код делает вещи из разных слоёв, и его стоит разделить, или переписать.

>не знаешь как сделать правильные зависимости - положи все зависимости в презентер
Странно. Презентер логично хранит ссылки на вью, и на внешний слой модели.

>Меньше 100 строк
Твои предложения для сложной предметной области?

>Не больше 2 зависимостей на другие классы. Если больше - значит что твой презентер слишком много делает, а он должен делегировать задачи на более низкий уровень.
А что мешает из вью сунуть презентеру ещё и адаптер, чтобы не дублировать кучу методов, и не превращать вью в помойку?
У меня он ещё хранит ссылку на RetainedFragment, в котором хранятся запросы. Хотя, без этого можно обойтись. Но в любом случае, все твои запущенные реквесты нужно где-то хранить

Ответы>>881403

24 Ноя, 11:43 #297 #881391

Обмажтесь PureMVC, базарю, ещё захочете

24 Ноя, 12:00 #298 #881398

>>881383
>Разница есть, и охуенная. Толстый презентер тестируется на jvm.
Начинающие программисты очень часто трактуют архитектурную модель MVC как пассивную модель MVC: модель выступает исключительно совокупностью функций для доступа к данным, а контроллер содержит бизнес-логику. В результате — код моделей по факту является средством получения данных из СУБД, а контроллер — типичным модулем, наполненным бизнес-логикой. В результате такого понимания — MVC-разработчики стали писать код, который Pádraic Brady охарактеризовал как «ТТУК» («Толстые, тупые, уродливые контроллеры»; Fat Stupid Ugly Controllers)
wikipedia

>А в тонком лично я не вижу смысла
Что самое главное в ПО которое мы разрабатываем?
Очевидно это: ПРЕДМЕТНАЯ ОБЛАСТЬ И обслуживающая ее БИЗНЕС ЛОГИКА,
ее и надо тестировать, а не реагирование на кнопки.

Тут хорошо расписывают: https://youtu.be/sydlYGDGHpc (там не про Android, в общем про архитектуру)

Ответы>>881406

24 Ноя, 12:20 #299 #881403

>>881390
>А что мешает из вью сунуть презентеру ещё и адаптер, чтобы не дублировать кучу методов, и не превращать вью в помойку?
Простота не значит "мало кода". Если он у тебя дублируется код - вынеси его в отдельный класс.
Не пихай все в одном место, только потому что это сейчас проще сделать.
Это технический долг, который вылезет при добавление новой фичи в продукт.

Вью это Android UI часть, ее "Ответственность" это правильная отрисовка данных и показ анимации.
Происходит это через адаптер+listview или linearlayout - это конкретная имплементация, неважная на уровне БизЛогики.

Ответы>>881418>>881791

24 Ноя, 12:30 #300 #881406

>>881398
>ее и надо тестировать, а не реагирование на кнопки.
>предлагает забить модель бизнес-логикой, и приложить портянку-презентер
>считает, что MVC == MVP
>суёт активную модель в Android
>ссылается на презентацию какого-то хуя из 2013
Прекрати, маня - ты вытекаешь.

А Clean Architecture под андроид как раз и топит за жирные презентеры, там сабскрайберы прямо в них висят.

Ответы>>881421>>881423

24 Ноя, 12:45 #301 #881418

>>881403
>Происходит это через адаптер+listview или linearlayout
Всё дело в том, что адаптер у тебя отображает модель на вью. И ничего ты с этим не сделаешь - будешь либо сувать модель в адаптер извне, либо лезть и копаться куда-то за своей моделью из адаптера.

Одновременно он держит коллбэки view, всякие onViewAttached()

>это конкретная имплементация, неважная на уровне БизЛогики
Прилетает тебе ошибка, которую надо показать либо в снэкбаре (если вью находится в состоянии X, и эта ошибка впервые за время её существования), либо в лэйауте (если нет). Ты предлагаешь всё это сунуть во вью?

24 Ноя, 12:56 #302 #881421

>>881406
У тебя будет Fat Stupid Ugly Presenter - ты доволен?

24 Ноя, 12:58 #303 #881423

>>881406
>А Clean Architecture
>под андроид
А под iOS / WindowsPhone / Desktop - у тебя тоже свои "clean architecture"?

Ответы>>881493

24 Ноя, 14:57 #304 #881493

>>881423
Естественно. Ведь архитектура программы строится с учётом поведения окружения и платформы, а также физических возможностей реализации предоставляемыми средствами.

Ответы>>881791

24 Ноя, 15:35 #305 #881497

Как запустить одну активити из другой так, чтобы в списке запущенных приложений были видны эти 2 активити?
По аналогии с вкладками хрома, пока они его не переделали.

Ответы>>881504>>881627

24 Ноя, 16:01 #306 #881504

>>881497
В новой таске открывай

Ответы>>881550

24 Ноя, 18:13 #307 #881550

>>881504
Приду домой, проверю.
Помнится, что FLAG_ACTIVITY_NEW_TASK не помог.

Ответы>>881627

24 Ноя, 20:20 #308 #881627

>>881550
>>881497
https://www.youtube.com/watch?v=4Y3JMvbcxQE

27 Кб, 368x345

25 Ноя, 03:32 #309 #881778

https://habrahabr.ru/post/316008/

Ответы>>881830

25 Ноя, 06:20 #310 #881789

Тема касается только платных сервисов гугла. А так - типа напоминалочка выходит: "зарегистрируйте ип, но мы естественно верим вам на слово, что зарегистрировали". Проиграл с того, как обоссали либерах в комментах пруфами налогов в европе.

25 Ноя, 06:32 #311 #881791

>>881493
>>881403
Вот этот прав, презентер не должен ничего знать про детали реализации ui, поэтому никак адаптеров ему передавать не стоит.

Ответы>>881831>>881832

25 Ноя, 09:45 #312 #881830

>>881778
Горжусь Россией!
Дали пососать своему народу

25 Ноя, 09:48 #313 #881831

>>881791
И чо, все клики/дисмисы и тд во вьюху из адаптера кидать а дальше в презентер?

Ответы>>881836

25 Ноя, 09:48 #314 #881832

>>881791
И чо, все клики/дисмисы и тд во вьюху из адаптера кидать а дальше в презентер?

Ответы>>881836

25 Ноя, 10:24 #315 #881836

>>881831
>>881832
Разумеется. View должен лишь оповещать о входящих событиях презентер.

25 Ноя, 13:03 #316 #881891

Когда нужно использовать getString() чтобы получить строку из ресурсов, а когда нет? Случайно забыл использовать эту функцию для получения строки, передав аргументом в textView.setText(R.string.string_name) и внезапно для меня, все сработало абсолютно так же, как если бы я написал textView.setText(getString(R.string.string_name)).
В начале обучения я почему-то себе запомнил, что обращения вида R.string.string_name дают int адрес ресурса вместо самого ресурса. Где истина?

Ответы>>881899>>881907

25 Ноя, 13:29 #317 #881899

>>881891
setText() перегружен, зайди в исходники и сам посмотри, он там то же самое делает, просто берет контекст, из него берет ресурсы и подсовывает твой id

25 Ноя, 13:49 #318 #881907

>>881891
Ты еще много интересного обнаружишь, когда попробуешь посто цифру в TextView вывести.

Ответы>>881931

25 Ноя, 14:49 #319 #881931

>>881907
Гроб Гроб Кладбище ResourceNotFoundException

25 Ноя, 15:57 #320 #881957

Котаны, как люди вообще юзают не retained фрагменты?
Вот например простая задачка - отправить запрос на сервер и выжить при перевороте экрана.
Мутить сервис?
Это нормально вообще?

Аосо, сделал приложение по MVP + Viewstate. Работает, память не течет, Viewstate сохраняется и восстанавливается.
Но ведь с запросами в сервисе получится проще и компактнее, разве нет?
Перевернули экран - уебались, дернули сервис, забрали результат.

Какая блджад архитектура щас самый збс вариант?

Ответы>>881972

25 Ноя, 16:14 #321 #881972

>>881957
Зависит от того, что у тебя за запросы. Если просто получаешь список элементов, достаточно в репозитории сделать запрос, сохранить в бд, вернуть всё презентеру.
Если у тебя загрузка файла или какая-то платёжная операция, то тут понятно нужно сделать так, чтобы она гарнатированно завершилась.

Ответы>>881993

25 Ноя, 16:39 #322 #881993

>>881972
У меня запросы на сервер для электронной очереди: встать в очередь, уйти нах из очереди.
Где-то пару секунд занимают.

Ответы>>882087

25 Ноя, 19:24 #323 #882087

>>881993
Сервис нужен

Ответы>>882093>>882198

25 Ноя, 19:26 #324 #882093

>>882087
Подойдет IntentService?
Это поможет от убийства приложения пользователем через recent?

Ответы>>882117

25 Ноя, 19:51 #325 #882117

>>882093
Не, от убийства приложения пользователем не поможет.
В целом - это достаточно надежный подход - через Intent Service?

25 Ноя, 22:46 #326 #882198

>>882087
Сделал так: IntentService, результат операции сообщает в UI через LocalBroadcast.
Когда мы отписаны от BroadcastReceiver'ов - считываем результат последней операции из SharedPreferences и удаляем его оттуда. Тем самым если юзер свернул приложение - при развороте ему показывают результат операции.
Все ок?

26 Ноя, 00:19 #327 #882247

Такая тема
Пишу для друга лабиринт, написал свои view, которые по FrameLayout накладываются друг на друга слоями, а в onDraw на canvas-ах все примитивами рисуют. Мне нужно сделать анимацию перемещения шарика из точки А в точку B, в рамках canvas. Мой алгоритм какой-то такой:
Есть расстояние, которое надо пройти и частота. Расстояние делю на частоту и получаю dx,dy. Потом один большой цикл fori с пределом в частоту, где меняется координата по x+dx*i и invalidate, чтобы отрисовалась по измененным x y картинка.
В результате я пускаю, оно замирает на секунду-полторы (хотя старые изображения должны были исчезнуть), а потом резко прыгает в новое состояние. Короче, как до включения блока с анимацией, только еще пауза добавляется.
Нашел на stackverflow вариант с прыгающим мячиком
https://gist.github.com/CC-Ultra/60e7c5a797c9fcb509251f90d5d68837
https://gist.github.com/CC-Ultra/5594507170680660459b5995f548f2c8
И никак не пойму что в том коде такого принципиально отличающегося от моего. canvas.save/restore?

Поясните мне что я должен сделать, чтобы оно заработало

26 Ноя, 10:53 #328 #882349

Сап, в Turbo Terminal когда пытаюсь создать директорию или вообще произвести операции с файлами пишет
%operation_name% failed for %file/dir_name%,read-only file system
Какой командой это фиксить?
И каким терминалом на ведре пользуешься ты, анон?
Надеюсь не слишком платиновый

Ответы>>882356>>882370

26 Ноя, 11:08 #329 #882354

В ведроиде try-with работает как-то иначе? Открываю с ним подключение к sqlite, и по выполнению блока это подключение не закрывается.
Тот же самый код работает как надо вне андроида.

Ответы>>882355>>882357>>882391

26 Ноя, 11:11 #330 #882355

>>882354
И нет, min sdk = 19.

Ответы>>882357>>882391

26 Ноя, 11:13 #331 #882356

>>882349
Рутованый фиксить. Тебя намекают что у тебя нет прав писать этот файл.

Ответы>>882370

26 Ноя, 11:14 #332 #882357

>>882354
>>882355
Попробуй не с. sqlite. А с каким нибудь потоком.

26 Ноя, 11:26 #333 #882359

Тут идут срачи по архитектуре. А у меня ситуация такая, что перед получением некоторых данных надо провести синхронизацию с кое-каким сервисом, и удалить лишние записи из базы.
Вот хз, сувать это в презентер, или в модель (а из презентера вызывать только комбинированный запрос)?

Ответы>>882365

26 Ноя, 11:40 #334 #882365

>>882359
Ебашь всё в activity onCreate, чо как не пацан.

26 Ноя, 11:49 #335 #882370

>>882356
Если ты про su, то я ещё до скачки терминала зарутовал через кингрут, вошел в su, и вот это вот >>882349 написал

Ответы>>882386

26 Ноя, 12:49 #336 #882386

>>882370
Вообще в этом треде этой хуйней не занимаются, попробуй sudo, а вообще возможно ты пытаешься чисто ведроидовские файлы потрогать. Можешь через adb shell попробовать.

Ответы>>882474

26 Ноя, 13:04 #337 #882391

>>882355
>>882354
Ну охуеть вообще.
Причина в корявом драйвере.
https://github.com/SQLDroid/SQLDroid/issues/68

Причем, фикс проблемы был якобы аж 20 августа, но нихуя не изменилось, судя по всему.

Ответы>>882399>>882412>>882413

26 Ноя, 13:15 #338 #882399

>>882391
Впрочем, у меня была версия 1.0.3, в то время как самая свежая - 0.1.1.
Очевидная нумерация версий такая очевидная.

Ответы>>882412>>882413

26 Ноя, 13:26 #339 #882412

>>882391
>>882399
А в свежайшей версии 0.1.1, которая содержала это исправление - все так же. Мдя. Хех.

26 Ноя, 13:26 #340 #882413

>>882391
>>882399
А может там версия sqlite не очень на девайсе?

26 Ноя, 15:08 #341 #882474

>>882386
Спасибо добрый человек, а где тред этих вопросов?

Ответы>>882490>>882552

26 Ноя, 15:40 #342 #882490

>>882474
В /ga/

Ответы>>882507

26 Ноя, 15:51 #343 #882497

>>879182
бамп вопросу. ну что же вы мамкины программисты???!!!

Ответы>>882507

26 Ноя, 16:05 #344 #882507

>>882497
--> >>882490

Ответы>>882560

26 Ноя, 16:40 #345 #882523

Котаны, такая проблема, попробовал впервые обработать повороты экрана в активити с фрагментом как положено, вроде как все работает как нужно, стэйт восстанавливается, но вот беда в следующем, каждый поворот создается новый инстанс активити. А старый через FragmentManager держит ссылку на одну из вьюх фрагмента. Но самая мякотка в том, что фрагменты тоже пересоздаются, и, соответственно, может ликать только FragmentManager. Вопрос в следующем - кто сталкивался, на что обратить внимание стоит ? Уже проверил:
1) findViewById заместо Butterknife
2) Glide
3) Всевозможное зануление вьюх и прочих ссылок в onDestroyView фрагмента
4) ретейн/неретейн фрагмент
5) singleInstance флаг
Каким образом FragmentManager вообще может держать ссылку на RecyclerView фрагмента, который был пересоздан ? Как она в него может попасть тащемта, и как ее оттуда выпилить ?

Ответы>>882616

26 Ноя, 17:22 #346 #882542

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

goBtn_text = (Button) findViewById(R.id.btnActTwo);
goBtn_text.setOnClickListener(this);
}
помогите !! у меня в строчке setContentView(R.layout.activity_main);
на букве R. ошибку выдает , и не только в этой строчке , во всем скрипте !
что делать ? куда отсылку делать ? ну или что добавить ?

Ответы>>882554>>882556

26 Ноя, 17:46 #347 #882552

>>882474
https://2ch.hk/mobi/ (М)

Ответы>>882614

26 Ноя, 17:48 #348 #882554

>>882542
Значит или класс не сгенерился или импорта на R нет.

26 Ноя, 17:50 #349 #882556

>>882542
clean, rebuild иногда помогает, а так, если что-то типа даггера используешь, то может из-за его ошибки не генерится

26 Ноя, 17:54 #350 #882560

>>882507
ты просто мудак, или не знаешь ответа?

26 Ноя, 19:48 #351 #882614

>>882552
Спасибо, все, улетаю.

26 Ноя, 19:50 #352 #882616

>>882523
solved, не нужно трогать ничего в onDestroyView :D

268 Кб, 720x1272

26 Ноя, 19:58 #353 #882618

Как вызвать этот диалог?
Использую Drive REST API для Android.
Сейчас делаю как предлагают в гугле - послать запрос к Drive и если поймали исключение - отправить КАКОЙ-ТО интент, который нам дадут в исключении.
начинаю охуевать с этих индусов
Этот код вполне нормально работает, но хочу без этой всей хуйни.
https://gist.github.com/anonymous/93396e8277e8ac803f15dc805781815c

Ответы>>882736

48 Кб, 859x502

26 Ноя, 20:47 #354 #882666

Использую GoogleApiCLient либу.
После того как включил proguard получил кучу варнингов при попытке собрать release версию.

Как это пофиксить? Я так понимаю он вырезал к хуям все, что не используется?

Ответы>>882769

26 Ноя, 22:36 #355 #882736

>>882618
Это же вроде часть OAuth-а ? Если так, то скорее всего можно через WebView, отлавливая дип линки

26 Ноя, 22:39 #356 #882738

Кто-нибудь использует Kotlin для разработки Android приложений?

Ответы>>882769>>882773

26 Ноя, 23:41 #357 #882769

>>882738
Да.
>>882666
Ты уверен, что тебе нужно использовать java sdk oauth, а не android sdk?
Ну а с slf4j ебись сам и вручную прописывай правила.

Ответы>>882781

26 Ноя, 23:42 #358 #882770

Пытаюсь понять, как сохранить состояние RecyclerView после смены ориентации экрана. Методы из гугла не помогают, как мне кажется потому, что адаптер разрушается и теряет всю информацию. Как выйти из положения? Адаптер выводит инфу из кастомных объектов, которые, в свою очередь, собираются из json запроса. Я думал сделать базу данных, и записывать объекты туда, чтобы потом легко считать при надобности, но мне такое решение кажется диким.

Ответы>>882786>>882789>>883038>>883138

6805 Кб, 2988x3735

26 Ноя, 23:42 #359 #882771

Ананасы, расскажите как покрасивше сделать переход с одной активности в другую.

68 Кб, 972x418

26 Ноя, 23:46 #360 #882773

>>882738
Я использую, а что?
И не только под Android, но и под iOS (robovm/libgdx).

Еще юзаю для скриптов на macOS, вместо баша.
Плюсы:
- весь код статически проверяется
- IntelliSense в IDEA работает
- знаний JDK достаточно для работы (не надо учить системные команды)

Вот к примеру скриптик для перекодирования куска видео в webm.

Ответы>>882775>>883555

26 Ноя, 23:54 #361 #882775

>>882773
Нужно ли знать Java, чтобы писать на Kotlin?

Ответы>>882784>>882797

23 Кб, 765x306

27 Ноя, 00:08 #362 #882781

>>882769
Были лишние зависимости. Удалил и получил совсем другую хуиту.
Не знаешь что с этим делать?

Ответы>>882805

27 Ноя, 00:10 #363 #882784

>>882775
Без знаний джавы ты нахуй не нужен. Котлин приятное дополнение для знающих.

27 Ноя, 00:17 #364 #882786

>>882770
Loaders + ContentProvider и всё будет работать автоматически.

Или при пересоздании активити сохраняй позицию текущего элемента, а потом вызывай scrollToPosition

Ответы>>882810

27 Ноя, 00:19 #365 #882789

>>882770
Адаптер сохраняется в retained фрагменте и при повороте экрана данные никуда не пропадают.
Позицию тоже можно в этом же фрагменте просто записать в переменную.

Ответы>>882791

27 Ноя, 00:21 #366 #882791

>>882789
> Адаптер сохраняется в retained фрагменте
Ты серьезно? Пиздос.

Ответы>>882793

27 Ноя, 00:23 #367 #882793

>>882791
А что тут такого? Рассказывай давай.

27 Ноя, 00:30 #368 #882797

>>882775
Как минимум ты должен знать классы из JDK, тк у Kotlin нет своей библиотеки (только расширения к JDK).
Насчет языка мне сложно судить, тк я писал на Java еще до появления Kotlin.

А вообще знаешь как говорят
"Java довольно маленький язык, даже с лямбдами, они (программисты) его просто всасывают с молоком матери"
Алексей Шипилев

Думаю и ты всосешь его за пару недель.

27 Ноя, 00:43 #369 #882802

Кстати, кто-нибудь использует Jack compiler? Есть хоть какие-то преимущества перед Retrolambda? А то я только недостатки вижу.

Ответы>>883001

27 Ноя, 00:53 #370 #882805

>>882781
Насколько я знаю, такие проблемы решаются -dontwarn

попробуй добавить в proguard-rules.pro
-dontwarn com.google.common.

Ответы>>882807>>882812

4 Кб, 238x71

27 Ноя, 00:56 #371 #882807

>>882805

Ответы>>882812

27 Ноя, 00:58 #372 #882810

>>882786
Похоже я через жопу реализовал бесконечную прокрутку. В начале каждые 20 элементов у меня создавался новый лоадер, и я приписал им самовыпиливаться после onLoadFinished(). Полагаю, это неверный подход? Нужно реюзать один и тот же лоадер? Или для каждой подгрузки создавать новый?

Ответы>>882813

27 Ноя, 01:00 #373 #882812

>>882807
>>882805
Помогло, спасибо!
Вместо 3800 кб стало 2060 к.б.
Завтра проверю - не крашится ли оно после этого.

27 Ноя, 01:00 #374 #882813

>>882810
Хуйню какую-то делаешь.
Конечно, один и тот же лоадер, один и тот же recyclerview.

27 Ноя, 12:46 #375 #883001

>>882802
Ты дурак совсем, да?

Ответы>>883034

27 Ноя, 14:19 #376 #883034

>>883001
Ты самоутвердиться решил?
Смысл на двачах это делать?
За игнорят же или нахуй пошлют.

27 Ноя, 14:28 #377 #883038

>>882770
1) Состояние адаптера сохраняет презентер
2) Состояние лэйаутменеджера сохраняется в onSaveInstanceState()

Ответы>>883107

27 Ноя, 16:38 #378 #883107

>>883038
1) Т.е. адаптер храним в retained fragment?
2) позицию скролла через saveinstancestate?

Ответы>>883116>>883245

27 Ноя, 16:55 #379 #883116

>>883107
Алсо, почитал mosby и НИХУЯ не понял где хранить этот адаптер.
Он предагает 2 варианта: retain fragment и onsavedinstancestate.

Ответы>>883139

27 Ноя, 17:35 #380 #883138

>>882770
Я сделал Parcelable адаптер ( по факту достаточно, чтобы итемы были Parcelable, мне просто приспичило сильно уж больно :D ), и в onSaveInstanceState/onViewStateRestored его закидывай и доставай

Ответы>>883221>>884263

27 Ноя, 17:36 #381 #883139

>>883116
фу-фу-фу блять, нахуй ретейн фрагменты, хуй знает сколько проживет, хуй знает что там с ним происходит, only сохранения состояния внутри фрагмента

Ответы>>883142

27 Ноя, 17:38 #382 #883140

А использовал кто-то Loader-ы для сохранения презентера ? Мне уж больно заманчиво показалось, но вот трабла в том, что ( по крайней мере в v7 фрагменте ) они, сцуко, вопреки докам нихуя не переживают смену ориентации, если юзать LoaderManager из активити, то все збс, только хуй знает как заставить презентер сдохнуть ( какой элемент жц фрагмента мониторить ). Тащемта вопрос: как заставить лоадер внутри фрагмента переживать смену конфига ?

Ответы>>883143>>883185

27 Ноя, 17:47 #383 #883142

>>883139
Окей. Куда тогда презентер сунуть?

27 Ноя, 17:47 #384 #883143

>>883140
>А использовал кто-то Loader-ы для сохранения презентера ?
Не надо. Это выглядит чертовски костыльно.

Ответы>>883144

27 Ноя, 17:51 #385 #883144

>>883143
Зато чертовски эффективно, если я все-таки сумею заставить это говнище работать как надо. Ну какбэ когда презентер просто-таки обязан завершить какие-то операции, то по-моему это важно

Ответы>>883145

27 Ноя, 17:54 #386 #883145

>>883144
Здесь используется Loader, мы не можем контроллировать тот индусский код, который сидит внутри.
Следовательно - это решение не надежно.

Ответы>>883146

27 Ноя, 17:57 #387 #883146

>>883145
Какое у тебя тогда решение, которое позволит презентеру не умирать на смене конфига и закончить жизненно важные процессы ?

Ответы>>883147

27 Ноя, 18:05 #388 #883147

>>883146
Никакого нет. И статистики таких проблем тоже не имею.
Сам подход мне жутко не нравится.

Ответы>>883162

27 Ноя, 18:31 #389 #883162

>>883147
То есть предположим клиент начал транзакцию, перевернул планшет и пизда деньгам ? Дружище, да тебе ебллет порвут за такое приложение.

И все же, абстрагируясь, почему могут лоадеры не работать ? appcompat 24.2.1, в основе иерархии - AppCompatActivity, фрагменты все оттуда же, унаследованы от app.Fragment. В issue официальной, связанной с данной проблемой было написано, что решили ее в 24. Может я делаю что не так ? Хотя вроде как все аналогично примерам

Ответы>>883187>>883326>>883354

27 Ноя, 18:45 #390 #883171

Как выходить из следующей ситуации: пользователь скроллит RecyclerView, элементы которого подгружаются из интернета. Внезапно интернет у него пропадает, и он доскроллиавает до самого низа. Затем интернет появляется снова. Нужно продолжить подгружать элементы.
Самый простой выход, который я вижу - добавлять последним элементом RecyclerView кнопку "обновить", если вдруг интернет соединение обрывается. Есть способ с автоматической подгрузкой сразу, как только соединение возобновится?

Ответы>>883183>>883235

27 Ноя, 18:58 #391 #883183

>>883171
У меня broadcast receiver стоит на CONNECTIVITY_CHANGE на который поставлен листенер в компонентах, который выводит диалог а-ля "Нахуй сходи, нет инета" и предлагает перейти в оффлайн режим, после подключения автоматом перекидывает на онлайн и идет реинициализация всех последних загрузок, которые актуальны. Обрати внимание на то, что CONNECTIVITY_CHANGED может иногда не триггериться на пропадание сети, а потому проще всего сделать метод а-ля ping до гуглов, дабы проверить реальное состояние. При получении в каком-либо запросе UnknownHostException пробуй еще пару раз, мало ли, инет слабый, потом пинг, и в зависимости от него либо переводишь в оффлайн, либо снова пробуешь запрос отправить

Ответы>>883184

27 Ноя, 18:59 #392 #883184

>>883183
p.s. ну и соответственно, эвенты изменения состояния подключения доступны отовсюду, то есть (в контексте rx) у тебя можно откуда угодно на них подписаться

27 Ноя, 19:00 #393 #883185

>>883140
Я использую. Пожалуй, самый удобный сопособ.

Ответы>>883192

27 Ноя, 19:03 #394 #883187

>>883162
Транзакция не должна выполнятся презентером. Юзер может в любом случае закрыть приложение и пизда деньгам, если ты делал её в презентере вне зависимости от того, как ты сохраняешь его состояние.
В таких случаях приходится использовать ведроидовские сервисы.

Ответы>>883191

27 Ноя, 19:09 #395 #883191

>>883187
Ну да, только хотел про них сказать, но и там ведь свои проблемы, система очень не любит давать им жить

Ответы>>883331

27 Ноя, 19:10 #396 #883192

>>883185
какая версия саппорт либы, что они работают как должны ? Или у тебя тоже умирают на повороте ?

Ответы>>883246

27 Ноя, 19:35 #397 #883203

Окей, в принципе, привязка лоадера к активити, а не к фрагменту проблему решила. Тепрерь шаг 2: нужно придумать как бы при сворачивании приложения и разворачивании все кошерно сделать.

27 Ноя, 20:25 #398 #883221

>>883138
Добра анон, сделал, как ты предложил. Осталось только одна проблема - при смене ориентации с вертикальной на горизонтальную RecyclerView отматывает назад на произвольно количество айтемов. При смене с горизонтальной на вертикальную все работает идеально.

Ответы>>883222>>883223

27 Ноя, 20:28 #399 #883222

>>883221
там есть такая тема вроде, что если меняешь layout вьюхолдера - то нужно будет вручную закидывать lastVisibleItem и например оффсет по нему. Довольно сложно, но я другого решения не вижу, а потом smoothScrollToPosition (или как его там)

Ответы>>883524

27 Ноя, 20:29 #400 #883223

>>883221
Еще есть возможно проблема восстановления в том, что ты не в onResume восстанавливаешь стейт, а в onViewStateRestored

Ответы>>883524

27 Ноя, 20:32 #401 #883225

нужно восстанавливать стейт после вызова super.onResume()

27 Ноя, 20:51 #402 #883235

>>883171
У меня это реализуется через проверку "в лоб" при каждом запросе. Если он доскроллил до низа, и инет не появился - запрос (который триггерится по скроллу до последнего элемента), бросает экзепшн - и юзеру показывается сообщение. Если юзер ещё раз пытается делать скролл - запрос пускается.
Не вижу смысла делать всю эту еболу с коннективити-чейндж, т.к. срабатывает это дело не всегда, да и неуместные доёбы в приложениях типа ютуба "офлайн-режим, нет пути, пидор" меня лично раздражают

Ответы>>883237>>883239

27 Ноя, 20:52 #403 #883237

>>883235
Тащемто пингануть можно всегда, а connectivity_change гарантированно сработает при появлении подключения к сети

27 Ноя, 20:53 #404 #883239

>>883235
и да будет все выглядеть как говно, угу

27 Ноя, 21:05 #405 #883245

>>883107
1) Нет. Сохраняется именно состояние адаптера, которое надо отобразить (списочек с данными, флаг подгрузки и т.д.). Где сохраняется? Либо в самом презентере (если живёт), либо пишется в onSavedInstanceState.
2) У LinearLayoutManager есть метод onSaveInstanceState, который сохраняет все данные об отображении, включая позицию при скролле. У своего ты можешь переопределить

Ответы>>883330

27 Ноя, 21:06 #406 #883246

>>883192
Последняя. Никто у меня не умирает. Делаешь что-то неправильно, раз лоадеры у тебя не так работают.

Ответы>>883247

27 Ноя, 21:14 #407 #883247

>>883246
Да вроде как работает все только если юзать getActivity().getLoaderManager().initLoader...
Использую в onActivityCreated.

27 Ноя, 23:13 #408 #883326

>>883162
>То есть предположим клиент начал транзакцию, перевернул планшет и пизда деньгам ?
Это делается в foreground сервисе.

Ответы>>883331>>883354

27 Ноя, 23:17 #409 #883330

>>883245
1) Ага. Т.е. в случае если этот фрагмент был пересоздан - максимум что случится - будет отображено НЕ ТО?

27 Ноя, 23:17 #410 #883331

>>883191
>>883326
foreground работает сутками напролёт в редких случаях сервис пересоздается.

27 Ноя, 23:41 #411 #883354

>>883162
>>883326
Вы дауны, или притворяетесь? Foreground сделан не для этого. С ним еще нужно нотификацию пилить. Пруфаните хоть одно апи, где для платежа пилится форграунд.
Не сохранять презентер != не сохранять данные.
onPause вроде вообще всегда вызывается, даже при дикой нехватке памяти. В нем отменяется реквест, и состояние можно сохранять, и мессадж запилить.
Если очень надо в бэкграунде, пока приложение свернуто - интент сервис.

Ответы>>883358>>883370

27 Ноя, 23:48 #412 #883358

>>883354
>Если очень надо в бэкграунде, пока приложение свернуто - интент сервис.
Пользователь заходит в Recent, смахивает приложение и IntentService убивается мгновенно и следовательно - транзакция не выполнена.

27 Ноя, 23:57 #413 #883370

>>883354
А можешь за IPC пояснить ?

Суть такая, я реализовал следующие элементы:
1) TransactionEntity - Parcelable объект, который подается на обработку со стороны активити ( например ) сервису. Дублировал в aidl.

2) TransactionEvent - Parcelable объект, который собственно будет передаваться обратно. Содержит, например, id и status поля.
Тоже описан в aidl.

3) TransactionCallback - интерфейс, описанный в aidl, в котором один метод: onTransactionEvent(in TransactionEvent transactionEvent). Он должен позволять передавать в активити (если она не сдохла к ебеням) соответственно итог обработки TransactionEntity

4) TransactionListener с методами:
addCallback(in TransactionCallback callback, in long cookie)
и
executeTransaction(in TransactionEntity entity, in long cookie)
опять же в aidl.

5) Сделал соответственно сервис, в котором коллбэки хранятся в RemoteCallbackList, ну и по куке ( при ее наличии, при отсутствии будет наверное уведомление ) выкидывает результат.

Логично ли такую хуйню вообще вертеть ? Вроде как понравилось, что можно неограниченное количество "рецепиентов" на сервисе держать таким макаром, да и не засоряет никаким говном основной код. Ну и заработает ли оно ? Плюс, как можно заставить сий йоба-сервис жить так долго, как только возможно, а при убивании оного кэшировать все, что есть, перезапускать и по-новой ?

121 Кб, 301x298

28 Ноя, 00:53 #414 #883399

Пиздец, в очередной раз засрали пол треда рассуждениями о костылях жизненного цикла Android.

Лучше бы Kotlin 1.1 обсуждали (недавно вышел M03)

Ответы>>883406>>883413

28 Ноя, 01:08 #415 #883406

>>883399
Ты хуй изо рта когда вытащить успел ?

28 Ноя, 01:38 #416 #883413

>>883399
Обсудил тебе за щеку.

39 Кб, 608x437

28 Ноя, 07:05 #417 #883470

Мир вашему дому, бродяги
Есть ли тут люди, которым удалось устроиться ведроёбом? Как вам это удалось?

Ответы>>883476>>883486>>883488>>883512

sage 28 Ноя, 07:23 #418 #883476

>>883470
Через постель.

28 Ноя, 08:01 #419 #883486

>>883470
Получилось только через знакомства.

28 Ноя, 08:02 #420 #883488

>>883470
Нашел заказ через знакомства. Потом еще один такой нашел.

sage 28 Ноя, 10:27 #421 #883512

>>883470
>Как вам это удалось?
Да без задней мысли - приходишь на собеседование и устраиваешься.

28 Ноя, 11:06 #422 #883524

>>883222
>>883223
Каким-то магическим образом, позиция сама восстанавливается корректно, без излишних телодвижений с моей стороны, но только тогда, когда перед поворотом есть >40 подгруженных неотображенных элементов. А вот если перед поворотом находится близко к концу списка, то после него произойдет откат на n элементов назад.
Логгирование показывает, что во втором случае всегда срабатывает EndlessRecyclerViewScrollListener и подгружает еще элементы. Попробую либо подгружать больше элементов заранее, либо как-то избегать первого срабатывания после поворота экрана.

28 Ноя, 12:31 #423 #883555

>>882773
Скрипты на котлине, больной ублюдок...
Чем тебе питон для них не угодил?

Ответы>>883589

28 Ноя, 12:59 #424 #883569

Алсо, что вы за хуйню тут устроили про транзакции, нормальный же способ получить пуш по успешной транзакции.

28 Ноя, 13:43 #425 #883589

>>883555
Очевидно что как мобильный девелопер
- Я знаю Kotlin и стандартную библиотеку Java лучше чем Python
- У меня есть настроенная IDEA с код-комплитом
плюс в Kotlin есть подходящие плюшки
- Официальная поддержка скриптинга (в след. версии можно будет подключать любую Java библиотеку из мавена)
- Много "сахара" для I/O операций

26 Кб, 604x501

28 Ноя, 15:27 #426 #883631

Привет здешним анонам.
Подскажите плиз, как реализовать лучше всего меню, как drawerLayout, только снизу? У самого drawerLayout можно выставлять gravity только LEFT и RIGHT.

Ответы>>883639

28 Ноя, 15:48 #427 #883639

>>883631
BottomSheetBehavioir?

Ответы>>883752

212 Кб, 1300x957

28 Ноя, 18:28 #428 #883752

>>883639
да, то, что мне было нужно, спасибо)

28 Ноя, 22:03 #429 #883875

Когда по вашим прикидкам minSdk 21?

Ответы>>883904>>883963

28 Ноя, 22:39 #430 #883904

>>883875
Уже 19, если тебе похуй на 13%.

28 Ноя, 23:52 #431 #883963

>>883875
К середине следующего года. А так надо следить, когда на сдк<21 будет 10 и менее процентов людей, то уже можно класть болт на них и спокойно разрабатывать со всеми плюшками материал дизайна и т.д.

Ответы>>883992

29 Ноя, 00:39 #432 #883992

>>883963
> К середине следующего года.
19, в лучшем случае. До 21 ещё года 1.5-2, как минимум.

Ответы>>884033

29 Ноя, 01:44 #433 #884033

>>883992
Ты тормоз. https://twitter.com/minSdkVersion

Ответы>>884136

29 Ноя, 11:18 #434 #884136

>>884033
при создании проекта пишет, что мин сдк 19 покрывает лишь 74% девайсов. Это очень мало, надо ориентироваться, чтоб не менее 90%. Так что это твиттер каких-то чуваков, которые слабо шарят в теме и от понта написали минсдк 19.

4721 Кб, Webm

29 Ноя, 11:31 #435 #884147

29 Ноя, 16:15 #436 #884257

Почему ведроидовская клавиатура такой треш? Тысячи костылей что бы просто определить что она открлась, и еще столько же что бы закрыть ее.

29 Ноя, 16:30 #437 #884263

>>883138
Как ты справляешься с android.os.TransactionTooLargeException? Или у тебя очень мало итемов?

29 Ноя, 16:36 #438 #884266

Есть ли какой-то годный сайт с примерами правильных архитектур под Android? Именно не паттерны и не прибитый гвоздями код, а пример как правильно создавать архитектуру андроид приложения?

Ответы>>884270

29 Ноя, 16:54 #439 #884270

>>884266
https://bitbucket.org/derekwilson/recommender-android/src/e585b3cac38cd6cdf5c9a0e60f4fc7fed1aaedbe/RecommenderAndroidStudio/app/src/main/java/net/derekwilson/recommender/?at=master

Ответы>>884284>>884300>>884578>>884703

29 Ноя, 17:24 #440 #884284

>>884270
Благодарю.

29 Ноя, 17:50 #441 #884300

>>884270
Какая же хуйня ваш package by type.

29 Ноя, 22:09 #442 #884519

Чем можно заменить ViewPager с кучей табов?
Для bottom navigation их слишком много.
Navigation drawer плох тем, что лишние движения пользователю нужно делать.
Выпадающее меню тоже не очень

Ответы>>884565

29 Ноя, 22:34 #443 #884544

анон, как програмно проверить, существует ли таблица в бд?

Ответы>>884567

29 Ноя, 23:05 #444 #884565

>>884519
Дать пизды дизайнеру за кучу табов, если не придумает ничего другого, оставить как есть.

Ответы>>884573

29 Ноя, 23:06 #445 #884567

>>884544
http://stackoverflow.com/questions/1601151/how-do-i-check-in-sqlite-whether-a-table-exists

29 Ноя, 23:13 #446 #884573

>>884565
Я и есть дизайнер, вот и пытаюсь придумать что-то получше.

29 Ноя, 23:18 #447 #884578

>>884270
мне стало хуёво, это нормально?

30 Ноя, 02:16 #448 #884692

Есть смысл переходить на rx 2?

Ответы>>884694>>884700

30 Ноя, 02:34 #449 #884694

>>884692
Есть.

30 Ноя, 03:17 #450 #884700

>>884692
Там же наллы не поддерживаются в observable-последовательностях, это просто пиздец.

Ответы>>884717>>884841>>884883

30 Ноя, 03:28 #451 #884703

>>884270

Поясните ньюфагу. Это троллинг? А то открыл пару файлов и там какой-то пиздец.

Ответы>>884713

30 Ноя, 04:12 #452 #884713

>>884703
пацан паттернами обмазался

30 Ноя, 04:20 #453 #884717

>>884700
Хорошо ведь. Еще маленький шажок в сторону null safety

30 Ноя, 11:38 #454 #884841

>>884700
Наоборот хорошо, а то я всегда filter на null делаю

30 Ноя, 13:08 #455 #884883

>>884700
Maybe зачем сделан ?

30 Ноя, 15:27 #456 #885018

Уважаемые бродяги, обратите пожалуйста внимание:
https://2ch.hk/pr/res/884999.html (М)
Если новый тред зря создал не обоссывайте, обсудим здесь.

30 Ноя, 20:08 #457 #885203

Аноны, у меня есть CollapsingToolbarLayout, и я хочу чтобы он скролился вместе с recyclerview, т.е. когда я резко поднимаю список наверх, CollapsingToolbarLayout раскрывался, по дефолту же recyclerview доходит до начала и всё, дальше надо опять тянуть, чтобы раскрылся сам CollapsingToolbarLayout. Например, в приложении вк на странице юзера работает, как мне надо, но у них дохуя своих кастомных вьюх.

Ответы>>885397

248 Кб, 1956x778

203 Кб, 1454x820

30 Ноя, 20:50 #458 #885237

Взял я вот StorIO погонять, все очень мило и няшно, но блять, очень много нужно писать руками, предлагаемые генераторы разве что для селекта годятся, и то получается SELECT *.... А если самому хуярить, да хоть простенький джойн, то получается куча пиздецового, мусорного кода пикрелейтед. Я делаю что-то не так?

Ответы>>885241>>885272>>885564

30 Ноя, 21:06 #459 #885241

>>885237
Ну да, это не орм вообще то

30 Ноя, 22:10 #460 #885272

>>885237
ДЕАНОН ПО ТАБЛИЦАМ БД

Ответы>>885285

30 Ноя, 22:31 #461 #885285

>>885272
О нит, ну пажалуста нинада :(

01 Дек, 01:01 #462 #885344

Блять, SQLDroid это просто пиздос в вакууме. Пиздец на пиздеце и пиздецом погоняет.
Сначала это поломанное говно не закрывает подлючения к бд, а теперь выдает при обработке ResultSet с длиной в 1 элемент:

Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

Хоть сам садись и пиши драйвер.

Ответы>>885350>>885352>>885361

01 Дек, 01:04 #463 #885346

Как сделать, чтобы в текстЕдите выпадал список с подсказками? Или хотя бы как это гуглить?

Ответы>>885389

01 Дек, 01:07 #464 #885350

>>885344
Пичот епта! Ну почему ебучие гугломакаки прибили гвоздями свой несовместимый с другими платформмами ебучий велосипед, а не православный JDBC, с которым можно иметь один код на несколько проектов?

Ответы>>885363

01 Дек, 01:09 #465 #885352

>>885344
Cursor.next() вызови, дурной. И научись читать исключения.

Ответы>>885354>>885363

01 Дек, 01:11 #466 #885354

>>885352
Ебать дебил. Откуда я тебе его вызову, если мой код под JDBC? Это должен вызывать драйвер.

Ответы>>885357

01 Дек, 01:15 #467 #885357

>>885354
Пиздец ты тупой.

01 Дек, 01:19 #468 #885361

>>885344
>православный JDBC
https://github.com/SQLDroid/SQLDroid

Ответы>>885381

sage 01 Дек, 01:20 #469 #885363

>>885350
>>885352
>2016
>JDBC
>Cursor
Прогирал с вас обоих. Первое, что нужно делать на такой легасне - решать: StorIO, ormlite или realm.

Ответы>>885382

01 Дек, 01:43 #470 #885381

>>885361
Выглядит интересно. Но в storIO, например, я так и не понял, как запилить аналог SELECT EXISTS(SELECT бла бла).
+ Опять же, не вычленить пересечения из таблиц. И нет, вытаскивать содержимое каждой и сравнивать ручками не вариант, если таблицы большие - оперативка от этого лопнет нахуй.

Ответы>>885382>>885581

01 Дек, 01:43 #471 #885382

>>885381
>>885363

sage 01 Дек, 01:56 #472 #885389

>>885346
https://developer.android.com/guide/topics/ui/controls/text.html#AutoComplete

01 Дек, 02:16 #473 #885397

>>885203
Бампну

Ответы>>885518

01 Дек, 07:44 #474 #885518

>>885397
Это известная проблема. Только собственные костыли в координаторе с рассчетом оставшейся инерции и псевдоскроллом.

01 Дек, 10:39 #475 #885564

>>885237
бери greendao, топ по скорости, да и с третьей версии очень удобный ( на JPA/Hibernate чем-то смахивает )

Ответы>>885606

01 Дек, 11:20 #476 #885581

>>885381
>Опять же, не вычленить пересечения из таблиц.
Берешь rawquery и хуярить intersect или что ты там хочешь. Или если не запрос то просто executeSql.

01 Дек, 12:34 #477 #885606

>>885564
>greendao
А на обычной JDK оно работает?
Смогу я тесты писать запускающиеся на десктопе?

Ответы>>885627

01 Дек, 13:26 #478 #885627

>>885606
Черт знает, наврядли. Я тестил с использование robolectrics + mockito. И то баговало, но зачем там тесты ? Он простой, ошибки только при тотальном незнании SQL будут

Ответы>>885631

01 Дек, 13:29 #479 #885628

Такой вопрос, если публиковаться на хабре, и показывать себя там хорошо, есть ли шанс что обратят внимание и пригласят ?

Ответы>>885639

01 Дек, 13:33 #480 #885631

>>885627
Поддержки LibGDX / RoboVM / Intel MOE я так понимаю можно вообще не жать
те кроссплатформу на нем напишешь.

Вот и приходится на OrmLite сидеть тк он поддерживает JDBC

Ответы>>885804

01 Дек, 13:46 #481 #885639

>>885628
Ты всегда проблемы через анус решаешь?

Ответы>>885651

01 Дек, 14:08 #482 #885651

>>885639
Да, я же разрабатываю на андроид.

01 Дек, 14:30 #483 #885670

Какие бест практисес показа кучи инфы (более 10000 итемов) в списках, кроме курсора. А то наверное памяти будет плохо.

Ответы>>885672>>885675>>885679>>885805

01 Дек, 14:35 #484 #885672

>>885670
Поправка насколько мне известно сейчас такой функционал предлагают Cursor и Realm. Курсор не нравится тем что для разнотипных вьюшек выглядит довольно печально.

01 Дек, 14:36 #485 #885675

>>885670
Зависит от размера класса. Может к тебя там тупо две координаты тогда ты блять заебал уже, ты когда-нибудь уже доделаешь свой проект?, то пусть по 24 байта на объект, всего то 240кб, битмапы больше жрут.

01 Дек, 14:39 #486 #885679

>>885670
Ты меня с кем-то путаешь, наверное.

01 Дек, 15:17 #487 #885697

Все бля, говно это, а не вопрос был, по алокейшен трекеру мои объекты модели занимают хуй да нихуя по сравнению со всей остальной хуйней.

01 Дек, 15:57 #488 #885727

Какое приложение нужно иметь в портфолио, чтобы взяли джуном? Покажите несколько примеров, кто недавно устраивался.

Ответы>>885802>>885803>>885889

01 Дек, 17:48 #489 #885802

>>885727
>Какое приложение нужно иметь в портфолио, чтобы взяли джуном?
Хелло ворлд

01 Дек, 17:50 #490 #885803

>>885727
Клиент для двача.

01 Дек, 17:51 #491 #885804

>>885631
Ты ебанутый.

Ответы>>885858

01 Дек, 17:57 #492 #885805

>>885670
Пагинация же, лол, берешь и rxAdapter мутишь. Все решается в один стрим.

Ответы>>885806>>885818

01 Дек, 18:01 #493 #885806

>>885805
Что за RxAdaper и как он поможет в пагинации?

другой анон

Ответы>>885808

01 Дек, 18:02 #494 #885808

>>885806
Свой кастомный RxAdapter. Как он поможет в пагинации ? Он будет под нее заточен ^_^

01 Дек, 18:17 #495 #885818

>>885805
Так когда он в верх прокрутит в памяти будет куча итемов, я же этого опасался.

Ответы>>885827

01 Дек, 18:33 #496 #885827

>>885818
У тебя не будет 10к вьюх в памяти, а итемы весят копейки

Ответы>>885927

sage 01 Дек, 19:49 #497 #885858

>>885804 спасибо нам очень важно ваше мнение

01 Дек, 20:06 #498 #885865

Есть ли в GoogleSheets кеширования?
Безопасно ли модифицировать таблицу нескольким пользователям одновременно?

01 Дек, 20:36 #499 #885889

>>885727
Больше интересно: сколько экранов в приложении на джуна должно быть, либо какой специфический функционал?

01 Дек, 21:16 #500 #885916

ПЕРЕКАТ https://2ch.hk/pr/res/885914.html (М)

ПЕРЕКАТ https://2ch.hk/pr/res/885914.html (М)

ПЕРЕКАТОВИЧ https://2ch.hk/pr/res/885914.html (М)

01 Дек, 21:45 #501 #885927

>>885827
Ну я за итемы и переживал.

Тред утонул или удален.
Это копия, сохраненная 19 декабря 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion