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

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

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

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

14 Кб, 604x453

Разработка под Android тред №19 # OP 14 Май, 16:31 #743301 В конец треда | Веб

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

Предыдущий тред тут:
https://2ch.hk/pr/res/726626.html (М)

Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом.

А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный. Куплено Microsoft. Теперь есть бесплатная версия.
5) BugVM (RIP RoboVM) - идейный наследник ксамарина, а теперь уже и его часть но на Java. Учитывая что Microsoft убила RoboVM, встречаем опенсорсный BugVM.

Отдельного упоминания стоят:
1) Kotlin - Java от JetBrains, новый и стильный язык, куча синтаксического сахара прилагается, есть стримы и делегаты. Хотите писать на котлине? Добро пожаловать в JetBrains и Avito.

Где брать инфу:
Интернет-ресурсы
1) http://developer.android.com/index.html
Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта.
2) http://stackoverflow.com/
Пользуюсь чаще чем первым сайтом. Можно найти практически все.
3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.

Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development - в отличии от остальных книг она обновляется, а так как ведро не стоит на месте а хуярит семимильными шагами, то я бы и не советовал другие книги.

А теперь, так как заебали уже всех, гайд для:
>"Я хуярил на делфи 5 лет назад а теперь хочу вкатится в андроид":

Чтоб быстро хоть как-то вникнуть в джаву берешь и гуглишь javarush или codingbat.com.
Можно Эккеля "Философия java" почитать.
Или Хорстманн "Java. Библиотека профессионала" до 7 главы.

Что тебе нужно понять в самой жабе.
Энтри лвл.
1) ООП - сам принцип нужно именно понять, так как ооп язык.
2) Типы данных. Примитивы и ссылочные.
3) Структуры данных - Массивы/коллекции - без них никуда. Полезно почитать про алгоритмы работы коллекций и их сложности.
4) Дженерик типы, они как раз юзаются в коллекциях.
5) Классы/интерфейсы и все вытекающие.
Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.

Дальше
6) Потоки ввода/вывода (streams). Не путать с тредами(threads).
7) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable.
8) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной.
Уже сделаешь что-то нормальное.

Дальше.
9) Работа с Sqlite, нужна будет в любом случае.
10) Работа с json.
Привет клиент-серверка.

Пишите в треде что добавить.

Ответы>>743315>>743349>>743458>>743562>>745738>>746398>>749200>>750611>>750615

14 Май, 16:34 #2 #743306

Пик нравился больше на прошлом треде :)

Ответы>>743307

14 Май, 16:35 #3 #743307

>>743306
Мне тоже, но у меня плохо получается находить такие.

14 Май, 16:39 #4 #743313

>>743290
Спасибо, посмотрел. Я 19+, а NEW_DOCUMENT флаг 21+, вроде оно почти то же самое, что NEW_TASK.

14 Май, 16:39 #5 #743315

>>743301 (OP)
Хватит плодить говнокодеров.
Добавь про принципы SOLID, MVP, MVC, MVVN паттерны а также книгу Блоха Effective Java.

Ответы>>743319>>743329>>743336

14 Май, 16:40 #6 #743319

>>743315
Как будто шапку кто-то читает.

Ответы>>743322

14 Май, 16:40 #7 #743322

>>743319
Не поверишь, читаем :D

60 Кб, 459x497

14 Май, 16:45 #8 #743329

>>743315
> Android 2016
> книгу Блоха Effective Java
> Java

Ответы>>743331>>743332

14 Май, 16:46 #9 #743331

>>743329
https://www.youtube.com/watch?v=dJ-NA86bYQ4

14 Май, 16:46 #10 #743332

>>743329
Отсоси

14 Май, 16:48 #11 #743336

>>743315
>Хватит плодить говнокодеров.
Ты так говоришь будто бы от меня или тебя что-то зависит. Я все время натыкаюсь на пликухи где у апликейшн класса или активити пишется паблик статик метод гетКонтекст и потом юзается внутри разных модулей.

>SOLID, MVP, MVC, MVVN
Как-то ты немного хуево приоритеты расствил.
Солид еще ладно, но это как мантра.
>MVP, MVC, MVVN
Сейчас в каждой второй статье этого говна навалом.

>книгу Блоха Effective Java
Давай тогда еще паттерны Gof, и еще кучу всего из мира программирования.

Ответы>>743342>>743345>>743347

14 Май, 16:51 #12 #743342

>>743336
> где у апликейшн класса пишется паблик статик метод гетКонтекст
И как же по другому получить контекст приложения из статик мест? Можно конечно сделать ехал синглтон через синглтон с DI, но я на это дохуя времени потрачу.

Ответы>>743351>>743372

14 Май, 16:52 #13 #743345

>>743336
> у апликейшн класса пишется паблик статик метод гетКонтекс
Ничего плохого в этом нет, в iOS такое метод есть по умолчанию (UIApplication.sharedApplication)

Ответы>>743357

14 Май, 16:52 #14 #743347

>>743336
Не надо у быдлоты ложное впечатление простоты программирования, и андроид разработки в частности создавать. Пишем все сюда, и GOF, и Java Concurrency in practice. Также можно добавить Макконелла, т-ща Фаулера. А то потом это говно начитается стартандроида, насоздает за полгода неподдерживаемое говно и тебе на новом месте работы приходится его расхлебывать.

Ответы>>743369

14 Май, 16:54 #15 #743349

>>743301 (OP)
Про фрагменты писать в ходе современных дискуссий аж в самой шапке моветон
https://corner.squareup.com/2014/10/advocating-against-android-fragments.html

Ответы>>743355

14 Май, 16:55 #16 #743351

>>743342
Но ты же понимаешь что это говноподход?

Ответы>>743354>>743358

14 Май, 16:56 #17 #743354

>>743351
Щито поделать, меня ебут по срокам, а не по качеству.

Ответы>>743366

14 Май, 16:56 #18 #743355

>>743349
Возвращаясь к теме меня-мудака и кучи фаргментов, после баттернайфа стало получше, спасибо. Что еще можно сделать и нужно ли юзать Glide.clear(%imageViewName%); в onDestroyView ?

14 Май, 16:56 #19 #743357

>>743345
В жопу, покажи мне хоть одно адекватное приложение с таким подходом. Почему гуглы пилять передачу контекста аргументами, а ты такой дохуя умный решил пиздануть статик переменной?

Ответы>>743367>>743371>>743377

14 Май, 16:57 #20 #743358

>>743351
Если пофилософствовать то в этом говне Google виноваты в частности, нахера было God Object создавать такой. После частичного изучения IOS возникло впечатление, что там меньше индусов к Api подпускали.

14 Май, 16:59 #21 #743366

>>743354
Шли в жопу свою работу если так дела обстоят

14 Май, 16:59 #22 #743367

>>743357
Ты не маняврируй, а факты давай почему нельзя использовать.

Ответы>>743375

14 Май, 16:59 #23 #743369

>>743347
>тебе на новом месте работы приходится его расхлебывать.
Так всегда, правда я и в своем коде не уверен. Но пытаюсь писать без брейнфака.
>Java Concurrency in practice
Ну это ты уже тралишь. Явно лишнее. Хотя может понадобится на каких-то своих йобавелосипедах. Но тогда еще и литературу по с++ добавить можно.

Ответы>>743389

14 Май, 17:01 #24 #743371

>>743357
Гугловцы и провайдеры и async-таски используют и на java пишут,
но мы то знаем что это параша.

Ответы>>743375

14 Май, 17:01 #25 #743372

>>743342
>И как же по другому получить контекст приложения из статик мест?
Я тебе уже отписал на сообщение, но потом понял что меня смутило, каких нахуй статик мест? Я даже не помню чтоб у меня такие были. Статик методы только для генерации статик данных и всяких фабрик использую, ну еще всякие утилсы.

14 Май, 17:02 #26 #743375

>>743367
Потому что ты говно пишешь, которое работает только из-за того что аппликейшн класс это синглтон.

>>743371
Не такая параша как статический гетконтекст.

Ответы>>743379

14 Май, 17:03 #27 #743377

>>743357
> покажи мне хоть одно адекватное приложение с таким подходом
Ой, нашел.
https://github.com/DrKLO/Telegram/blob/06473773a6f415c23fbd93d51996393b7e3ea626/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java
> public static volatile Context applicationContext;

Ответы>>743380>>743383

14 Май, 17:03 #28 #743379

>>743375
> Ты не маняврируй, а факты давай почему нельзя использовать.

Ответы>>743381

14 Май, 17:04 #29 #743380

>>743377
телеграм - не адекватное приложение

14 Май, 17:04 #30 #743381

>>743379
Вопрос из разряда почему нельзя называть переменные с большой буквы.

Ответы>>743386>>743396

14 Май, 17:04 #31 #743383

>>743377
Будь тоньше.
А если ты и вправду думаешь что это хороший пример, то самое время вытаскивать голову из жопы.

14 Май, 17:05 #32 #743386

>>743381
На вопрос отвечай.

Ответы>>743388

14 Май, 17:06 #33 #743388

>>743386
Уже ответил два поста придурок.

14 Май, 17:06 #34 #743389

>>743369
Хотя бы базовые принципы должны все знать, что такое mutex, синхронизация. Типы ссылок (сильные, слабые, атомик...). Синхронайзд методы, эксекуторы. Это все на практике не раз мной использовалось. На одних асинк тасках и интент сервисах без знания основ далеко не уедешь.

Ответы>>743398

1758 Кб, 331x197

14 Май, 17:09 #35 #743396

>>743381
> Вопрос из разряда почему нельзя называть переменные с большой буквы.
Значит ты признаешь себя безпруфным-кукаретиком,
который "где-то что-то слышал", но так и не понял почему?

другой-анон

Ответы>>743403

14 Май, 17:09 #36 #743398

>>743389
Ну хуй знает, тот же атомик сам по себе костыль. В джаве во всяком случае.
А так из перечисленного это основы, а в книге вангую начинабтся семафоры и пошло поехало.

Для обычных апликух я даже хз зачем это юзать.

Ответы>>743401>>743405

14 Май, 17:10 #37 #743400

Да, к слову, какие моменты помимо работы с битмапами через Glide могут заметно сократить использование оперативки ?

14 Май, 17:12 #38 #743401

>>743398
А потом 95% херачат в коде handler в виде анонимного внутреннего класса. Чем хуево это, думаю не стоит объяснять?

Ответы>>743418>>743420

14 Май, 17:12 #39 #743403

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

Ответы>>743430>>743954

14 Май, 17:13 #40 #743405

>>743398
Atomic не костыль а вполне себе употребимая вещь в определенных ситуациях http://stackoverflow.com/questions/3964211/when-to-use-atomicreference-in-java

Ответы>>743426

14 Май, 17:15 #41 #743409

Кстати говнокодерство прогера конкретного прямо пропорционально количеству AsyncTask использованных в коде приложения

Ответы>>743957

14 Май, 17:19 #42 #743418

>>743401
правильное использование Bitmap, в том числе не использование оперативки для размещения изображения. Использование библиотеки андроида, там почти всё есть. В крайнем случае можно на c++ вынести обработку, нативная память не учитывается

14 Май, 17:20 #43 #743420

>>743401
Ты про андроид хендлер сейчас?

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

Ответы>>743433

14 Май, 17:22 #44 #743426

>>743405
Понял, но я вообще говорил о атомиинтеджерах и тд.

14 Май, 17:26 #45 #743430

>>743403
> Но с таким успехом можно педалить методы и в активити
Во первых, хули ты сваливаешь все в один котел, мы с тобой говорим конкретно про Application.

> без самого экземпляра класса не существует неправильно?
Во вторых ты видимо не вкурсе, что
1) На все приложение есть только ОДИН экземпляр Application
2) Он создается один раз и не разрушается никогда (на него есть статические ссылки даже внутри Android)
3) Его метод onCreate(...) вызывается ВСЕГДА до создания любых активитей/провайдеров/ресиверов

Ответы>>743434>>743436

14 Май, 17:30 #46 #743433

>>743420
Про них.
Любой внутренний не статик класс содержит неявную ссылку на внешний класс. В результате получаются мемори лики. Кстати любители ещё часто асинхронный таски хуячить в виде анонимных внутренних классов любят

Ответы>>743439

14 Май, 17:30 #47 #743434

>>743430
Ты такой долбоеб что мне даже впадло тебе что-то писать.

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

Но также можно делать с активити, один в один, если юзать геттер в элементах которые отвечают только этому активити(мы так и делаем когда передаем его через конструктор но нахуй это нам, у нас же есть статик геттеры)

Ответы>>743446

14 Май, 17:32 #48 #743436

>>743430
Не пизди друг. Если у тебя в приложении например активити создаётся в отдельном процессе, то для неё отдельный новый экземпляр аппликейшена создаётся. Соответственно правильнее говорить создаётся один аппликейшена для каждого процесса. Нубье суда, ещё и пальцы гнет.

Ответы>>743441>>743448

14 Май, 17:34 #49 #743439

>>743433
Ну я об этом написал
>Ты про то что будет ссылка на парент класс?

Получается иннер класс и внешний держат ссылки на друг друга и всегда висят в памяти?

Ответы>>743449

14 Май, 17:34 #50 #743441

>>743436
>Если у тебя в приложении например активити создаётся в отдельном процессе
Ой блять ты как собрался ссылками между процессами обмениваться?
Нахуй ты это вообще сюда приплел?

Ответы>>743443>>743445

14 Май, 17:35 #51 #743443

>>743441
Кого ебет, суть в том что это говно не работает.

14 Май, 17:36 #52 #743445

>>743441
Хуйню потому что написал. С процессами видно не работал, приложения визитки одни делал.

Ответы>>743450

14 Май, 17:36 #53 #743446

>>743434
Плиз хватит маневрировать и просто ответь на вопрос:

"Что конкретно плохого в использование статической ссылки на Application?

Ответы>>743448

14 Май, 17:39 #54 #743448

>>743446
>>743436

Ответы>>743452

14 Май, 17:39 #55 #743449

>>743439
Читай тут http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html

Ответы>>744066

14 Май, 17:40 #56 #743450

>>743445
Чини детектор, я делал приложения с несколькими процессами и знаю как это работает.
Так что ты меня на понт не возьмешь ;)

Еще раз, к чему ты приплел процессы?
Какая нахуй разница, сколько процессов если мне нужно допустим получить путь на локальный-кэш-каталог?

Ответы>>743454

14 Май, 17:42 #57 #743452

>>743448
И что?

Это ДВА РАЗНЫХ ПРОЦЕССА, они располагаются В РАЗНОЙ памяти.
Формально У КАЖДОГО процесса, есть только ОДИН экземпляр Application.

14 Май, 17:45 #58 #743454

>>743450
Эту Хуйню потому что написал:

"Во вторых ты видимо не вкурсе, что
1) На все приложение есть только ОДИН экземпляр Application"

Ответы>>743955

14 Май, 17:46 #59 #743455

Писал бы сразу про процесс а не приложение. Тут нубские читают а ты их в заблуждение вводишь

Ответы>>743457>>743480

14 Май, 17:47 #60 #743457

>>743455
>The Application class, or your subclass of the Application class, is instantiated before any other class when the process for your application/package is created.

776 Кб, 1510x1600

14 Май, 17:48 #61 #743458

>>743301 (OP)
Kotlin Koans - набор тестов для обучения
https://kotlinlang.org/docs/tutorials/koans.html (также есть плагин для Idea)

Вот сравнение одного и того кода для Android на 4 языках (да АНОН сейчас есть выбор)
https://github.com/SidneyXu/AndroidDemoIn4Languages

Вот видосики на youtube (под попкорн)
https://www.youtube.com/playlist?list=PLVe-2wcL84b8pj7VOoa-6L9Q0sDjibdoF

Ответы>>743460>>743481

14 Май, 17:49 #62 #743460

>>743458
Объясни людям почему нельзя тулить статик геттер в апликейшене.

Ответы>>743555

14 Май, 18:05 #63 #743478

Вот вам развернутый обзор почему делать статик ссылку на апликейшн контекст - удел говноделов. Правда в очень мягкой форме.
http://www.philosophicalhacker.com/2015/07/14/why-static-references-to-application-contexts-are-probably-not-the-best-idea/

Ответы>>743490

14 Май, 18:05 #64 #743480

>>743455
Они до тебя знать не знали, что приложение в Android может работать в нескольких процессах.

Ответы>>743483

164 Кб, 1024x819

14 Май, 18:08 #65 #743481

>>743458
Ой, кто-то сохранил мой пост. Держись товарищ, наше дело правое :)

14 Май, 18:09 #66 #743483

>>743480
То что кто-то не может во второй абзац в доке, их проблемы, нет? Но суть не поменялась, новый процесс запускает новый аппликейшн.

14 Май, 18:16 #67 #743490

>>743478
Всю статью можно свести к одной фразе: "Статическая ссылка на Application мешает Unit-тестированию".
Удивительно что ты сам не мог это сформулировать (может ты не пишешь тесты).

Ну и автор подтвердил что утечки памяти в таком случае это миф.

Ответы>>743494

14 Май, 18:17 #68 #743491

Анон, есть свободное время на работе, хочу вкатиться. Поставил студию, а прав для авд не хватает. Что делать? Как проверять свои хеллаворды?

Ответы>>743521

14 Май, 18:19 #69 #743494

>>743490
Никто и не говорил про утечки памяти.

И ты не понял сути, юнит тесты как следствие забивание хуи на принципы программирования - говнокод.

И нет, тесты я не пишу.

14 Май, 18:30 #70 #743512

Хочу попытаться сделать ровное МВП, куда смотреть? Хотел бы уже посмотреть примеры с RX и даггером по возможности.
Пока буду юзать джаву, как разберусь может и котлин испытаю.

14 Май, 18:38 #71 #743521

>>743491
Там в настройках нужно в бубен побить - дебаг мод включится. Вниз, вперед, вниз, вперед, a попробуй.

Ответы>>743679

14 Май, 19:12 #72 #743549

А из-за чего могут быть утечки памяти в RecyclerView ?

Ответы>>743560

14 Май, 19:14 #73 #743555

>>743460
А почему у тебя это вызывает такую трудность? Что ты пробовал и в чем возник "затор неосиляторства"?

Ответы>>743558

14 Май, 19:19 #74 #743558

>>743555
Как объяснить людям что так делать не правильно, когда они кричат "но работает же"?

Ответы>>743565

14 Май, 19:19 #75 #743560

>>743549
Если есть иннер классы делай все статиками.

Ответы>>743564>>743566

14 Май, 19:20 #76 #743562

>>743301 (OP)
> Пишите в треде что добавить.
Android Game Development
http://docs.unity3d.com/ru/current/Manual/android-GettingStarted.html
https://docs.unrealengine.com/latest/INT/Platforms/Android/index.html

Ответы>>743580

14 Май, 19:20 #77 #743564

>>743560
Все - в смысле ?

Ответы>>743568

14 Май, 19:20 #78 #743565

>>743558
> но работает же
Работает? Не трогай!

Ответы>>743573

14 Май, 19:21 #79 #743566

>>743560
Двачую этого чистюлю

14 Май, 19:23 #80 #743568

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

14 Май, 19:25 #81 #743573

>>743565
Но это говнокод!
Просто я, учивжий жабу и прогу в целом, увидев такой подход внутри себя почувствовал негодования, я никогда не говорил что это не работает. Но я всегда буду говорить что это неправильно.

Ответы>>743592

14 Май, 19:26 #82 #743576

Господа, а есть тут желающие занять типовой разработкой приложения для доставки?

Ответы>>743578>>743611

14 Май, 19:28 #83 #743578

>>743576
>типовой разработкой
Чего?

Ответы>>743617

14 Май, 19:29 #84 #743580

>>743562
Если честно я сомневаюсь что это кому-то тут нужно.

Ответы>>743618

14 Май, 19:36 #85 #743583

А есть ли у кого-то простой пример с flow заместо фрагментов ?

14 Май, 19:45 #86 #743592

>>743573
> Но это говнокод!
Говно-код - это то что в огромных количествах генерируют джуны (без присмотра старших).
А уж точно не статик-геттер в Appication.

Ответы>>743596

14 Май, 19:48 #87 #743596

>>743592
Не знаю, но мне оно кажется вырвиглазным дерьмом.
Также можно делать статик ссылки на шаред преференсы и тд через апликейшн.

14 Май, 20:06 #88 #743611

>>743576
Сроки?

14 Май, 20:10 #89 #743617

>>743578
зубного порошка спайса

Ответы>>743619

14 Май, 20:11 #90 #743618

>>743580
Не Якай

Ответы>>743619

14 Май, 20:12 #91 #743619

>>743618
>>743617
Тролленок в треде.

14 Май, 21:20 #92 #743679

>>743521
А можно как-то сделать так, чтобы я кидал апк на свой кирпич, запускал его и видел, из-за какой строки оно крашится и текст ошибки?

Ответы>>743693>>743715

14 Май, 21:34 #93 #743693

>>743679
Используй LogCat.
Если хочешь чтобы без проводов - fabric.io

Ответы>>743715>>743731

14 Май, 21:56 #94 #743715

>>743693
>>743679
Я не сильно понял реквест, но дебажитьи по вайфаю можно, с фабриком это уже немного другое.

14 Май, 21:59 #95 #743720

Решил заюзать в одной активити RecyclerView просто потому что адаптер для него пишется несколько приятнее, чем для обычного списка. Но вдруг оказалось, что его производительность при скролле весьма хуевая.
Поискал в гугле - нашел, что нужно поставить adapter.hasStableIds(true) - действительно, теперь Recycler скроллится очень плавно, но зато глючит просто пиздец как.
К примеру notifyItemChanged приводит к удалению элемента списка.
В списке из 50 разных элементов отображаются только 2 и они чередуются.

Откатываться к обычному списку или есть решения?

Ответы>>743724

14 Май, 22:03 #96 #743724

>>743720
>Но вдруг оказалось, что его производительность при скролле весьма хуевая.
Ох помню спорили в скайпе что наоборот он производительнее.

Если честно я и сам не замечал хуевость работы ресайклервью, у тебя елементы убер тяжелые или что?

Ответы>>743725

14 Май, 22:06 #97 #743725

>>743724
CardView внутри которого ImageView, linear layout из 10 TextView.
При скролле неприятно тормозит, причем так, как будто сборщик мусора охуевает.
Переделаю завтра на обычный список - скорее всего тормозить не будет.

Ответы>>743730

14 Май, 22:11 #98 #743730

>>743725
Покажи код адаптера.

Ответы>>743742

14 Май, 22:11 #99 #743731

>>743693
Точно, нагуглил, что стактрейс можно засунут ьв логкат, а логкат сохранить! Не знал об этом раньше.
А можешь рассказать про фабрик.ио, я что-то гуглил, так и не понял, что это?

Ответы>>743734

14 Май, 22:21 #100 #743734

>>743731
fabric.io - когда выпустишь приложение, эта штука будет собирать багрепорты в фоне. Причем такие же подробные как и LogCat.

Ответы>>743736

14 Май, 22:26 #101 #743736

>>743734
>выпустишь
В смысле, через гугл плей или просто когда залью его в этот фабрик?
Я хотел отслеживать краши до релиза. Добавил метод, пожмакал его, добавил другой метод, пожмакал.
Я так понял, залитые туда приложения не приватные и доступны всем? Приватность вроде за деньги или я не понял?

Ответы>>743739

14 Май, 22:27 #102 #743739

>>743736
fabric.io - это всего лишь программный модуль, который ты можешь вставить в свое приложение, чтобы получать информацию о крашах.

Ответы>>744279

14 Май, 22:36 #103 #743742

>>743730
https://gist.github.com/anonymous/ab5fd5cc36954b5e03c85ad7b95f0ccb

Ответы>>743751

14 Май, 22:47 #104 #743751

>>743742
> инфлейты в onBindViewHolder
Это же пиздец, разве нет?
Я бы на твоем месте запихнул в айтем ресайклервью, но с wrap_content по высоте. Он хотя бы сможет переиспользовать вьюхи песен в рамках одного вьюхолдера, а не в каждом бинде их инфлейтить.
Ну и вместо setVisibility сделал бы viewTyp'ы.

Ответы>>743759>>743764

14 Май, 22:51 #105 #743759

>>743751
А теперь пожалуйста на человеческом языке, еще раз и помедленней.

Ответы>>743765

14 Май, 22:55 #106 #743764

>>743751
>запихнул в айтем ресайклервью
Не будет проблем со скроллированием внешнего RecyclrView?

Ответы>>743765

14 Май, 22:57 #107 #743765

>>743759
Твоя реализация будет и на обычном ListView лагать, вот че.
Не делай инфлеты, вставь recyclerView прямо в элемент списка. Его адаптер будет на каждом бинде переиспользовать свои вьюхи.
setVisibility(GONE) вызывают перерасчет разметки элемента списка, что тоже будет затормаживать скролл. Вместо него используй разные viewType и разные вьюхолдеры.
>>743764
1. RecyclerView работает через NestedScrollView, а у него проблем с вложенностью нет.
2. У него же wrap_content, там скролла не будет, он займет всю высоту своих элементов.

Ответы>>743767>>743782>>743793>>743840>>743966

14 Май, 22:59 #108 #743767

>>743765
Ага, спасибо. Завтра сделаю - отпишусь.

14 Май, 23:11 #109 #743782

>>743765
Спасибо, гуру!

14 Май, 23:31 #110 #743793

>>743765
>setVisibility(GONE) вызывают перерасчет разметки элемента списка, что тоже будет затормаживать скролл.
Тут поподробнее.
Это как-то тупо делать две разных вью если мне допустим нужно добавить убирать какую-то мелочь. Тогда вьютайпов будет дохуя.
Да и у него рейсайклервью внезапно тоже должен вызывать перерасчет элемента списка.

>2. У него же wrap_content, там скролла не будет, он займет всю высоту своих элементов.
Вспомнил что не так давно это не работало из коробки и взлольнул.

Ответы>>743800

14 Май, 23:45 #111 #743800

>>743793
> Вспомнил что не так давно это не работало из коробки и взлольнул.
Но теперь то работает!
> Да и у него рейсайклервью внезапно тоже должен вызывать перерасчет элемента списка
А, ну да. А еще чет я загнул с визибилити, ведь несколько реквест лейаутов скомпануются через isLayoutRequested и отработают один раз.

Ответы>>743803

14 Май, 23:49 #112 #743803

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

15 Май, 01:14 #113 #743840

>>743765
Всм, а как без инфлейтов то туда итемы накидать ?

Ответы>>743848

15 Май, 01:23 #114 #743848

>>743840
Сказали же юзай ресайклервью.

Ответы>>743852

15 Май, 01:26 #115 #743852

>>743848
В адаптере как итемы добавлять то ?

Ответы>>743856

15 Май, 01:30 #116 #743856

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

Ответы>>743862

15 Май, 01:38 #117 #743862

>>743856
Это же костыль, не ? Не проще ли просто сделать проверку на то, уже был заинфлейчен или нет лэйаут ?

Ответы>>743863

15 Май, 01:40 #118 #743863

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

Ответы>>743864

15 Май, 01:42 #119 #743864

>>743863
Но не ресайклервью в ресайклервью то блин, ужасно даже звучит

Ответы>>743866

15 Май, 01:43 #120 #743866

>>743864
Просто мозгами пошевели в чем суть листов.
Ты предлагаешь эмуляцию их работы писать руками.

19 Кб, 659x60

18 Кб, 542x88

15 Май, 08:04 #121 #743908

Пишет анон, который задавал вопросы про геолокацию в бэкграунде. Дописал самый простой сервис, который запрашивает LocationUpdate. Стал прописывать имя в манифесте, само имя класса MyService.kt.
Вопрос по 2-му скрину.
Вот код
http://ideone.com/rkImys

Ответы>>743937

15 Май, 08:07 #122 #743909

ОП, ТЫ В ГЛАЗА ДОЛБИШЬСЯ? ЕСТЬ КОНФА В ТЕЛЕГРАМЕ, ПОЧЕМУ ДО СИХ ПОР ОНА НЕ В ШАПКЕ?
telegram.me/AndroidChan

Ответы>>743942>>743964>>744009

15 Май, 09:19 #123 #743937

>>743908
val intent = Intent(this, MyService::class.java)

P.S.
Советую убрать "abstract" перед "class MyService" иначе у тебя упадет при старте.

15 Май, 09:35 #124 #743942

>>743909
Она слишком унылая. Половина чата - треп о какой то хуйне.

Ответы>>743964

15 Май, 09:59 #125 #743954

>>743403
> Этот трюк работает только с апликейшн который синглтон.
Верно. Аппликейшен существует всегда во время работы приложения в единственном экземпляре. Так в чём проблема сделать его синглтоном?
> Но с таким успехом можно педалить методы и в активити, и вызывать из только внутри адаптеров на этих активити.
Типо ты приравнял два разных случая и это уже называется аргументом? Активити не всегда существует во время существования процесса, одной и той же активити может быть много, это потенциальная ошибка и новая условность в стиле "этот метод работает только когда существует активити, не вызывайте его в другое время, спасибо".

Ответы>>744013

15 Май, 10:01 #126 #743955

>>743454
Пиздец, нашёл, до чего доебаться.

15 Май, 10:07 #127 #743957

>>743409
Найс пердёж в лужу.

15 Май, 10:14 #128 #743964

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

15 Май, 10:17 #129 #743966

>>743765
> setVisibility(GONE) вызывают перерасчет разметки элемента списка, что тоже будет затормаживать скролл.
После getView вернее, его аналога в RV, я им не пользовался будет перерасчитываться разметка независимо от того, вызывал ты setVisibility или нет. Это очень быстрая операция, явно не туда смотреть нужно.

15 Май, 11:18 #130 #744009

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

15 Май, 11:22 #131 #744013

>>743954
>Активити не всегда существует во время существования процесса
Если юзать статик геттер для активити контекста в каком-то адаптере который заведомо в этой активити все будет работать.
>Так в чём проблема сделать его синглтоном?
В том что апликейшн тут сингл энтити. А синглтон создается при первом обращении, тут же апликейшн создается просто ДО первого вызова.

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

Ответы>>744037>>744042

15 Май, 11:51 #132 #744037

>>744013
> Если юзать статик геттер для активити контекста в каком-то адаптере который заведомо в этой активити все будет работать.
А если активити 2 штуки?
Ну и про эту условность я уже говорил.
> В том что апликейшн тут сингл энтити. А синглтон создается при первом обращении
Не обязательно. С точки зрения работы вм это так, но вообще синглтон не обязан быть ленивым.
> Я статью уже кидал, работать то оно работает, но это виляние жопой и говно по большому счету с точки зрения красоты кода.
В статье тоже просто мнение-по-поводу, а не весомые аргументы. Как и у тебя. Тебе не нравится — ок.

Вот такой тебе вопрос: а если у меня есть синглтон, который работает с ресурсами (строки и картинки достает, например) или с сервисами системными, как ты предлагаешь его инициализировать? Контекст в getInstance + ленивая инициализация? Ради одной красоты придётся терять другую.

Ответы>>744041

15 Май, 12:09 #133 #744041

>>744037
>А если активити 2 штуки?
>Ну и про эту условность я уже говорил.
Есть такой ньюанс, но опять же я сам видел что люди такое делают.

>Не обязательно. С точки зрения работы вм это так, но вообще синглтон не обязан быть ленивым.
Вот только это не совсем синглтон.

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

>Контекст в getInstance + ленивая инициализация? Ради одной красоты придётся терять другую.
Так и делал бы, андроид сдк сделан так что контекст будет откуда подтянуть.

Ответы>>744055

24 Кб, 532x421

15 Май, 12:09 #134 #744042

>>744013
> App.getShardInstance();
> (нарушение) красоты кода
Так и представляю:
Проект из over100 классов "джуниор-говно"-лапша-кода, а тебя ебет только статик геттер.

P.S.
Ребята вы уже заебали сратся на эту тему.

Ответы>>744045

15 Май, 12:13 #135 #744045

>>744042
Я вижу статики в апликейшене хуярят все ИТТ?

15 Май, 12:31 #136 #744055

>>744041
> Вот только это не совсем синглтон.
По сути — одно и то же. Лёгким добавлением 1 метода он превращается в псевдо-синглтон. Формально он был создан не как синглтон, но по своему функционированию он ничем не отличается.
> Там тебе прямым текстом написали что ломает инкапсуляцию. Это не мнение, но очевидный факт, и да инкапсуляция это не про работу программы, следовательно ее можно ломать?
Синглтоны тоже ломают икапсуляцию, получается?
> Так и делал бы, андроид сдк сделан так что контекст будет откуда подтянуть.
Факт в том, что для ленивой инициализации тебе придётся городить больше лишнего кода, вместо того, чтобы сделать всё просто и наслаждаться этим.

Ответы>>744060

15 Май, 12:42 #137 #744060

>>744055
>Синглтоны тоже ломают икапсуляцию, получается?
Синглтон так-то в какой0то мере антипатерн.

>Факт в том, что для ленивой инициализации тебе придётся городить больше лишнего кода, вместо того, чтобы сделать всё просто и наслаждаться этим.
Вся сложность будет в получении контекста на самом деле для гетинстанса(сейчас мы говорим про твой синглтон для доступа к ресурсам), но сам посмотри, если не тулить работу с ресурсами где попало читай классах отвязанных от андроид сдк, то даже кода особо больше не будет.

Ответы>>744062>>744182

15 Май, 12:46 #138 #744062

>>744060
Синглтону нередко требуется работать с андроид сдк, а тянуть до него контекст — лишний гемморой.
Хотя я изначально реализацию синглтона имел в виду со всеми даблчекедлоками.

15 Май, 12:49 #139 #744066

>>743449
Зачем делать WeakReference, когда можно просто сделать метод release(), вк отором обнулить всю хуйню, и вызвать его в onDestroy() активити, сервиса, фрагмента...

Ответы>>744070

15 Май, 12:54 #140 #744070

>>744066
>вызывать что-то в ондестрой
Ты псих?

Ответы>>744072>>744081

15 Май, 12:57 #141 #744072

>>744070
А что такого? Там же не сложная операция, а по сути одна строчка смысл которой сводится к:
mySuperHandler.activity = null; Это никак не сомжет навредить удалению, или я чего-то не выкупаю?

15 Май, 13:08 #142 #744081

>>744070
onDestory у активити не вызывается же только в одном случае, когда процесс полностью умирает. А если процесс умирает, то уже нечему утекать.

15 Май, 13:19 #143 #744092

Аноны в чем может быть проблема? http://pastebin.com/6MYsVhg4
Вот такая хуйня с картами, ничего не крашится, но они очень лагают.

15 Май, 15:11 #144 #744160

Возможно ли хранить sqlite базу на external storage, чтобы даже если пользователь удалить приложение и потом заново его установит можно было подгрузить из приложения эту базу, как будто ничего и не случилось?

Ответы>>744166>>744176

15 Май, 15:17 #145 #744166

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

Ответы>>744167>>744172

15 Май, 15:17 #146 #744167

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

15 Май, 15:19 #147 #744172

>>744166
> Сохранить можно куда угодно
Напоминаю про прекрасный андроид 4.4

Ответы>>744175

15 Май, 15:20 #148 #744175

>>744172
А что там? Признаю впадлу лезть в доку.

15 Май, 15:21 #149 #744176

>>744160
Анон лучше не надо, это решение из прошлого века, юзай Android Backup.

В Android 6.0 и выше придется каждый раз проверять что у тебя есть права на запись карты памяти и если их нет запрашивать явно у юзера.
И сейчас юзер может спокойно их НЕ дать или в любой момент забрать.

Ответы>>744186

63 Кб, 300x300

15 Май, 15:25 #150 #744182

>>744060
> Синглтон так-то в какой0то мере антипатерн.
ТЫ несёшь хуйню.

Ответы>>744188>>744569

15 Май, 15:26 #151 #744186

>>744176
У меня сейчас build target 22, все разрешения по умолчанию включены.
Проблема в том, что мне нужно хранить кучу всякой инфы, которая очень важна для пользователя.
И он сильно разочаруется, если после удаление и установки приложения эта инфа пропадёт.

Ответы>>744193>>744196

15 Май, 15:27 #152 #744188

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

Ответы>>744199

15 Май, 15:29 #153 #744193

>>744186
Почему вы сами это в облаке не храните?

Андроид бекап дали чисто для удобства, сохранять бд в экстернал сторейдж костыль.

15 Май, 15:29 #154 #744196

>>744186
> build target 22
Идиотское решение.

Ответы>>744198

15 Май, 15:30 #155 #744198

>>744196
Это почему еще?

Ответы>>744201>>744202

15 Май, 15:30 #156 #744199

>>744188
> может слова именитых программистов донесут до тебя правду и ты не будешь вылазить из под шконки со своими картинками
Ох, лол. Как я с тебя проиграл.
Как думаешь, кто изображен на моей картинке?

Ответы>>744204

15 Май, 15:31 #157 #744201

>>744198
Наверное потому, что актуальное API — 23 ?

Ответы>>744205

15 Май, 15:31 #158 #744202

>>744198
В настройках вроде как можно рубануть пермишн.

Ответы>>744210>>744233

15 Май, 15:32 #159 #744204

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

15 Май, 15:33 #160 #744205

>>744201
Что мне это даст?
Сейчас это приложение замечательно работает и на 4.3 и на 6.0.1.
Вырубать разрешения смысла нет.
Т.к. их всего два и без них приложение потеряет смысл.

15 Май, 15:36 #161 #744210

>>744202
Случайные пользователи - могут и рубануть, если вспомнят про такую функцию.
По факту - это абсолютно никому не нужно.

Ответы>>744211

15 Май, 15:38 #162 #744211

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

Под твои нужды нужно делать бекенд. Тем более почему тебе андроид бекап не нравится?

Ответы>>744213

15 Май, 15:39 #163 #744213

>>744211
Что есть Андроид Бекап?
По такому названию очень много программ есть.

Ответы>>744217

15 Май, 15:41 #164 #744217

>>744213
http://developer.android.com/intl/ru/guide/topics/data/backup.html

Ответы>>744219

15 Май, 15:43 #165 #744219

>>744217
Спасибо! Пойду посмотрю как с её помощью забэкапить sqlite базу.

17 Кб, 480x360

15 Май, 16:03 #166 #744233

>>744202
Я на своем нексусе могу и тебе (с твоим 22) рубануть :)

Ты тогда будешь вместо карты-памяти получать заглушку.

Ответы>>744237>>744260

15 Май, 16:07 #167 #744237

>>744233
А я о чем говорю блять, хоть вникайте перед тем как отвечать.

Ответы>>744242

36 Кб, 498x500

15 Май, 16:09 #168 #744242

>>744237
Иди нахуй

Ответы>>744262

15 Май, 16:20 #169 #744260

>>744233
Да уж. Если пользователи увидят при запуске приложения: "Разрешить доступ к файлам, фото и мультимедиа на устройстве" - то очевидно, большинство ответят нет.
Хотя приложение ничего криминального не делает.
Про разрешение GPS - вообще молчу. Хотя не шпионит, ага.

Плохая эта идея - runtime permissions.

Ответы>>744261>>744274

15 Май, 16:28 #170 #744261

>>744260
Самое тупое, что для MediaStore.ACTION_IMAGE_CAPTURE тоже нужен рантаим пермишн камеры, хотя мы переходим вообще в другое приложение.

15 Май, 16:28 #171 #744262

>>744242
Соси хуй быдло

15 Май, 16:53 #172 #744274

>>744260
> Плохая эта идея - runtime permissions.
Хорошая, правильная и давно необходимая.

Нехуй запрашивать у пользователя двадцать разрешений во время установки. Запрашивай при необходимости. Когда пользователь захочет поставить фоточку на аватарку, тогда и проси соответствующее разрешение. Не даст — показывай диалог с объяснением.

Использовать API 22 — это тупиковый путь. Либо адаптируйся к изменениям, либо вон из профессии. Пиши какой-нибудь ынтырпрайз на JEE: там всё тихо и спокойно, никаких изменений.

Ответы>>744286

15 Май, 16:59 #173 #744279

>>743739
Анончик, спасибо, я поставил крашлитикс, и теперь могу видеть, где упала моя хуйня. Здорово!
А можно еще как-то видеть, где моя хуйня все сделала правильно и не крашнулась? Ну типа
public void onClick(View v) {
Log.d(TAG, "вызываю метод onClick");
}
Я пока вижу вариант в тоасты это засунуть. Или это в фабрике тоже можно откуда-то вывести? Я не нашел.

Ответы>>744328>>744370

15 Май, 17:09 #174 #744286

>>744274
Пользователи действуют иначе - им нужно, чтобы всё работало.
В моём случае невозможно запросить разрешения где-то, кроме как при старте приложения.
Т.к. оно постоянно пишет данные в базу (база может быть большая, она лежит в external storage).
Приложению важно с момента запуска знать координаты пользователя.

Всё как всегда - пользователь не должен знать, что там внутри.

Ответы>>744294

15 Май, 17:21 #175 #744294

>>744286
Кстати, помню, что для google maps api v2 тоже требуется Write external storage.

Ответы>>744296

15 Май, 17:22 #176 #744296

>>744294
С версии Google Play Services 8.3 оно больше не нужно.
Вот наверное весело людям объяснять, что разрешение на доступ к файлам нужно для кеширования карт. 99% Не поймут ничего, остальные подумают, что их хотят наебать.

15 Май, 18:01 #177 #744328

>>744279
Используй Timber. Подсадишь ему специальное дерево, которое скидывает логи в крашлитикс.

Ответы>>744339

15 Май, 18:20 #178 #744339

>>744328
В крашлитик обычные логи можно кидать?

Ответы>>744375

15 Май, 18:54 #179 #744370

>>744279
Сомневаюсь, тогда люди будут пидорить fabric.io запросами в вечном цикле.
Им это вряд ли всралось.

15 Май, 18:57 #180 #744375

>>744339
Конечно. Когда ты пишешь Timber.d/i/e/... вызывается метод log твоего дерева, и тaм можно вызвать Crashylitics.log или что там есть.

Ответы>>744384

15 Май, 19:03 #181 #744384

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

15 Май, 21:24 #182 #744512

Поменял api map key, собираю дебаг, релиз версию, запускаю - всё ок, когда апдейчу в гугл плей вылает ошибка у карт типо ключ не действительный и выводится старый ключ, как его поменять?

Ответы>>744637

15 Май, 22:03 #183 #744569

>>744182
разве дядя боб одобряет синглтон?

15 Май, 22:52 #184 #744637

>>744512
Мне кажется в google-services.json все написано за нас, у тебя версии грейдла и плагина гугловских сревисов не протухли?

116 Кб, 720x960

16 Май, 00:37 #185 #744721

Анон, у меня вопрос про обучение.

Всю жизнь я учил языки методом: "качаю книжку и читаю с первых страниц/смотрю туториал с первой серии". В итоге писал кучу хелловорлдов, но так толком нихуя и не выучил, ибо все дропал. Хотя интерес был, но угасал из-за монотонных заданий для нубов со всякими массивами, циклами и т.д, и т.п.

Сейчас учу ведройд методом "хочу отправку смс в приложении -- гуглю "how to sent sms android programming" и чуть ли не копирую код, попутно пытаясь понимать, что за что отвечает. Хочу еще какое-нить говно -- гуглю и копипащу". Но понимаю, конечно, не все. С Джавы порой вообще охуеваю, видя вообще доселе неизвестные методы и операторы. Но тем не менее, после небольшого пердолинга все работает и приложение получается.
Ну и вот сам вопрос: какой способ обучения лучше? Вот так вот дальше ставить себе задачи и прорываться через гугл или пересиливать себя и читать учебники от корки до корки, чтобы знать всю мат.часть. Ведь, например, если проблемой неработающей программы будет проблема с потоками какими-нибудь, я этого никогда не узнаю и не допру, потому что это сложная тема и я ее еще не изучал.
И если идти по второму пути, то каков шанс не соснуть на собеседовании, когда я почувствую себя достаточно крутым и захочу устроиться на работу?
Надеюсь на твою помощь и мудрость, анон

Ответы>>744766

16 Май, 02:04 #186 #744766

>>744721
Книжка по джаве + что то типа старт андроида для основ и потом читать/пробовать всякие крутые штуки

Ответы>>760815

16 Май, 02:25 #187 #744772

Аноны, а как по нормальному сохранять презентер при перевороте? Пихать его в ретеин фрагмент? Но тогда же получается, что сама вью управляет им, а не наоборот.

Ответы>>744776

16 Май, 02:35 #188 #744776

>>744772
Сохранять надо данные, а презентер пересоздавать и все

Ответы>>744855

16 Май, 09:11 #189 #744855

>>744776
Ну запросы то выполняются в презенторе

Ответы>>744866

16 Май, 10:17 #190 #744866

>>744855
1) делаешь запрос на сервер (допустим в asynctask).
Один раз при показе активити (пробрось onCreated в презентер).
2) данные загружаются -> преобразуются -> сохраняются в базу
3) asynctask кидает broadcast-message (или через ContentResolver.notifyChange)
4) обработчик (допустим cursorloader) читает данные из базы и показывает пользователю.

P.S.
Как вариант можешь отключить поворот.

Здраво рассуди "что дает пользователю поворот экрана, является ли это преимуществом?",
а не делай просто "потому что можешь" (потом придется это все поддерживать и отлаживать).

Ответы>>745296

38 Кб, 566x210

15 Кб, 446x59

16 Май, 12:02 #191 #744907

Что он до меня доебался?

Ответы>>744937

16 Май, 13:13 #192 #744937

>>744907
O_o Эти локальные переменный в начале метода "аля паскаль",
пробудили у меня воспоминания из далекого детства :)

Ты опять с импортами проебался - проверь что туда точно передается наследник
android.location.LocationListener (или скинь файл целиком).

Ответы>>744982>>745079

16 Май, 13:24 #193 #744942

Не мог бы кто-нибудь привести пример не текущего RecyclerView с ViewHolder, содержащим картинки, подгружаемые откуда-нибудь Glide-ом или Picasso ? Уже очень долго ебусь, никак не выходит нормально. И да, что дает следующий код :
@Override
public long getItemId(int position) {
return position;
}
Он вообще имеет смысл ?

Ответы>>744984>>744996

16 Май, 13:54 #194 #744955

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

Ответы>>744959>>744985

16 Май, 13:59 #195 #744959

>>744955
ИМХО, бери телефон, под планшеты обычно после заказа под телефон просят сделать. Или, как лучше, и то и то

Ответы>>744967

16 Май, 14:05 #196 #744967

>>744959
Спасибо, хорошая идея

16 Май, 14:14 #197 #744974

Да, к слову, при переходе на другой экран идет утечка, которую не залавливает LeakCanary.

16 Май, 14:20 #198 #744982

>>744937
>Эти локальные переменный в начале метода "аля паскаль"
Код конвеншн давно читал?

Ответы>>744990

16 Май, 14:21 #199 #744984

>>744942
Ну помогите пожалуйста :)

Ответы>>744986

16 Май, 14:21 #200 #744985

>>744955
Бери нексус 5х, сам взял на днях, очень рад. Саппорт ведра до 2018

Ответы>>745960>>746201

16 Май, 14:22 #201 #744986

>>744984
Хуй знает, юзаю пикассо самым стандартным способом, утечек не замеченно.

Ответы>>744988

16 Май, 14:24 #202 #744988

>>744986
Утечка идет скорее при переходе на новый экран ( я вроде заюзал flow, соответственно, юзаю unbind, удаляю все данные из адаптера даже, черт его знает что делать )

Ответы>>744989

16 Май, 14:26 #203 #744989

>>744988
Хотя сейчас вроде как смотрю, и просто некоторое количество переходов загрузка памяти растет, а потом останавливается на каком-то уровне. Но по-моему 60мб это пиздец как много для двух экранов с параллакс хэдерами в одном из которых есть список из 25 элементов каждый с картинкой

Ответы>>744992>>745005

16 Май, 14:27 #204 #744990

>>744982
По паскалю - лет 12 назад, а что?

Ответы>>744991

16 Май, 14:31 #205 #744991

>>744990
По жабе лол, совсем от котлина поехал?

Ответы>>744993

16 Май, 14:32 #206 #744992

>>744989
Флов не юзал и не планирую, так что ничем помочь не могу. А 60 метров на два экрана разве что с картой может быть.

Ответы>>745007

16 Май, 14:32 #207 #744993

>>744991
А при чем тут жабка? Код же на котлине,а я про паскаль писал.

Ответы>>744995

16 Май, 14:35 #208 #744995

>>744993
Поправь если ошибаюсь, объявлять переменные вначале метода общепринятое правило.

Ответы>>745020

16 Май, 14:38 #209 #744996

>>744942
Это хуйня, если у тебя не предопределенные элементы будут.

Ответы>>745004

16 Май, 14:50 #210 #745004

>>744996
Окей, т.е. если мы делаем список с пагинацией - то эту штуку не юзаем ?

Ответы>>745024

16 Май, 14:50 #211 #745005

>>744989
> 25 картинок
Ты их ресайзишь? Picasso.load.fit или Picasso.load.resize?

Ответы>>745009

16 Май, 14:51 #212 #745007

>>744992
Да вроде везде использую правильные контексты, ничего никуда не должно улетать лишнего.

16 Май, 14:51 #213 #745009

>>745005
Использую glide, но там вроде подобного нету. Пикассо просто для примера привел

Ответы>>745040

16 Май, 14:56 #214 #745019

Может кто посмотреть мой код ? Скину линк на гилтаб, только нужно будет добавить вас, ибо реп приватный

Ответы>>745022>>745028

16 Май, 14:57 #215 #745020

>>744995
Хм, может в Pascal (там это на уровне языка) или Basic.

Сейчас занят что-бы пруфы искать, но насколько я помню из "чисты код" и "рефакторинг" Фаулера:
1) лок. переменные надо как можно ближе к месту использования
У Фаулера была мысль вообще их не заводить, а получать лок. данные через отдельный метод.
2) их НЕ рекомендуется использовать повторно, особенно для др. целей.
Для этого в разных языках есть val/let - одноразовое присваивание.

Ответы>>745031

16 Май, 14:57 #216 #745022

>>745019
Советую тебе вырубать модули и смотреть ушла ли утечка.
Убери релейтив и посмотри, таким образом поймешь где копать.

Ответы>>745027

16 Май, 14:58 #217 #745024

>>745004
Наоборот, это может помочь, вот были у тебя элементы {"id": 1}, {"id": 2}, {"id": 101}, а потом стали элементы {"id": 103}, {"id": 2}, {"id": 101}, он будет уверен в закешериванных шутках и не будет играть лишних анимаций.

16 Май, 14:59 #218 #745027

>>745022
Там только view и есть, лол. И тестовые данные. Больше ничего. Вообще думаю запилить все по-новой чтобы не ебаться

Ответы>>745035

16 Май, 15:00 #219 #745028

>>745019
Ой добавь меня ^urbillgates2002ANUSli\xsvePUNCTUMAf?com
Я твое репозиторий выкачаю и перезалью на github, аночиками на радость.

16 Май, 15:03 #220 #745031

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

Ответы>>745036

16 Май, 15:09 #221 #745035

>>745027
Сука не тупи блять, вью у него только есть.
Выпили ресакйлервью и посмотри, если не будет то начинай выпиливать глайд и тд и тп.

16 Май, 15:09 #222 #745036

>>745031
Хороший маневр, только это никак не связано с требование принудительно описывать переменный в начале метода.

Ты кстати про второй пункт забыл.

Ответы>>745038

16 Май, 15:14 #223 #745038

>>745036
Не забыл, если у тебя метод решает какую-то задачу, то переиспользовать их в другой задаче внезапно не будет возможности.
Да и я боюсь сам компилятор оптимизирует работу с переменными. Тут правда я уже совсем не шарю как, но вполне возможно он определит что твоя переменная уже не используется но создалась новая. В форе он же определяет что переменная создается новая и не создает ее.

Ответы>>745132

16 Май, 15:22 #224 #745040

>>745009
Есть там такое точно, влючено ли по дефолту? Вряд ли

16 Май, 16:38 #225 #745079

>>744937
http://ideone.com/bVClzY
Блять, как же в ведре немного запутано все это. Вот под EE с джавой, мне кажется, проще.

Ответы>>745119

26 Кб, 539x290

16 Май, 17:23 #226 #745119

>>745079
JetBrains есть еще где тулинг подкрутить, у тебя показывается не "исходная" ошибка, а лишь следствие.

На самом деле проблема в том что у mLocationManager тип "LocationManager?", а smartcast не работает так это изменяемая переменная.
(теор. другой поток может занулить ее между проверкой и использованием).
Так что можешь спокойно убрать "if (mLocationManager != null) {"

Пофиксить ошибку можно так:
1) mLocationManager?.removeUpdates(mLocationListeners[y])
или так в твоем это случае лучше не делать
2) Вынести mLocationManager в "companion object" и пометить его "lateinit" (пик 1)

P.S.
Вопрос "зачем ты хранишь статическую ссылку на LocationManager?", а пожалуй задавать не буду.

Ответы>>746013>>746665

16 Май, 17:42 #227 #745132

>>745038
> вполне возможно он определит что твоя переменная уже не используется но создалась новая.
Я тебе по секрету так скажу, на уровне байткода вообще переменных нет. Есть регистры, компилятор их число минимизирует.

Ответы>>745134

16 Май, 17:44 #228 #745134

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

Ответы>>745136>>745323

16 Май, 17:48 #229 #745136

>>745134
Мы все тут наверно в свое время писали laba1

198 Кб, 1024x768

16 Май, 18:55 #230 #745195

Первое правило начинающего программиста под андроид:
Не слушать людей на stackoverflow, которые предлагают освобождать ресурсы/останавливать сервис в методе onDestroy активити или фрагмента.

Ответы>>745201>>745215

16 Май, 19:04 #231 #745201

>>745195
Чому?

Ответы>>745208

16 Май, 19:09 #232 #745208

>>745201
Метод onDestroy вызывается перед тем, когда активити будет уничтожено.
Зачастую не тогда, когда мы это ожидаем (слишком поздно, с задержкой, когда система решит его вызвать).

Ответы>>745213>>745214

16 Май, 19:13 #233 #745213

>>745208
То есть надо высвобождать в onStop, ну не в onPause же?

Ответы>>745216

16 Май, 19:14 #234 #745214

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

16 Май, 19:14 #235 #745215

>>745195
> освобождать ресурсы
Слишком размытый термин (хотя сложно представить что можно освобождать в onDestroy)

Ответы>>745218>>745246

16 Май, 19:14 #236 #745216

>>745213
Он стоп и сам та еще херня.

Ответы>>745224

16 Май, 19:16 #237 #745218

>>745215
Всякое говно типа синглтона который хранит в себя ссылки на активити, очень тупой пример, но тем не менее.

Уже обсуждали тут как хендлером сделать мемори лик, и описывали что можно просто очищать хендлер в онДестрое.

Ответы>>745219

16 Май, 19:16 #238 #745219

>>745218
>что можно просто очищать хендлер в онДестрое.
обнулять всмысле

16 Май, 19:18 #239 #745224

>>745216
Ну и что за нахер, когда мне от сервиса анбайндится? И почему по гугловскому гайду для GoogleApiClient'a нужно конектится на старте, а отключаться в стопе

Ответы>>745230>>745231

16 Май, 19:25 #240 #745230

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

Ответы>>745235

16 Май, 19:26 #241 #745231

>>745224
Слушая Google, а не рамдомных сосачеров.

Правильно тебе все гугл говорит, после Android 3.0 между pause/stop нет никакой разницы
(кроме случая перекрытия твоего активити, другим "полупрозрачным").

Ответы>>745235

16 Май, 19:28 #242 #745235

>>745231
Долбоеб чтоль?
На перечитай пост рандомного сосачера и уйди под шконарь >>745230

Ответы>>745238

16 Май, 19:30 #243 #745238

>>745235
Давай разберем все тобой написанное, складывается впичатление...

Что тебе конкретно не понравились?
Ты моя маленькая девочка считал себя умнее разрабов из гугла?

Ответы>>745244

16 Май, 19:34 #244 #745244

>>745238
Эта маленькая девочка написала все как по доке, еще и объяснила чем чревато что-то делать в онСтопе.

И уже исходя из твоих слов
>по гугловскому гайду для GoogleApiClient'a нужно конектится на старте, а отключаться в стопе
>Правильно тебе все гугл говорит, после Android 3.0 между pause/stop нет никакой разницы
Ты сам перечишь гуглам если что.

Ответы>>745254

16 Май, 19:36 #245 #745246

>>745215
Чаще всего встречаются "полезные советы" про AudioRecorder:
Если вызвать release в ondestroy, то не факт, что он освободится до того, как в другой активити/фрагменте его будут снова юзать. Ведь мы не знаем, когда будет вызов ondestroy. В итоге имеем рандомные краши время от времени на рандомных устройствах.
При этом куда не плюнь - в ondestroy все release вызывают.

С сервисом тоже можно наебаться - активтити закрылось, сервис еще не грохнули, потом его начали перезапускать И В ЭТОТ МОМЕНТ ГРОХНУЛИ В onDestroy.
В итоге сервис не запущен, а должен быть.

Но масштабы проблемы куда шире, это не ограничивается примером с AudioRecorder и сервисом.

Ответы>>745247>>745250

16 Май, 19:36 #246 #745247

>>745246
*поправка AudioRecord

16 Май, 19:40 #247 #745250

>>745246
Так блять, онСтарт нового активити вызывается не относительно онДестроя предыдущего.
Там вроде только между онПауз(1) - онКриейт(2) - онСтарт(2) - онРезюм(2) есть зависимость. Хотя тут мог ошибиться.

120 Кб, 943x575

16 Май, 19:45 #248 #745254

>>745244
Он написал
> Ну и по факту только онПауз гарантированно вызывается

Ну давай вместе посмотрим:
https://developer.android.com/intl/ru/reference/android/app/Activity.html#ActivityLifecycle

Как видишь на картинке, после Android 3.0 активити не может быть убита до вызова onStop().
Так что теперь "onStop() тоже считается гарантированно вызываемым".

Ответы>>745312

16 Май, 20:26 #249 #745283

Ну и что в результате? Пусть у меня есть сервис в котором музыка играет, когда мне release MediaPlayer'a вызывать.

Ответы>>745289

16 Май, 20:31 #250 #745289

>>745283
В случае с сервисом - смело вызывай в onDestroy.

Ответы>>745294

16 Май, 20:35 #251 #745294

>>745289
Окей, спасибо.

16 Май, 20:38 #252 #745296

>>744866
какая то хуевая архитектура, так как сохранять прогресс закгрузки при перевороте, только ретеин фрагмент и т.п.?

Ответы>>745315

16 Май, 21:03 #253 #745312

>>745254
Тогда смысл онСтарт онСтоп нивелируется практически.

Ответы>>745328

16 Май, 21:08 #254 #745315

>>745296
>хуевая архитектура
В Е Д Р О И Д
Е
Д
Р
О
И
Д

16 Май, 21:16 #255 #745323

>>745134
А кто не писал? Я про байткод далвика говорю.

16 Май, 21:24 #256 #745328

>>745312
Это атавизм из времен телефонов c 64 MB памяти я под такие разрабатывал.

Ответы>>745368

16 Май, 22:43 #257 #745368

>>745328
И как это помогало?

17 Май, 07:20 #258 #745539

видали, developer.android.com обновили

Ответы>>745546>>745589

17 Май, 07:46 #259 #745546

>>745539
Вообще не плохо сделали нужно признать.
Алсо, студию обновили и выслали оповещение на почту, лол. Первый раз такое вижу.

Ответы>>745551

17 Май, 08:11 #260 #745551

>>745546
Ну так это же обновление безопасности.

Ответы>>745565

17 Май, 08:32 #261 #745565

>>745551
Мне это не говорит нихуя.

sage 17 Май, 08:49 #262 #745581

сап prкун 15 лвл, посоветуйте какойнть курс/книгу на русском по андроид-разработке, гугл выдал только 1, и он меня не устраивает

Ответы>>745677

17 Май, 08:55 #263 #745589

>>745539
У меня меню все на китайском теперь.

17 Май, 12:09 #264 #745677

>>745581
а мой ты каток, навошта гэта табе

51 Кб, 1152x905

17 Май, 13:21 #265 #745738

>>743301 (OP)
Аноны, подскажите, переписывал по туториалу, после все скомпилировалось, я закрыл. Сегодня открыл - и вылазит пикрелейтед. В xml совсем хуй. Подскажите пожалуйста где ошибка.

Ответы>>745745

17 Май, 13:27 #266 #745745

>>745738
У тебя опечатки.

Ответы>>745754

17 Май, 13:33 #267 #745754

>>745745
Вот что бывает когда не знаешь что пишешь, точно, спасибо.

17 Май, 14:42 #268 #745839

Двощик, есть примеры кода по работе с WEB API или сразу бы получения потока с онлайн-радио и работе с тегами дорожки?

17 Май, 15:57 #269 #745902

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

Ответы>>745966

17 Май, 16:46 #270 #745960

>>744985
тоже хотел его взять

Ответы>>746011

17 Май, 17:02 #271 #745966

>>745902
пересоздать активити

17 Май, 18:11 #272 #746011

>>745960
Только покупай чехол сразу, и советую еще стекло. Задняя панель сделана из плохого пластика - царапается очень легко, прямо таки очень.

Также как купишь телефон установи програмку checkR и купи провод юсб-а на тайп-си, и проверь его этой програмкой.

Сам все эти грабли испытал на себе.

Ответы>>746026

17 Май, 18:13 #273 #746013

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

17 Май, 18:30 #274 #746026

>>746011
5x говно же, дурацкий разъем от кабеля, лучше просто пятерку взять

Ответы>>746029>>746050

17 Май, 18:32 #275 #746029

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

17 Май, 18:44 #276 #746050

>>746026
Поддержка ближайшие 2 года (+ preview сборки)
VS
micro USB
Что бы выбрать?..

Тем более смирись, будущие за USB-C.
Вот уже и музыку через него можно слушать на Nexus5X
https://www.indiegogo.com/projects/aero-digital-earphone-upgrade-to-hifi-music-now#/

Ответы>>746201

17 Май, 18:45 #277 #746053

гуру mvp, стартовать активити нужно же из презентера?

Ответы>>746084>>746118

17 Май, 19:33 #278 #746084

>>746053
> гуру
Нет, ну да похуй.
Я из вьюхи предпочитаю, ибо 1) там 100% есть контекст, 2) все таки запуск активности, это операция показа каких-то данных, хоть и в другом окне. Да и вдруг тебе придется заменять запуск активити на добавление фрагмента?

17 Май, 20:17 #279 #746118

>>746053
Не морочь себе голову: "Single responsibility principle" + "Dependency Injection".

Выносишь код навигации в отдельный класс (NavManager), а в презентер прикидываешь его через Dagger2 (или другой DIF).
В презентере уже просто дергаешь его методы.
Потроха NavManager пишешь как удобнее и проще, потом если будешь переписывать - придется менять один класс.

P.S.
Кстати в Application есть интересный метод registerActivityLifecycleCallbacks
https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks)
Он может помочь "неявно связать" NavManager и твои активити (но это так для информации).

P.P.S.
Глянь MVVM, там реально гораздо меньше бойлеплейта чем в MPV/MPC.

Ответы>>746122>>746192

17 Май, 20:21 #280 #746122

>>746118
т.е. будет тупо класс NavManager с методами openActivity1(), ..., openActivity666() ?

Ответы>>746140

17 Май, 20:36 #281 #746140

>>746122
Раз ты юзаешь MVP, значит у тебя на каждом активити есть как минимум один рутовый Presenter.
Бьюсь об заклада что почти везде у тебя соответствие XXXActivity == XXXPresenter (если нет, то это легко исправить).
Значит можно вычислить активити из названия класса презентера.

В итоге можно иметь один метод:
public <T extends Presenter> void open(Class<T> presenterType, Arguments args);
вызываться он будет, к примеру navigator.open(LoginPresenter.class, ...);

или на Kotlin:
fun <refied T:Presenter> open(args: Arguments)
navigator.open<LoginPresenter>(...)

Ответы>>746144

17 Май, 20:40 #282 #746144

>>746140
Здесь кстати соблюдается "open/closed principle" - при добавление нового окна, не придется менять интерфейс.

Кстати если не хочешь делать через название активити можно, тупо сделать switch/case.

17 Май, 21:05 #283 #746175

Я тут подумал, а ведь мобильщики - считай, фронт-эндеры. Дизайнеры, но не программисты.

Ответы>>746194>>746196>>746568

17 Май, 21:16 #284 #746192

>>746118
Это плохое решение в рамках MVP.
Если всё приложение реализовывать на MVVM, то ок.

Лучше создать в activity статичный метод create(Context context), который будет создавать её, и вызывать его из V.

> MVVM, там реально гораздо меньше бойлеплейта чем в MPV/MPC
С увеличением сложности приложения MVVM начнет ограничивать тебя, она не такая расширяемая, как MVP.

Ответы>>746223

17 Май, 21:18 #285 #746194

>>746175
Мобильщики вообще макаки же. Это что-то уровня программирования на пыхе или жс.

Ответы>>746208

17 Май, 21:18 #286 #746196

>>746175
Утешай себя этим почаще, JavaScript-макака.

17 Май, 21:22 #287 #746201

>>746050
>>744985

Логичнее подождать до октября, и взять уже новый Nexus.

Ответы>>746209

17 Май, 21:25 #288 #746208

>>746194
Нет, слишком много тонкостей системы нужно знать. Слишком много багов в сдк.
Тут реально решает опыт.

17 Май, 21:27 #289 #746209

>>746201
>Ждать пол года
>Брать телефон маньше чем через несколько месяцев после релиза.
Плохо, брат, плохо у тебя с логикой.

Ответы>>746219

17 Май, 21:34 #290 #746219

>>746209
До выхода новой модели осталось четыре месяца (пускай даже пять). Это больше, чем уже прошло со времени выпуска 5x. (Мы ведь помним, что апдейты системы будет выходить в лучшем случае два года).

Плюс, 5x имеет несколько неоднозначную начинку. Ходят слухи, что новая модель должна быть более сбалансированной.

По крайней мере я, руководствуясь такими рассуждениями, подожду до октября, а там уже решу, что брать.

Ответы>>746220>>746541

17 Май, 21:35 #291 #746220

>>746219
> Это больше, чем уже прошло со времени выпуска 5x
Имел в виду меньше, конечно же.

17 Май, 21:37 #292 #746223

>>746192
> Это плохое решение в рамках MVP.
> С увеличением сложности приложения MVVM начнет ограничивать тебя
Пруфов конечно не будет.

Я к MVVM пришел эволюционно путем от MVP,
когда устал писать кучу однотипных методов которые просто гоняли данные.

17 Май, 21:39 #293 #746227

Кстати, если аппарат нужен исключительно для разработки и тестирования, то Android One отлично подойдет Официально продаётся только в Африке, но легко находится на Ebay и Amazon

Ответы>>746287

17 Май, 22:40 #294 #746287

>>746227
не нахожу чет нигде

Ответы>>746340

17 Май, 23:02 #295 #746318

Стоит ли заморачиваться поначалу со всякими MVC, MVP и прочим? Я ещё и половины базовой программы не изучил, пробую писать маленький круд а уже такое ощущение, что выходит какое-то говно.
Читаю книгу Android Big Nerd's ranch (Busy Coder’s это ёбаный справочник, а не учебник).

Ответы>>746324>>746334

17 Май, 23:06 #296 #746324

>>746318
Блядь, ctrl+enter нажал.
Так вот, читаю и делаю оттуда упражнения, книга годная, но хотелось бы что-то ещё почитать об отделении логики обновления View и взаимодействия с моделью.
Смотрел пример TodoList приложения от гугла, ничего не могу понять. Какие есть годные материалы по данной теме?

17 Май, 23:13 #297 #746334

>>746318
> Я ещё и половины базовой программы не изучил
Тогда явно не стоит. Изучи основы, привыкни к SDK (он тут со своими особенностями).
Когда поймешь, что именно тебя не устраивает в стандартном подходе (и почему), тогда и можно уже в архитектурные дебри углубляться.

87 Кб, 1475x439

17 Май, 23:16 #298 #746340

>>746287
Ну, значит, не судьба ¯\_(ツ)_/¯

79 Кб, 540x960

18 Май, 00:24 #299 #746398

>>743301 (OP)
Ребят, накатил стандартную DrawerLayout активность от студии, на уже созданное приложение, как перекрасить статусбар, чтоб он не становился оранжевым как на пикрелейтед, а был прозрачным?

Ответы>>746401>>746405>>746419>>746836

18 Май, 00:28 #300 #746401

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

18 Май, 00:31 #301 #746405

>>746398
Если сставить на новое приложение, то статус бар прозрачным становится при открытии выдвижной панели.

18 Май, 00:53 #302 #746419

>>746398
У тебя иконки уёбищные, да еще и стоят криво.

18 Май, 10:09 #303 #746541

>>746219
5 месяцев это дохуя, ждать не имеет смысла, учитывая что тут у людей зарплаты в баксах, можно взять сейчас, и еще через пол года.
Да и не забывай что только ебанутые закажет только что выпущенный телефон проебывая гарантию(а так и будет закажи ты его читерством с америки), брак штука серьезная. А если подождешь одзывов месяц то как раз будет тебе пол года. Не выебуйся в общем.
У 5х однозначная начинка, средний смартфон, чего там неоднозначного. Вот материал пластика - говною.

Ответы>>746543>>746559

18 Май, 10:11 #304 #746543

>>746541
> учитывая что тут у людей зарплаты в баксах, можно взять сейчас, и еще через пол года.
Как толсто.

Ответы>>746546

18 Май, 10:15 #305 #746546

>>746543
Чего толстого? Намек что тут никто не работает? Так нахуй тогда тебе такой дорогой телефон если у тебя денег немного? Для себя тебе китаец + эмулятор хватит на ближайший год. А там если не зацепишься то уже прости но что-то явно не так.

Ответы>>746666

18 Май, 10:36 #306 #746559

>>746541
Я в Европе, так что с гарантией проблем нет.

Для личного использования меня устраивает мой китайфон абсолютно. Но для разработки хочется новый (физический) девайс. Поэтому пока и не тянет менять устройство, вот и хочу посмотреть, каков будет новый нексус

Ответы>>746563

18 Май, 10:37 #307 #746562

Видали? Пока, groovy, здравствуй, kotlin.

http://gradle.org/blog/kotlin-meets-gradle/

Ответы>>746565

18 Май, 10:43 #308 #746563

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

18 Май, 10:45 #309 #746565

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

Ответы>>746599

18 Май, 10:51 #310 #746568

>>746175
мобильщик = фронт-эндер + бак-эндер + дизайнер

Ответы>>746572

18 Май, 10:53 #311 #746572

>>746568
Не пали годноту быдлу.

18 Май, 11:33 #312 #746597

А делал кто-нибудь с Glide-ом pre-cache для списка, например ?

Ответы>>746600>>746618

18 Май, 11:38 #313 #746599

>>746565
Настройка CI, тестов, flavors и build variants, dexing, shrinking, apt.

Переход на котлин особой разницы не принесёт, но хоть автодополнение будет работать.

Ответы>>746616

18 Май, 11:39 #314 #746600

>>746597
> pre-cache для списка
Что ты имеешь в виду?

Ответы>>746604

18 Май, 11:44 #315 #746604

>>746600
Загрузка картинок заранее ( до того, как они непосредственно подгружаются в элемент списка )

18 Май, 12:12 #316 #746616

>>746599
>build variants
>dexing
>shrinking
Это ебучий шаблон который переносится из проекта в проект, как гитигнор и прогвард.
С флейворами конечно интереснее, но они не везде нужны.
С CI не приходилось еще работать.

18 Май, 12:14 #317 #746618

>>746597
А смысл в чем? Оно кеширует все что ты загружаешь не забываем про размер кеша. Зачем кешировать то что возможно даже на экране выводится не будет?

Ответы>>746624

18 Май, 12:25 #318 #746622

Хм, анонимные локальные BroadcastReceiver норм вешать?
Утечек не будет?

Ответы>>746623>>746653

18 Май, 12:30 #319 #746623

>>746622
Ты главное их снимать не забывай

18 Май, 12:30 #320 #746624

>>746618
потому что он загружает непосредственно во ViewHolder, а нужно бы заранее и из пула доставать потом. Быстрее же.

Ответы>>746634

18 Май, 12:32 #321 #746626

Да, к слову, заметил что у меня RecyclerView при каждом пересоздании отжирает по 10Мб. Скорее всего ( еще не тест ), как раз глайд в этом и виноват ( вернее - то, как я его использую ). Вопрос - как правильно в onBindViewHolder загружать изображение , чтобы это дерьмо не ликало ?

Ответы>>746637>>746667

18 Май, 12:38 #322 #746630

Подскажите пожалуйста книгу по фронт-энду для андроид.

Ответы>>746635

18 Май, 12:40 #323 #746634

>>746624
Оно загружает в кеш и потом отдает тебе.
Т.е. зашел на список - подгрузило из инета.
Перезашел в это список - подгрузило из кеша.

Ответы>>746652

18 Май, 12:40 #324 #746635

>>746630
Пахахахахах.
Что-то новое.

18 Май, 12:42 #325 #746637

>>746626
10 метров не так много же. И в каком смысле при каждом пересоздании? Предыдущие 10 мегабайт не очищаются или что?

Ответы>>746661

18 Май, 12:51 #326 #746650

А ну-ка, подскажите, анонасы. Читаю Android programming:The Big Nerd Ranch Guide. И там всплывает такая конструкция:

CrimeLab.get(this)

CrimeLab - синглтон. Метод принадлежит Activity. Собственно претензии к

public static CrimeLab get(Context context) {
if (sCrimeLab == null) {
sCrimeLab = new CrimeLab(context);
}
return sCrimeLab;
}

private CrimeLab(Context context) {
mContext = context.getApplicationContext();
mDatabase = new CrimeBaseHelper(mContext)
.getWritableDatabase();
}

Разве нет риска с таким вызовом CrimeLab.get(this) (вместо CrimeLab.get(this.getApplicationContext()) при очередном get() получить CrimeLab с протухшим содержимым?

Ответы>>746656>>746659>>746668

18 Май, 12:52 #327 #746652

>>746634
Из памяти сначала. Если там нет, то из кэша.

18 Май, 12:53 #328 #746653

>>746622
Будут. Делай поля

18 Май, 12:54 #329 #746656

>>746650
Нет.

18 Май, 12:58 #330 #746659

>>746650
Упс. Разобрался.

18 Май, 13:00 #331 #746661

>>746637
именно

18 Май, 13:08 #332 #746665

>>745119
Снова я, привет.
Теперь вылетает такой exception
java.lang.RuntimeException: Unable to create service: kotlin.UninitializedPropertyAccessException: lateinit property mLocationManager has not been initialized
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property mLocationManager has not been initialized

18 Май, 13:10 #333 #746666

>>746546
Во-первых, работает мало кто. Во-вторых, зп в долларах — у пары человек на всю доску, максимум.

18 Май, 13:10 #334 #746667

>>746626
>при каждом пересоздании отжирает по 10Мб
А как ты это посчитал?

Ответы>>746729

18 Май, 13:12 #335 #746668

>>746650
какой ужасный синглтон

18 Май, 13:12 #336 #746669

Сап двач! Я дико фапаю на ведроид, но пока я быдлошкольник. Когда вырасту, я хочу стать таким же труЪ как вы! Что мне почитать, чтобы начать быдлокодить?

Ответы>>746677>>746728

18 Май, 13:22 #337 #746677

>>746669
Предлагаю пойти нахуй.

Выпустил в гп первое приложение, когда учился в школе.

Ответы>>746679>>746691>>746741

18 Май, 13:25 #338 #746679

>>746677
Ну, видимо, я не такая талантливая петушатина

18 Май, 13:39 #339 #746691

>>746677
>Выпустил в гп первое приложение, когда учился в школе.

Так вот андроид-маркет засрал своими поделиями.

Ответы>>746692>>747120

18 Май, 13:40 #340 #746692

>>746691
>Так вот

Так вот кто

18 Май, 14:12 #341 #746728

>>746669
google почитай, говорят запросы помогают. Шапка тебе нахуй дана, уебан ?

18 Май, 14:12 #342 #746729

>>746667
В диспетчере задач ( или его аналоге ) на планшете посмотрел

Ответы>>746741

18 Май, 14:25 #343 #746741

Это тебя >>746677 надо благодорить за это https://www.youtube.com/watch?v=fFIrxXvv9pQ ?

>>746729
Ну это уже просто ПИЗДОС (других слов нет), ты программист или домохозяйка?

MAT для кого сделали?
Да даже в самой Android Studio/IDEA есть этот гребанный график потребления памяти,
мог бы туда посмотреть (вызвав сначала GC) и дамп там же сделать.

Ответы>>746748>>746758>>747120

18 Май, 14:31 #344 #746748

>>746741
да разницы то, лол, факт есть факт, утечка есть, она в recyclerView, даже более - связана с имагами

18 Май, 14:40 #345 #746758

>>746741
И да, в графике потребления оперативки тоже смотрю, разницы нихера

Ответы>>746785

18 Май, 15:10 #346 #746785

>>746758
> да разницы то, лол, факт есть факт, утечка есть
Маленький ты мой лол, ты это тоже по диспечеру удивил или тебя или в отчете MAT?

> да разницы то
Разница в том что у нас тут есть сборщик мусора, который удаляет ссылки когда ему удобнее,
а ни когда объект уже не используется.
Соответсвенно если не нажимать вручную "perform GC", то "визуально" куча уменьшаться не будет
тк он будет освобождать память только что бы сразу ее отдать новым объектам.

Ответы>>746787>>746790

18 Май, 15:12 #347 #746787

>>746785
т.е. ты хочешь сказать, что то, что у меня в диспетчере на планшете видно, что каждый onResume кол-во оперативы занятой приложением возрастает на 10мб может быть нормальной работой ?)

Ответы>>746793

18 Май, 15:14 #348 #746790

>>746785
Да, даже несмотря на это, то же самое и в студии показывается, по +10мб при onResume

18 Май, 15:14 #349 #746792

Привет, дроидчеры. Помогите с разработкой Android приложения. Я новичек в программировании. Выучил более менее синтаксис Java, даже написал первое кривое полноценное приложение. Возникла идея написать ещё одно, приложение, только уже взяться за него серьезно. Хочу сделать приложение типа такого: https://play.google.com/store/apps/details?id=com.ma.ld.dict.history или такого https://play.google.com/store/apps/details?id=com.history.in.pics Чтобы там также были какие-то посты и поиск по ним. Но когда я начал гуглить про локальный поиск в Android приложении, оказалось что нужна база данных SQLite по каторой и будет идти поиск. Оказывается я как долбаеб лепил какую-то хуйню без базы данных. Теперь для меня большой вопрос: КАК?? Как связать layout с базой данных и как ёё вообще использовать в таких целях. Все туториалы, которые смотрел на YouTube не расскрывают темы. Везде просто примеры телефонной книги и просто ввод и вывод данных, а мне надо чтобы каждый пост был в базе данных(да, да я довн). Так что я хз, что делать. Помогите пожалуйста советом или каким-нибудь тутором. Спасибо!

Ответы>>746800

sage 18 Май, 15:14 #350 #746793

>>746787
Я все сказал, а ты можешь и дальше профилировать "диспетчером приложение".

Ответы>>746797

18 Май, 15:17 #351 #746797

>>746793
ты блять по делу способен что-нибудь сказать ? Или тебе приспичило просто попиздеть, говном облить и не сказать ничего, содержащего хоть какую-то ценность ?

18 Май, 15:18 #352 #746800

>>746792
Туториал гугла всё прекрасно описывает

Ответы>>746802

18 Май, 15:21 #353 #746802

>>746800
Линк, мб ? С нормальным прождакшн-кодом пожалуйста

Ответы>>746804

18 Май, 15:23 #354 #746804

>>746802
>нормальным прождакшн-кодом
:^)

Ответы>>746810

18 Май, 15:30 #355 #746810

>>746804
Ну а нафига мне тестовый пример с адаптером в 5 строк в котором учат делать список однострочных TextView ?

Ответы>>746814

18 Май, 15:33 #356 #746814

>>746810
Ты не на адаптер смотри, дурашка.

Ответы>>746815>>746817

18 Май, 15:35 #357 #746815

>>746814
а куда ? У меня leak в адаптере

Ответы>>746818

18 Май, 15:35 #358 #746817

>>746814
либо viewHolder, либо адаптер

Ответы>>746818

18 Май, 15:37 #359 #746818

>>746815
>>746817
Я подумал ты спрашивал про то как с базой работать а не про списки.
https://guides.codepath.com/android#adapterviews

Ответы>>746819

18 Май, 15:37 #360 #746819

>>746818
нет, про списки :)

18 Май, 15:43 #361 #746825

Блять, ресайклер тупо жрет память при скроллинге по фиксированному количеству элементов "вверх-вниз". Ему насрать на unbind-ы, ему насрать на Glide.clear(), ему насрать на все. Он, сука, просто жрет оперативку и не выплевывает обратно

Ответы>>746834>>746846

18 Май, 15:49 #362 #746834

>>746825
use listview, luk

Ответы>>746838

18 Май, 15:50 #363 #746836

>>746398
Сделай полноэкранный режим, тогда статус бар не будет мешать

18 Май, 15:53 #364 #746838

>>746834
ресайклер больше нравится :) Но правда вот такие моменты пиздос ебут

18 Май, 16:00 #365 #746846

>>746825
А хули у меня с ним проблем нет?

Ответы>>746849

18 Май, 16:01 #366 #746847

Чуваки, хочу добавить в приложение написанное на Java, мини-игру. Посоветуйте, на каком движке и на каком языке её лучше делать, чтобы в дальнейшем можно было интегрировать в android приложение на написанное на Java.

Ответы>>746952

18 Май, 16:04 #367 #746849

>>746846
Не знаю. Я сейчас покопался в коде чувака, либу которого использую ( для хэдеров, футеров, удобной имплементации холдеров и прослушки клика ) и понял, где может быть собака зарыта.
Этот человек ставит онКлики на itemView и не убирает их никогда

Ответы>>746855

18 Май, 16:04 #368 #746850

Блять, потеплело так новая партия ньюфань подкатила.

18 Май, 16:08 #369 #746854

Q

18 Май, 16:10 #370 #746855

>>746849
Их не может сильно много накопится, ведь после присвоения они все проебутся.

Ответы>>746858

18 Май, 16:12 #371 #746858

>>746855
по крайней мере при выходе в бэкграунд они могут остаться в памяти а новые - добавится потом при возвращении и onresume, если я правильно понимаю

Ответы>>746875

18 Май, 16:12 #372 #746859

А нужно юзать unbinder во ViewHolder-ах ?

197 Кб, 914x508

18 Май, 16:26 #373 #746875

>>746858
Ебать, ну точно одни нюфаги everywhere.

Ему сказали использовать тулзы для анализа, нет он сидит и фантазирует.

Ответы>>746929

18 Май, 17:27 #374 #746929

>>746875
а существует ли место где сидят гуру ведроида?

Ответы>>746932>>746946

18 Май, 17:29 #375 #746932

>>746929
А че, не видно что-ли, вон гуру писал, к которому ты обращался

63 Кб, 1161x863

39 Кб, 1132x756

GOOGLE IO 2016 18 Май, 17:41 #376 #746946

>>746929 да они все здесь Google "отдел разработки Android"

Кстати напоминаю: до главного события Android мира осталось 2 часа.

https://events.google.com/io2016/

Ждем ободряющей речи от Сундара. Интересно чем он решил нас удивить?
Может язык платформы поменяют на Kotlin или Swift или GO?

Ответы>>746951>>746954>>746965

sage 18 Май, 17:43 #377 #746951

>>746946
Хотел подколоть и сделать скрытый текст, но вместо этого выделил :)

18 Май, 17:43 #378 #746952

>>746847
На хаскелле

18 Май, 17:49 #379 #746954

>>746946
Ну вот котлин уже в грейдле, маленькими шажками.

Ответы>>746969

18 Май, 18:00 #380 #746962

Сап, пишу подобие аудиоплеера, но т.к. ньюфаг, не совсем понимаю как правильно это все дело организовать.

В общем главное активити представляет собой список песен, доступных для воспроизведения. При нажатии на элемент выплывает фрагмент, в котором есть кнопка play/pause и seekBar для перемотки и отображения прогресса. Помимо этого при нажатии запускается сервис (в том же процессе), в котором работает MediaPlayer (занимается непосредственно воспроизведением музыки). В этом сервисе создается второй поток, из которого я раз в секунду отправляю в активити бродкаст, в котором содержится текущая позиция(прогресс) MediaPlayer'а. Приняв в активити бродкаст, извлекаю из него позицию и задаю ее как текущий прогресс seekBar'а во фрагменте. Если хочу остановить воспроизведение из фрагмента (нажать на кнопку play/pause) или перемотать песню изменив положение seekBar'а, то использую binding вместо бродкаста и просто вызываю публичную функцию для паузы/перемотки, которые прописаны в сервисе.

Норм я все организовал? Есть смутное подозрение что это немножко быдлокод, подскажите как лучше сделать.

Ответы>>746964>>746969>>746977

18 Май, 18:03 #381 #746964

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

Ответы>>746983

18 Май, 18:04 #382 #746965

>>746946
Текстовая версия будет? А то ивенты от гугла еще более унылые, чем последние от эпла.

18 Май, 18:08 #383 #746969

>>746954
>>746962
Каждый раз отправлять бродкаст - это точно говнокод

Ответы>>746983

18 Май, 18:13 #384 #746975

Recycler-о-View-блядь пишет в очередной раз. Вроде как я более-менее улучшил ситуацию. Теперь ублюдок отжирает мегабайта по два. Пришлось вручную использовать Glide.clear в onViewRecycled, чистить абсолютно все, что глайд накэшировал при выходе в onStop

18 Май, 18:14 #385 #746977

>>746962
> я раз в секунду отправляю в активити бродкаст
Лучше уж у биндера колбэк дергать, не? Чтоб gc не охуевал подчищать за тобой интенты.

Ответы>>746984

18 Май, 18:16 #386 #746979

Ан нет, просто не вызывался по какой-то причине onDetachedFromRecyclerView, смешно, ха-ха, блядь

18 Май, 18:19 #387 #746983

>>746964
>>746969
А если повесить анимацию разве не получится расхождения между реальной позицией воспроизведения и отображаемой? Я стримлю музыку с вк, и вполне возможно что где-то воспроизведение будет останавливаться -> нужно это как-то учитывать, каждую секунду чекая все ли нормально. Кстати, чем грозит ссылка? Сервис у меня останавливается, если закрывается активити, что может произойти?

18 Май, 18:20 #388 #746984

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

Ответы>>746987

18 Май, 18:22 #389 #746987

>>746984
Да. Либо сделать универсальный коллбэк, который будет иметь onPlayStart, onPlayPause, onPlayStop, onPositionChanged, чтобы синхронизировать изменения, которые инициирует плеер, с ui.

Ответы>>746991>>747079>>747162

18 Май, 18:26 #390 #746991

>>746987
Так и сделаю, спасибо анон )))

18 Май, 20:06 #391 #747079

>>746987
А если сервис в другом процессе? Как тогда подписаться.

Ответы>>747084

18 Май, 20:12 #392 #747084

>>747079
Хуй знает.
Но думаю через сервис прослойку. У обоих сервисов есть aidl, чтобы дергать rpc, вот они и будут друг другу эти методы дрочить. У сервиса в главном процессе будет дергать oonPlayStart(), onPlayPause(), onPlayStop(), onPositionChanged(), который будет прокидывать их в ui. У сервиса в другом процессе будут дергаться play(), seek(), pause(), stop().

Ответы>>747118

178 Кб, 662x617

Бугурты по IO 18 Май, 20:29 #393 #747100

Ну наконец будет с кем поговорить, осталось ей только кошачьи-ушки одеть и голос по приятнее сделать.

Ответы>>747115

18 Май, 20:41 #394 #747115

>>747100
А что это?

Ответы>>747122

18 Май, 20:43 #395 #747118

>>747084
>два сервиса
Звучит как хуйня.

Ответы>>747119

18 Май, 20:47 #396 #747119

>>747118
Ну, ты можешь использовать бродкасты.

18 Май, 20:48 #397 #747120

>>746691
>>746741
Нет, приложение хоть и было хуёвым, но более-менее вменяемым. Оно до сих пор там есть, просто дело было 4.5 года назад уже.
А написал я потому что охуели нынче школьники. Сейчас миллион материалов по программированию под андроид, ссылки в оппосте, видео, миллион готовых решений. Нет, не хочу, хочу "сап посаны, я школота, накидайте мне гайдов :)))". У меня такого не было, хотя я каким-то выдающимся себя не считаю. Наоборот, по сравнению с местными я днище уже, тем более во время универа я разработку забросил.

18 Май, 20:49 #398 #747122

>>747115
Умный Дилдак от гугла на агдроиде конечно же.
Сможешь с ним разговаривать когда будешь садиться на него.

Еще больше изврата прямо по ссылке http://google.com/io

Ответы>>747123

18 Май, 20:50 #399 #747123

>>747122
А ДАВАЙЕТ ВОЗЬМЕМ ХОРОШЕЕ ОТ ТЕЛЕГРАМА И ЗАХУЯРИМ ТУДА АВТООТВЕТЫ?

18 Май, 21:27 #400 #747162

>>746987
Запилил коллбэк для обновления сикбара, для этого в активити создал поток, который обращается к сервису и обновляет сикбар, но почему-то код работает даже тогда, когда я выполняю обновление позиции сикбара прямо в параллельном потоке, хотя такого быть не должно, т.к. ни один поток кроме главного не имеет доступа к UI. Что я сделал не так?

Ответы>>747193

18 Май, 22:05 #401 #747193

>>747162
> для этого в активити создал поток
Ты уверен, что он это отдельный поток, а не хендлер на главном?

Ответы>>747433

18 Май, 22:35 #402 #747235

Скопировал вашу шапку в свой гайдик по джаве https://github.com/qqqlll/Java-Thread/wiki/Android

Реквесты по изменению/добавлению ссылок можете оставить здесь или на гитхабе.

Ответы>>747240>>747241>>747288

18 Май, 22:38 #403 #747240

>>747235
Ну учитывая что там я пишу про кскамарин и джаваскрипт, то это не слишком соответствует тематике, наверное стоит почистить.

18 Май, 22:39 #404 #747241

>>747235
А нет, все ок, почистил, молодец.

18 Май, 22:49 #405 #747257

http://vk.com/softdesigneducation для тех кто хочет начать мб полезно будет

18 Май, 23:16 #406 #747288

>>747235
Зачем wiki pages, если все влезло бы в один readme.md?

Ответы>>747321

18 Май, 23:38 #407 #747321

>>747288
Там разметка удобная.

19 Май, 06:23 #408 #747433

>>747193
Да, я даже нашел топик с такой же ситуацией http://stackoverflow.com/questions/5161951/android-only-the-original-thread-that-created-a-view-hierarchy-can-touch-its-vi. Попытался как ОП того топика обновить текст для TextView внутри этого треда и так же получил вылет приложения а-ля "Только главный тред может работать с UI". В топике никто не объясняет почему так происходит, лишь предлагают запустить поток методом runOnUiThread что мне тащемта не нужно, ибо сикбар обновляется и так. Я конечно сделаю по-православному и запилю хендлер, ну или runOnUiThread, но хотелось бы понять что не так. Могу кинуть код метода run если что.

Ответы>>747442>>747499

19 Май, 08:08 #409 #747442

>>747433
пиздец, откуда вы лезите только

Ответы>>747444>>747446

19 Май, 08:10 #410 #747444

>>747442
Из тваеий мамки)))

19 Май, 08:16 #411 #747446

>>747442
Ты уж пожалуйста либо поясни что не так, либо уебывай

19 Май, 10:50 #412 #747499

>>747433
Потому что вьюхи это ресурс (классы) в которых у методов нет синхронизационных секций,
тк они рассчитаны на использование с одного потока.
Если ты не понимаешь чем череват многопоточный доступ к объекту, который его не поддерживает,
то иди читай "Java Concurrency in Practice".

При этом разработчик Android понадеялись на адекватность разработчиков (видимо зря) и
не стали делать проверки правильности треда в каждом методе.

Ответы>>747507

19 Май, 11:04 #413 #747507

>>747499
Ты кажется не понял меня, я понимаю чем чреват многопоточный доступ, я не понимаю почему seekBar является исключением и прекрасно обновляет свою позицию даже не из главного потока, хотя делать этого не должен. Потому что изменение позиции seekBar не рассматривается как изменение состояния UI? По каким-то другим причинам? В этом вопрос.

Ответы>>747508

19 Май, 11:10 #414 #747508

>>747507
Да при чем здесь "изменение состояния", это объект который не поддерживает многопоточный доступ - ВСЕ.
То что там что-то работает (конкретно на твоем телефоне) это просто совпадение.

Использование объекта с неправильного потока, НЕ вызывает АВТОМАТИЧЕСКИ исключение.
Тут видимо просто забыли добавить проверку (или посчитали не нужным, тк НЕадекватов как-ты единицы).

Ответы>>747511>>747513

19 Май, 11:18 #415 #747511

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

19 Май, 11:25 #416 #747513

>>747508
>Использование объекта с неправильного потока, НЕ вызывает АВТОМАТИЧЕСКИ исключение

А разве CalledFromWrongThreadException это не то самое исключение?

Ответы>>747516

19 Май, 11:32 #417 #747516

>>747513
Оно не происходит автоматически, вот тут есть метод checkThread()
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/view/ViewRootImpl.java/#6355
Его дергает вью при обновление и оно уже бросает исключение.

Соответственно если это метод не вызван перед выполнением, то у тебя все отработает.
Но это уже будет undefined behavior.

Ответы>>747518>>747526

19 Май, 11:33 #418 #747518

>>747516
> Но это уже будет undefined behavior
... если ты делаешь вызов с другого потока

5 Кб, 406x131

19 Май, 11:39 #419 #747526

>>747516
Спам-лист

19 Май, 13:59 #420 #747601

Есть ли резон страдать WeakReference-ами в ViewHolder ? В частности на ImageView.

Ответы>>747604

19 Май, 14:06 #421 #747604

>>747601
Нет, когда они отцепятся от адаптера все почистится. А так только дрочить сборщик этими референсами будешь.

Ответы>>747605>>747607

19 Май, 14:07 #422 #747605

>>747604
Окей, а в каких случаях его стоит использовать ?

Ответы>>747606>>747870

19 Май, 14:08 #423 #747606

>>747605
Здесь советовали для хендлеров, например.

Ответы>>747608

19 Май, 14:08 #424 #747607

>>747604
У меня просто странная ситуевина, количество занимаемой оперативы увеличивается примерно на 60кб внезависимости от того, сколько элементов в ресайклере, при триггере onPause - onResume. Не думаю, что критично, но хочется причину найти

Ответы>>747611

19 Май, 14:09 #425 #747608

>>747606
Вроде как некоторые кастомные вьюхи не ресайклятся самостоятельно

19 Май, 14:09 #426 #747611

>>747607
p.s. Возможно, что виноват flow, не так давно начал его юзать, но вроде как по исходникам он особо там не должен ничего сохранять каждый раз по-новой

19 Май, 14:32 #427 #747629

Да, к слову, никто не знает, как сохранить текущее состояние вьюхи с использованием flow ? Вроде как у них написано, что это происходит автоматом, но не очень на то похоже. Пока что склоняюсь к кэшированию в локальную БД ( есть список на экране, который неплохо бы в onResume восстанавливать в том же состоянии, в котором он и был ) всех данных и их состояния, но на вскидку получится довольно тяжеловесно, если учесть, что список может быть на n*10^3 позиции, а в итемах присутствует не хило так картинок и данных

Ответы>>747641

19 Май, 14:51 #428 #747641

>>747629
Мда, представляю какая у тебя там каша спагетти, лазанья - выбирай сам.
Видимо забота о контролирование сложностью проектов НЕ для тебя.

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

Ответы>>747649>>747652>>747662

19 Май, 14:56 #429 #747649

>>747641
Нет, поддерживать это буду я, то небольшой учебный стартап. В принципе то каши и нету, и выглядит приятно вполне. Единственная проблема - вот эта вот утечка и сохранение state-ов. Со всем остальным, что есть, работать я уже давно научился.
Фактически, там получается классический набор ( по кр. мере для меня ) для клиент-серверки: rx, retrofit, flow, butterknife, ну и vk/fb/gmaps/gcm )

Ответы>>747678

19 Май, 14:59 #430 #747652

>>747641
Проблемы только с view-частью, там мерзкий lifecycle порой покоя не дает, все еще не привык к нему нормально :( Все думаю записаться на курсы какие-нибудь, где построют теорию вменяемую, но времени нету. Только только 11 класс заканчиваю, плюс хочу на стажировку пойти на пару месяцев куда-возьмут, или, в идеале - джуном. Благо уже даже в gplay публиковал свой "ужас". Но то был совсем бешеный пиздец, еле-еле добили до конца приложение. За три недели кое-как сделали не самый простой заказик и теперь только под своим началом что-либо клепаем

Ответы>>747678

19 Май, 15:22 #431 #747662

>>747641
Можешь посмотреть если хочешь, кинь сюда линк на свой гитлаб - добавлю. Только закоммичу через пару дней вменяемую версию с окончательным перекатом с фрагментов на flow

19 Май, 15:44 #432 #747668

Да, к слову, как можно минимизировать объем оперативы, пожираемый гугл картой из API_V2 ? А то она пиздос какая жирнявая. Просто в рот ебал.

Ответы>>747669

19 Май, 15:45 #433 #747669

>>747668
порядка 50 мегов хамает просто без маркеров, без нихуя

Ответы>>747809>>747814

19 Май, 16:08 #434 #747678

>>747649 >>747652
Хм, не хочу никого осуждать, скажу только imho: меньше -> лучше
(меньше библиотек, меньше зависимостей, меньше состояний/мутабильности, меньше кода == меньше сложность).
Чем ниже сложность - тем проще поддерживать ПО (и через год не появится желание переписать с нуля).

Тебе бы пойти куда-нибудь работать (не обязательно сразу в yandex), чтобы тебе это взрослые-авторитетные дяди объяснили.

> в onResume восстанавливать в том же состоянии, в котором он и был
Вот тут очевидно что у тебя слишком много состояний, почему так (перегруженный UI, много промежуточных стейтов)?

Ответы>>747679>>747740>>747743

19 Май, 16:10 #435 #747679

>>747678
> Тебе бы пойти куда-нибудь работать (не обязательно сразу в yandex), чтобы тебе это взрослые-авторитетные дяди объяснили.

С чего ты взял, что везде работают взрослые авторитетные дяди?

Ответы>>747687

19 Май, 16:21 #436 #747687

>>747679
Относительно 11-классника, это кто угодно закончивший вуз + >2 года опыта.

19 Май, 17:43 #437 #747740

>>747678
Я долго думал как бы получше сделать этот экран, в итоге сделал его с RecyclerView, который уже содержит в себе хэдеры, футеры и прочее. Так что не то чтобы много состояний.

19 Май, 17:45 #438 #747743

>>747678
я и не нацелен на то чтобы "сразу в яндекс". Собственно от стажировки/работы джуном я просто хочу опыта, дальше скорее всего фриланс

19 Май, 18:49 #439 #747809

>>747669
на каком девайсе? если на каком-нибудь нексусе с 2gb оперативы, 50 отожраных метров - это норма

Ответы>>747823

19 Май, 18:53 #440 #747814

>>747669
на каком девайсе? если на каком-нибудь нексусе с 2gb оперативы, 50 отожраных метров - это норма

19 Май, 19:06 #441 #747823

>>747809
galaxy s tab

Ответы>>747845

19 Май, 19:38 #442 #747845

>>747823
>>3 GB RAM Memory

19 Май, 20:13 #443 #747870

>>747605
Практически никогда. Серьёзно. Если возникнет ситуация, когда им нужно пользоваться, — у тебя уже будет достаточно опыта и ты уже сам поймёшь.

Ответы>>747932

19 Май, 21:23 #444 #747932

>>747870
вроде видел как адаптер в него пихали для ресайклера, не уверен

19 Май, 21:32 #445 #747935

Анон аноныч подскажи совет начинающему нубу как лучше всего реализовать пользовательскую авторизацию? Отдельное активити или фрагмент? Где и как хранить логин/пароль.

Ответы>>747955

19 Май, 22:00 #446 #747955

>>747935
Единственно верный вариант: https://developer.android.com/reference/android/accounts/AccountManager.html

Никаких shared prefs и sqlite для хранения credentials.

Ответы>>747959>>748242

19 Май, 22:03 #447 #747959

>>747955
> 2016
> хранить что-то кроме куков
> не использовать OAuth2

Ответы>>747960

19 Май, 22:06 #448 #747960

>>747959
Не куки, а access token.

Ответы>>747999

19 Май, 22:56 #449 #747999

>>747960
Не куки, а пропуск в брюки.

20 Май, 09:58 #450 #748171

А ведет ли кто-то список всех встречающихся девайсозависимых багов? Если нет, было бы вам интересно начать вести такой в гитхабе например?

Ответы>>748177

20 Май, 10:03 #451 #748177

>>748171
Костылей в программе много не бывает?

Ответы>>748186

20 Май, 10:17 #452 #748186

>>748177
Костыли костылями, но сранный мейзу мне сейчас сбивает паддинги у текстинпутедиттекста например. С учетом того, что они явно заданы в стиле.

20 Май, 11:27 #453 #748242

>>747955
А в случае если нужно хранить очень много инфы пользователя ?

20 Май, 14:16 #454 #748356

реально ли найти работу джуну? Че то мне кажется нихуя

Ответы>>748360

20 Май, 14:31 #455 #748360

>>748356
Сначала иди джуном на обычный десктоп. Потом

Ответы>>748370

20 Май, 14:45 #456 #748370

>>748360
ты про EE? По свингам и всяким джава эфиксам вообще ничего не видел

Ответы>>748414>>748554

20 Май, 15:34 #457 #748414

>>748370
На Xamarin дохуя видел.

Ответы>>748491>>748555

20 Май, 17:03 #458 #748491

>>748414
>99 вакансий на всё снг

20 Май, 18:07 #459 #748554

>>748370
Дойчебанк и люксофт для дойче - куча вакансий на эту тему.

20 Май, 18:08 #460 #748555

>>748414
Xamarin - это как PHP, но только в мире мобильной разработки.

21 Май, 12:18 #461 #749112

Анон, реально вкатиться в андроид-программирование если до этого в IT не работал?

Ответы>>749132

21 Май, 12:43 #462 #749132

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

21 Май, 13:26 #463 #749200

>>743301 (OP)
А почему бы не писать приложения на js? В чем подводные камни? Сразу и на яфон и под андроид.

Ответы>>749280>>749290

21 Май, 13:51 #464 #749237

скажите, вот собрал я в instant run приложение. деплоится конечно быстро - и это круто. Однако если посмотреть внутрености apk - там лежит несколько dex файлов(т.е. включен multidex) + instant_run.zip файл. Можно ли как-то по быстрому отключить это говно, чтобы залить в стор норм apk?

Ответы>>749281>>749400

21 Май, 14:39 #465 #749280

>>749200
Никаких подводных камней. Сплошные плюсы.
Я вообще думаю, что нужно Linux на JavaScript переписать: сразу же столько новых возможностей появится и коммьюнити будет больше.

21 Май, 14:40 #466 #749281

>>749237
Ты debug-сборку в Play отправлять собрался?

21 Май, 14:47 #467 #749290

>>749200
Вроде как далеко не весь функционал удобно на js писать, но то мое ИМХО, особо не вникал.

21 Май, 16:56 #468 #749400

>>749237
assembleRelease должен собрать нормальную сборку, но я не уверен, не пользуюсь инстант раном.

Ответы>>749423

21 Май, 17:13 #469 #749423

>>749400
Я всегда для релизов юзаю "генерейт сайнинг апк". Хуй знает, может это глупо, но уже привычка.
assembleRelease - юзаю чтоб sha1 посмотреть.

Ответы>>749449

21 Май, 17:30 #470 #749449

Пробовали уже новые плюшки? Firebase? Autolayout ConstraintLayout?

>>749423
Удобнее singningConfig прописать в градле и делать assembleRelease.

Ответы>>749554

21 Май, 18:12 #471 #749498

Sup! Пацаны, вот в этом видео типаня на 4ой минуте задает какие то строки, которые потом должны получаться картинками. Но они нихуя не получаются. Мб он что то еще юзает или это стандартные какие то константы в андроиде?
Просто я ньюфаг и ебусь с этой парашей уже 2 дня.
https://www.youtube.com/watch?v=1tDsf7Sw6-U

Ответы>>749670

56 Кб, 580x700

21 Май, 18:49 #472 #749546

ТРЕД НЕ ЧИТАЙ - СРАЗУ ЗАДАВАЙ
Надоело пилить AsyncTask в каждой Activity. Хочу такую библиотеку чтобы в одну строчку можно было указать url картинки и ид вьюшки. Недавно случайно наткнулся на Volley, но на деле там не то, что обещают. Еще увидел android-query(https://code.google.com/archive/p/android-query/), но не нашел для нее примеров использования. Знаю еще, что есть picasso, но чем-то она меня отталкивает.
А мне нужно реализовать ListView с картинкой и строками в каждом пункте (как на пике). Важный момент: адрес картинки у меня возвращается кастомным методом, указывая который в качестве аргумента конечно словит исключение.
Что посоветуете?

Ответы>>749580

21 Май, 18:54 #473 #749554

>>749449
>Удобнее singningConfig прописать в градле и делать assembleRelease.
Куда оно апк помещает в таком случае?

Ответы>>749680

21 Май, 19:08 #474 #749580

>>749546
> Что посоветуете?
Повеситься.

> Хочу такую библиотеку чтобы в одну строчку можно было указать url картинки и ид вьюшки
Glide, Picasso, Universal Image Loader
Отталкивает, не нравится — ну тогда напиши свою либу и не задавай глупых вопросов.
> адрес картинки у меня возвращается кастомным методом, указывая который в качестве аргумента конечно словит исключение
Подъезжая к вокзалу, у меня слетела шляпа. Прекрасный повод переписать по-нормальному.

21 Май, 20:13 #475 #749670

>>749498
Это скорее всего какие-то коды символов. Так что то там иконки тупо текстом получаться.

21 Май, 20:29 #476 #749680

>>749554
Там же, где и все остальные apk, в папке build.

Ответы>>749854

21 Май, 23:00 #477 #749854

>>749680
При генерейт сайнинг апк апк помещается в папку с апликухой.

Ответы>>749858

21 Май, 23:03 #478 #749858

>>749854
Неправда

Ответы>>749979

22 Май, 00:35 #479 #749942

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

Ответы>>749947>>750220>>750330

22 Май, 00:42 #480 #749947

>>749942
Ты как-то странно объясняешь, может ты чего-то не понимаешь, что значbт менять API? Если ты про xyi.pizda/api/weather?city=tagil и хочешь получить в геленджике, а не тагиле, то надо просто запрашивать xyi.pizda/api/weather?city=gelendjik, никакой смены API.

Ответы>>749969

22 Май, 01:04 #481 #749969

>>749947
ну я не догоняю просто
тип в видосике сделал менюшку, в которой меняет город и показывает его погоду
а я не догоняю как он это делает
ведь для этого надо загонять новую АПИ
линк на видосик: https://www.youtube.com/watch?v=1tDsf7Sw6-U

Ответы>>749981>>749995>>750220

22 Май, 01:10 #482 #749979

>>749858
Кому ты пиздишь? Апк будет в папке app.

sage 22 Май, 01:11 #483 #749981

>>749969
Тебе уже ответили, что делать. Думать и васяновидосики за тебя смотреть никто не собирается.

Ответы>>749990

22 Май, 01:17 #484 #749990

>>749981
тот ответ содержал и так понятные истины
а меня интересует именно конкретный ответ

Ответы>>749992

sage 22 Май, 01:23 #485 #749992

>>749990
Предлагаю тебе пойти нахуй.
Достаточно конкретно?

Ответы>>749999

22 Май, 01:28 #486 #749995

>>749969
Сделай функцию генерации урла для запроса, если поп рсотому то:
return String.format("xyi.pizda/api/weather?city=%s", cityName);
В реальных проектах это конечно не так делается.

Ответы>>749998>>749999

22 Май, 01:36 #487 #749998

>>749995
но ведь тогда надо будет загонять новую АПИ
просто я задаю АПИ строкой и из него все парсю
вот видосик: https://www.youtube.com/watch?v=1tDsf7Sw6-U
тип в видосике сделал менюшку, в которой меняет город и показывает его погоду
а я не догоняю как
АПИ ведь загонять придется новую

22 Май, 01:51 #488 #749999

>>749992
я просто попросил помощи и не получил ответ
че ты агришся, даун?
>>749995
а вот как он делает через
connection.addRequestProperty("x-api-key",
context.getString(R.string.open_weather_maps_app_id));
так можно реализовать?

Ответы>>750000>>750092

22 Май, 02:03 #489 #750000

>>749999
нет

22 Май, 09:23 #490 #750092

>>749999
Анончик, а почему ты разговариваешь как 14-летний даун-аутист?

Ответы>>750190

22 Май, 12:40 #491 #750190

>>750092
хз
я даже не помню, что вчера тут делал
))0

22 Май, 13:24 #492 #750220

>>749942
>>749969
бросай свои паршивые васяновидосы и дуй на udacity смотреть официальный курс от гугла.

Тем более, что на курсе они делают ровно тоже самое и скорее всего твой васяновидос оттуда все слизал подчистую

Ответы>>750231

22 Май, 14:02 #493 #750231

>>750220
Школьник иди нахуй со своим курсам, этот тред для крепки мидлов/синьеров

Ответы>>750262

22 Май, 14:43 #494 #750262

>>750231
> этот тред для крепки мидлов/синьеров
Эх, если бы...

22 Май, 15:04 #495 #750289

Какие шансы создать казуальную игру и иметь доход с рекламы в ней хотя бы тысяч десять в месяц? Насколько это реально? Хватит ли года 24/7 учебы серьезной? Пр условии, что я знаю простейшие аспекты программирования, и пару тройку программ-парсеров на андроид создавал. Знаете, просто очень хочу создать своё творение в виде игры, но мне больно смотреть на то, что многие игры, сделанные другими людьми, просто невостребованны на рынке Google Play. Это же огромная почва для грусти, когда твои потраченные часы не окупаются даже радостью людей, не то что деньгами.

Ответы>>750313>>750346

sage 22 Май, 15:31 #496 #750313

>>750289
Если у тебя нет хотя бы $5k на рекламу, то никакх.

Стор завалин фритуплейным парашей погорло, а ведь есть еще фирмы которые зарабатывают копипастой успешних игр.
Знаю одну такую, там работают сотни "разработчиков", которые конвеером выпускают это гавно.
Google их конечно переодически банит, но их это не останавливает - больше сотни аккаунтов (и это только одна фирма).

22 Май, 15:48 #497 #750330

>>749942
Что в твоем понимании представляет из себя API ? Ты уверен что понимаешь значение этого слова ?

22 Май, 15:50 #498 #750332

Да, к слову, снова 11-класснико-блядь пишет в тред. [С надеждой в голосе] Может кто-то все-таки делал свое сохранение стэйта с использованием flow для того чтобы при проходе вверх по бэкстэку экраны оставались в том же состоянии что и вниз ?

Ответы>>750337

22 Май, 15:54 #499 #750337

Кто уже поюзал Firebase Database? Как в нем эффективно работать со списками? А то у меня сейчас 1к мелких объектов полностью считываются в память, а из интерфейсов только iterator по ключам есть, без случайного доступа.
Можно конечно было бы сначала считать только ключи, и ходить в DataSnapshot по этому ключу по необходимости, каждый раз десериализуя объект, но это как то звучит левачно.

>>750332
Да flow мало используется, нахуй ты его вообще брал. Тебе даже его никто не советовал здесь.

Ответы>>750342>>750388>>750396

22 Май, 16:01 #500 #750342

>>750337
Firebase это бд, которая позволяет напрямую из андроида работать с ней без апи, я правильно понял?

Ответы>>750343

22 Май, 16:05 #501 #750343

>>750342
Ну как без апи, у нее есть rest api, но соль в том, что через сдк она самообновляемая. Т.е. на объект вешаешь листнер, и этот колбек отработает, как только с этим объектом что-то случится.
Да и до полноценной бд как до берлина. Фильтрация у меня чет не запахала, сортировка только по одному полю. Для серьезных проектов не подойдет, но для какого-нибудь мелкого проекта думаю сойдет.

22 Май, 16:08 #502 #750346

>>750289
где то была стата, что 5% разработчиков, собирают 90% прибыли, остальные сосут хуи. Вот и думай, попадешь ли ты в эти 5%

105 Кб, 1280x800

22 Май, 16:38 #503 #750376

>>749549 (OP)
Анончики, задаваю этот вопрос сразу в 2х тредах по C# и Java.

Есть знания в области геймдева со стороны 3D графики.
Хочу начать изучать кодинг.

И вот вопрос:
Что же будет перспективнее и более реально в соотношении время обучения/возможности на этом зарабатывать? На чем реальнее и перспективнее будет делать простые игры для мобилок?

Как вариант это уже более-менее знакомый мне Unity + C#
Либо Java + другой движок

И в чем из этих языков будет проще отстраниться от конкретно геймдева в сочетании с движком и уйти просто в кодинг, не завязанный на играх вообще?

22 Май, 16:52 #504 #750388

>>750337
Он оказался удобным дофига. Плюс абстракция то будет поболее, чем со фрагментами. И практически полная замена EventBus-а сервисами ( flow-овскими )

Ответы>>750460

22 Май, 17:02 #505 #750396

>>750337
И да, в 17 треде советовали вроде ( помню что было, точно не припомню, может и в 16 ). Принципиально иной подход, но он блять удобен и более кампактен + абстрагирован. И под mvp тот же заточен больше

Ответы>>750460

22 Май, 17:44 #506 #750417

Парни, мигрировал с gcm на fcm, теперь при попытке запустить приложение на устройстве вот такая ошибка. Погуглил, ничего толкового нет, пробовал переустанавливать приложение, чистить проект и ещё пару штук. Просто вот 5 минут назад билд был, а теперь нихуя. Как найти решение?

pkg: /data/local/tmp/com.huy.pesda
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

Installation failed since the APK was either not signed, or signed incorrectly.
If this is a Gradle-based project, then make sure the signing configuration is specified in the Gradle build script.
Error while Installing APK

Ответы>>750423>>750463

22 Май, 17:51 #507 #750423

>>750417
в translate.google.com можем ?)

Ответы>>750426

22 Май, 17:54 #508 #750426

>>750423
Эх, сейчас бы в 2016 на русском гуглить. Можем, конечно же.

22 Май, 18:07 #509 #750460

>>750388
>>750396
Что ты чешешь? Нахуярил абстракция удобнее и тд, а сам ебеться уже неделю с ним.

Ответы>>750464

22 Май, 18:08 #510 #750463

>>750417
Что за хуйня, недавно только мигрировались с C2DM на GCM?

Ответы>>750478

22 Май, 18:09 #511 #750464

>>750460
У меня по нему один вопрос неделю остается, но на крайняк сделаю кэширование в локальной бд, благо это просто + всяко оффлайн режим пилить нужно будет. В остальном же помимо state-а меня flow устраивает более чем

Ответы>>750483

22 Май, 18:17 #512 #750478

>>750463
После IO появилась та же хуйня от firebase.
https://developers.google.com/cloud-messaging/android/android-migrate-fcm#import_your_gcm_project_as_a_firebase_project

Ответы>>750482

22 Май, 18:19 #513 #750482

>>750478
Дак а профиті появились какие-то? ГСМ не закрывается хоть?

Ответы>>750484

22 Май, 18:21 #514 #750483

>>750464
Уже есть тысячи вариаций архитектуры мвп с активити и фрагментами, зачем нужны ноунейм фловы?
Нет на полном серьезе? Если бы это было нормальное решение коммьюнити бы уже его продвинуло, но нет.

Ответы>>750506

22 Май, 18:21 #515 #750484

>>750482
Стабильнее, кода меньше и прочее.
Мне-то, блять, что делать?

Ответы>>750492

22 Май, 18:33 #516 #750492

>>750484
так нахуй перекатываться, gcm же будет жить?

Ответы>>750493

22 Май, 18:34 #517 #750493

>>750492
Мне похуй, я люблю новые технологии, хочу перекатиться туда.

Ответы>>750500

22 Май, 18:38 #518 #750500

>>750493
Бля, это не новые технологии, я уверен их файрбейс тот же гсм.

22 Май, 18:43 #519 #750506

>>750483
Ну посмотри что-ли, может поймешь, когда прикинешь как это по-сравнению с фрагментами профитно.

Ответы>>750508

22 Май, 18:45 #520 #750508

>>750506
Коммьюнити забила хуй, мне то зачем оно?

Ответы>>750511

22 Май, 18:46 #521 #750511

>>750508
Ну ты же хочешь понять, зачем нужны ноунейм фловы. Мое дело сказать, твое - решат что будешь делать. Я просто говорю, что использовать flow, ИМХО, профитнее

22 Май, 19:06 #522 #750548

Че скажите про Constraint Layout? Как по мне хуйня для новичков, которых пугает xml, не?

Ответы>>750584

22 Май, 19:25 #523 #750584

>>750548
вроде в нем заебешься что-то сложное делать

Ответы>>750599

22 Май, 19:36 #524 #750599

>>750584
Уже полгода делаю в нем проект. Это аналог лейаута из айос. Там в принципе очень удобно, если понять, для чего он тебе. .

Ответы>>750601

22 Май, 19:37 #525 #750601

>>750599
Всмысле полгода? Его же только презентовали.

Ответы>>750614

22 Май, 19:44 #526 #750611

>>743301 (OP)
ПЕРЕКАТ
https://2ch.hk/pr/res/743301.html (М)
https://2ch.hk/pr/res/743301.html (М)
https://2ch.hk/pr/res/743301.html (М)
https://2ch.hk/pr/res/743301.html (М)

Ответы>>750612>>750613

22 Май, 19:45 #527 #750612

>>750611
кхм

22 Май, 19:46 #528 #750613

>>750611
То конечно хороший перекат, я люблю рекурсию, но...

22 Май, 19:46 #529 #750614

>>750601
Есть аналог - cassowary-layout..

22 Май, 19:49 #530 #750615

>>743301 (OP)
ПЕРЕКАТ
https://2ch.hk/pr/res/750609.html (М)
https://2ch.hk/pr/res/750609.html (М)
https://2ch.hk/pr/res/750609.html (М)
https://2ch.hk/pr/res/750609.html (М)

03 Июн, 19:32 #531 #760815

>>744766
Удвою.

05 Июн, 21:27 #532 #762598

Можете по программированию под андроид накидать годных книг? Если имеются адекватные переводы, то можно и их.

Тред утонул или удален.
Это копия, сохраненная 13 июня 2016 года.

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

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

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion