[Ответить в тред] Ответить в тред

03/04/16 - Набор в модераторы 03.04 по 8.04
26/03/16 - Конкурс: Помоги гомункулу обрести семью!
15/10/15 - Набор в модераторы 15.10 по 17.10



[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 531 | 24 | 101
Назад Вниз Каталог Обновить

Разработка под Android тред №19 Аноним # OP  14/05/16 Суб 16:31:01  743301  
14632326620060.jpg (14Кб, 604x453)
Продолжаем изучать замысловатые переплетения лайфсайкла фрагментов.

Предыдущий тред тут:
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.
Привет клиент-серверка.

Пишите в треде что добавить.
Аноним 14/05/16 Суб 16:34:40  743306
Пик нравился больше на прошлом треде :)
Аноним 14/05/16 Суб 16:35:25  743307
>>743306
Мне тоже, но у меня плохо получается находить такие.
Аноним 14/05/16 Суб 16:39:04  743313
>>743290
Спасибо, посмотрел. Я 19+, а NEW_DOCUMENT флаг 21+, вроде оно почти то же самое, что NEW_TASK.
Аноним 14/05/16 Суб 16:39:31  743315
>>743301 (OP)
Хватит плодить говнокодеров.
Добавь про принципы SOLID, MVP, MVC, MVVN паттерны а также книгу Блоха Effective Java.
Аноним 14/05/16 Суб 16:40:12  743319
>>743315
Как будто шапку кто-то читает.
Аноним 14/05/16 Суб 16:40:38  743322
>>743319
Не поверишь, читаем :D
Аноним 14/05/16 Суб 16:45:13  743329
14632335137490.jpg (60Кб, 459x497)
>>743315
> Android 2016
> книгу Блоха Effective Java
> Java
Аноним 14/05/16 Суб 16:46:06  743331
>>743329
https://www.youtube.com/watch?v=dJ-NA86bYQ4
Аноним 14/05/16 Суб 16:46:22  743332
>>743329
Отсоси
Аноним 14/05/16 Суб 16:48:41  743336
>>743315
>Хватит плодить говнокодеров.
Ты так говоришь будто бы от меня или тебя что-то зависит. Я все время натыкаюсь на пликухи где у апликейшн класса или активити пишется паблик статик метод гетКонтекст и потом юзается внутри разных модулей.

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

>книгу Блоха Effective Java
Давай тогда еще паттерны Gof, и еще кучу всего из мира программирования.
Аноним 14/05/16 Суб 16:51:37  743342
>>743336
> где у апликейшн класса пишется паблик статик метод гетКонтекст
И как же по другому получить контекст приложения из статик мест? Можно конечно сделать ехал синглтон через синглтон с DI, но я на это дохуя времени потрачу.
Аноним 14/05/16 Суб 16:52:20  743345
>>743336
> у апликейшн класса пишется паблик статик метод гетКонтекс
Ничего плохого в этом нет, в iOS такое метод есть по умолчанию (UIApplication.sharedApplication)
Аноним 14/05/16 Суб 16:52:54  743347
>>743336
Не надо у быдлоты ложное впечатление простоты программирования, и андроид разработки в частности создавать. Пишем все сюда, и GOF, и Java Concurrency in practice. Также можно добавить Макконелла, т-ща Фаулера. А то потом это говно начитается стартандроида, насоздает за полгода неподдерживаемое говно и тебе на новом месте работы приходится его расхлебывать.
Аноним 14/05/16 Суб 16:54:15  743349
>>743301 (OP)
Про фрагменты писать в ходе современных дискуссий аж в самой шапке моветон
https://corner.squareup.com/2014/10/advocating-against-android-fragments.html
Аноним 14/05/16 Суб 16:55:30  743351
>>743342
Но ты же понимаешь что это говноподход?
Аноним 14/05/16 Суб 16:56:13  743354
>>743351
Щито поделать, меня ебут по срокам, а не по качеству.
Аноним 14/05/16 Суб 16:56:30  743355
>>743349
Возвращаясь к теме меня-мудака и кучи фаргментов, после баттернайфа стало получше, спасибо. Что еще можно сделать и нужно ли юзать Glide.clear(%imageViewName%); в onDestroyView ?
Аноним 14/05/16 Суб 16:56:56  743357
>>743345
В жопу, покажи мне хоть одно адекватное приложение с таким подходом. Почему гуглы пилять передачу контекста аргументами, а ты такой дохуя умный решил пиздануть статик переменной?
Аноним 14/05/16 Суб 16:57:03  743358
>>743351
Если пофилософствовать то в этом говне Google виноваты в частности, нахера было God Object создавать такой. После частичного изучения IOS возникло впечатление, что там меньше индусов к Api подпускали.
Аноним 14/05/16 Суб 16:59:09  743366
>>743354
Шли в жопу свою работу если так дела обстоят
Аноним 14/05/16 Суб 16:59:26  743367
>>743357
Ты не маняврируй, а факты давай почему нельзя использовать.
Аноним 14/05/16 Суб 16:59:40  743369
>>743347
>тебе на новом месте работы приходится его расхлебывать.
Так всегда, правда я и в своем коде не уверен. Но пытаюсь писать без брейнфака.
>Java Concurrency in practice
Ну это ты уже тралишь. Явно лишнее. Хотя может понадобится на каких-то своих йобавелосипедах. Но тогда еще и литературу по с++ добавить можно.
Аноним 14/05/16 Суб 17:01:10  743371
>>743357
Гугловцы и провайдеры и async-таски используют и на java пишут,
но мы то знаем что это параша.
Аноним 14/05/16 Суб 17:01:17  743372
>>743342
>И как же по другому получить контекст приложения из статик мест?
Я тебе уже отписал на сообщение, но потом понял что меня смутило, каких нахуй статик мест? Я даже не помню чтоб у меня такие были. Статик методы только для генерации статик данных и всяких фабрик использую, ну еще всякие утилсы.
Аноним 14/05/16 Суб 17:02:42  743375
>>743367
Потому что ты говно пишешь, которое работает только из-за того что аппликейшн класс это синглтон.

>>743371
Не такая параша как статический гетконтекст.
Аноним 14/05/16 Суб 17:03:09  743377
>>743357
> покажи мне хоть одно адекватное приложение с таким подходом
Ой, нашел.
https://github.com/DrKLO/Telegram/blob/06473773a6f415c23fbd93d51996393b7e3ea626/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java
> public static volatile Context applicationContext;
Аноним 14/05/16 Суб 17:03:42  743379
>>743375
> Ты не маняврируй, а факты давай почему нельзя использовать.
Аноним 14/05/16 Суб 17:04:05  743380
>>743377
телеграм - не адекватное приложение
Аноним 14/05/16 Суб 17:04:10  743381
>>743379
Вопрос из разряда почему нельзя называть переменные с большой буквы.
Аноним 14/05/16 Суб 17:04:56  743383
>>743377
Будь тоньше.
А если ты и вправду думаешь что это хороший пример, то самое время вытаскивать голову из жопы.
Аноним 14/05/16 Суб 17:05:41  743386
>>743381
На вопрос отвечай.
Аноним 14/05/16 Суб 17:06:11  743388
>>743386
Уже ответил два поста придурок.
Аноним 14/05/16 Суб 17:06:33  743389
>>743369
Хотя бы базовые принципы должны все знать, что такое mutex, синхронизация. Типы ссылок (сильные, слабые, атомик...). Синхронайзд методы, эксекуторы. Это все на практике не раз мной использовалось. На одних асинк тасках и интент сервисах без знания основ далеко не уедешь.
Аноним 14/05/16 Суб 17:09:20  743396
14632349608800.gif (1758Кб, 331x197)
>>743381
> Вопрос из разряда почему нельзя называть переменные с большой буквы.
Значит ты признаешь себя безпруфным-кукаретиком,
который "где-то что-то слышал", но так и не понял почему?

другой-анон
Аноним 14/05/16 Суб 17:09:57  743398
>>743389
Ну хуй знает, тот же атомик сам по себе костыль. В джаве во всяком случае.
А так из перечисленного это основы, а в книге вангую начинабтся семафоры и пошло поехало.

Для обычных апликух я даже хз зачем это юзать.
Аноним 14/05/16 Суб 17:10:28  743400
Да, к слову, какие моменты помимо работы с битмапами через Glide могут заметно сократить использование оперативки ?
Аноним 14/05/16 Суб 17:12:01  743401
>>743398
А потом 95% херачат в коде handler в виде анонимного внутреннего класса. Чем хуево это, думаю не стоит объяснять?
Аноним 14/05/16 Суб 17:12:27  743403
>>743396
Вы какие-то дауны. Нет правда, тебе самом логика не подсказывает что делать статик геттер для поля которое без самого экземпляра класса не существует неправильно?
Этот трюк работает только с апликейшн который синглтон.
Но с таким успехом можно педалить методы и в активити, и вызывать из только внутри адаптеров на этих активити.
Оно сработает, но за такое в лицо плевать нужно.
Аноним 14/05/16 Суб 17:13:25  743405
>>743398
Atomic не костыль а вполне себе употребимая вещь в определенных ситуациях http://stackoverflow.com/questions/3964211/when-to-use-atomicreference-in-java
Аноним 14/05/16 Суб 17:15:37  743409
Кстати говнокодерство прогера конкретного прямо пропорционально количеству AsyncTask использованных в коде приложения
Аноним 14/05/16 Суб 17:19:13  743418
>>743401
правильное использование Bitmap, в том числе не использование оперативки для размещения изображения. Использование библиотеки андроида, там почти всё есть. В крайнем случае можно на c++ вынести обработку, нативная память не учитывается
Аноним 14/05/16 Суб 17:20:08  743420
>>743401
Ты про андроид хендлер сейчас?

Ты про то что будет ссылка на парент класс?
На самом деле озадачил, всегда хуярил андроид хендлеры как анонимные.
Аноним 14/05/16 Суб 17:22:01  743426
>>743405
Понял, но я вообще говорил о атомиинтеджерах и тд.
Аноним 14/05/16 Суб 17:26:36  743430
>>743403
> Но с таким успехом можно педалить методы и в активити
Во первых, хули ты сваливаешь все в один котел, мы с тобой говорим конкретно про Application.

> без самого экземпляра класса не существует неправильно?
Во вторых ты видимо не вкурсе, что
1) На все приложение есть только ОДИН экземпляр Application
2) Он создается один раз и не разрушается никогда (на него есть статические ссылки даже внутри Android)
3) Его метод onCreate(...) вызывается ВСЕГДА до создания любых активитей/провайдеров/ресиверов
Аноним 14/05/16 Суб 17:30:25  743433
>>743420
Про них.
Любой внутренний не статик класс содержит неявную ссылку на внешний класс. В результате получаются мемори лики. Кстати любители ещё часто асинхронный таски хуячить в виде анонимных внутренних классов любят
Аноним 14/05/16 Суб 17:30:25  743434
>>743430
Ты такой долбоеб что мне даже впадло тебе что-то писать.

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

Но также можно делать с активити, один в один, если юзать геттер в элементах которые отвечают только этому активити(мы так и делаем когда передаем его через конструктор но нахуй это нам, у нас же есть статик геттеры)
Аноним 14/05/16 Суб 17:32:55  743436
>>743430
Не пизди друг. Если у тебя в приложении например активити создаётся в отдельном процессе, то для неё отдельный новый экземпляр аппликейшена создаётся. Соответственно правильнее говорить создаётся один аппликейшена для каждого процесса. Нубье суда, ещё и пальцы гнет.
Аноним 14/05/16 Суб 17:34:28  743439
>>743433
Ну я об этом написал
>Ты про то что будет ссылка на парент класс?

Получается иннер класс и внешний держат ссылки на друг друга и всегда висят в памяти?
Аноним 14/05/16 Суб 17:34:33  743441
>>743436
>Если у тебя в приложении например активити создаётся в отдельном процессе
Ой блять ты как собрался ссылками между процессами обмениваться?
Нахуй ты это вообще сюда приплел?
Аноним 14/05/16 Суб 17:35:39  743443
>>743441
Кого ебет, суть в том что это говно не работает.
Аноним 14/05/16 Суб 17:36:14  743445
>>743441
Хуйню потому что написал. С процессами видно не работал, приложения визитки одни делал.
Аноним 14/05/16 Суб 17:36:36  743446
>>743434
Плиз хватит маневрировать и просто ответь на вопрос:

"Что конкретно плохого в использование статической ссылки на Application?
Аноним 14/05/16 Суб 17:39:07  743448
>>743446
>>743436
Аноним 14/05/16 Суб 17:39:17  743449
>>743439
Читай тут http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html
Аноним 14/05/16 Суб 17:40:40  743450
>>743445
Чини детектор, я делал приложения с несколькими процессами и знаю как это работает.
Так что ты меня на понт не возьмешь ;)

Еще раз, к чему ты приплел процессы?
Какая нахуй разница, сколько процессов если мне нужно допустим получить путь на локальный-кэш-каталог?
Аноним 14/05/16 Суб 17:42:38  743452
>>743448
И что?

Это ДВА РАЗНЫХ ПРОЦЕССА, они располагаются В РАЗНОЙ памяти.
Формально У КАЖДОГО процесса, есть только ОДИН экземпляр Application.
Аноним 14/05/16 Суб 17:45:04  743454
>>743450
Эту Хуйню потому что написал:

"Во вторых ты видимо не вкурсе, что
1) На все приложение есть только ОДИН экземпляр Application"
Аноним 14/05/16 Суб 17:46:15  743455
Писал бы сразу про процесс а не приложение. Тут нубские читают а ты их в заблуждение вводишь
Аноним 14/05/16 Суб 17:47:56  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.
Аноним 14/05/16 Суб 17:48:15  743458
14632372958020.jpg (776Кб, 1510x1600)
>>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
Аноним 14/05/16 Суб 17:49:19  743460
>>743458
Объясни людям почему нельзя тулить статик геттер в апликейшене.
Аноним 14/05/16 Суб 18:05:09  743478
Вот вам развернутый обзор почему делать статик ссылку на апликейшн контекст - удел говноделов. Правда в очень мягкой форме.
http://www.philosophicalhacker.com/2015/07/14/why-static-references-to-application-contexts-are-probably-not-the-best-idea/
Аноним 14/05/16 Суб 18:05:32  743480
>>743455
Они до тебя знать не знали, что приложение в Android может работать в нескольких процессах.
Аноним 14/05/16 Суб 18:08:08  743481
14632384886000.jpg (164Кб, 1024x819)
>>743458
Ой, кто-то сохранил мой пост. Держись товарищ, наше дело правое :)
Аноним 14/05/16 Суб 18:09:26  743483
>>743480
То что кто-то не может во второй абзац в доке, их проблемы, нет? Но суть не поменялась, новый процесс запускает новый аппликейшн.
Аноним 14/05/16 Суб 18:16:57  743490
>>743478
Всю статью можно свести к одной фразе: "Статическая ссылка на Application мешает Unit-тестированию".
Удивительно что ты сам не мог это сформулировать (может ты не пишешь тесты).

Ну и автор подтвердил что утечки памяти в таком случае это миф.
Аноним 14/05/16 Суб 18:17:11  743491
Анон, есть свободное время на работе, хочу вкатиться. Поставил студию, а прав для авд не хватает. Что делать? Как проверять свои хеллаворды?
Аноним 14/05/16 Суб 18:19:58  743494
>>743490
Никто и не говорил про утечки памяти.

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

И нет, тесты я не пишу.
Аноним 14/05/16 Суб 18:30:59  743512
Хочу попытаться сделать ровное МВП, куда смотреть? Хотел бы уже посмотреть примеры с RX и даггером по возможности.
Пока буду юзать джаву, как разберусь может и котлин испытаю.
Аноним 14/05/16 Суб 18:38:56  743521
>>743491
Там в настройках нужно в бубен побить - дебаг мод включится. Вниз, вперед, вниз, вперед, a попробуй.
Аноним 14/05/16 Суб 19:12:03  743549
А из-за чего могут быть утечки памяти в RecyclerView ?
Аноним 14/05/16 Суб 19:14:20  743555
>>743460
А почему у тебя это вызывает такую трудность? Что ты пробовал и в чем возник "затор неосиляторства"?
Аноним 14/05/16 Суб 19:19:28  743558
>>743555
Как объяснить людям что так делать не правильно, когда они кричат "но работает же"?
Аноним 14/05/16 Суб 19:19:55  743560
>>743549
Если есть иннер классы делай все статиками.
Аноним 14/05/16 Суб 19:20:14  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
Аноним 14/05/16 Суб 19:20:42  743564
>>743560
Все - в смысле ?
Аноним 14/05/16 Суб 19:20:58  743565
>>743558
> но работает же
Работает? Не трогай!
Аноним 14/05/16 Суб 19:21:34  743566
>>743560
Двачую этого чистюлю
Аноним 14/05/16 Суб 19:23:47  743568
>>743564
Ну это такая хорошая практика делать все иннер классы в адаптерах и активити статиком, чтоб не было неявных ссылок.
Пользуйся и других учи.
Аноним 14/05/16 Суб 19:25:21  743573
>>743565
Но это говнокод!
Просто я, учивжий жабу и прогу в целом, увидев такой подход внутри себя почувствовал негодования, я никогда не говорил что это не работает. Но я всегда буду говорить что это неправильно.
Аноним 14/05/16 Суб 19:26:51  743576
Господа, а есть тут желающие занять типовой разработкой приложения для доставки?
Аноним 14/05/16 Суб 19:28:21  743578
>>743576
>типовой разработкой
Чего?
Аноним 14/05/16 Суб 19:29:30  743580
>>743562
Если честно я сомневаюсь что это кому-то тут нужно.
Аноним 14/05/16 Суб 19:36:52  743583
А есть ли у кого-то простой пример с flow заместо фрагментов ?
Аноним 14/05/16 Суб 19:45:11  743592
>>743573
> Но это говнокод!
Говно-код - это то что в огромных количествах генерируют джуны (без присмотра старших).
А уж точно не статик-геттер в Appication.
Аноним 14/05/16 Суб 19:48:56  743596
>>743592
Не знаю, но мне оно кажется вырвиглазным дерьмом.
Также можно делать статик ссылки на шаред преференсы и тд через апликейшн.
Аноним 14/05/16 Суб 20:06:04  743611
>>743576
Сроки?
Аноним 14/05/16 Суб 20:10:45  743617
>>743578
зубного порошка спайса
Аноним 14/05/16 Суб 20:11:10  743618
>>743580
Не Якай
Аноним 14/05/16 Суб 20:12:46  743619
>>743618
>>743617
Тролленок в треде.
Аноним 14/05/16 Суб 21:20:55  743679
>>743521
А можно как-то сделать так, чтобы я кидал апк на свой кирпич, запускал его и видел, из-за какой строки оно крашится и текст ошибки?
Аноним 14/05/16 Суб 21:34:04  743693
>>743679
Используй LogCat.
Если хочешь чтобы без проводов - fabric.io
Аноним 14/05/16 Суб 21:56:22  743715
>>743693
>>743679
Я не сильно понял реквест, но дебажитьи по вайфаю можно, с фабриком это уже немного другое.
Аноним 14/05/16 Суб 21:59:45  743720
Решил заюзать в одной активити RecyclerView просто потому что адаптер для него пишется несколько приятнее, чем для обычного списка. Но вдруг оказалось, что его производительность при скролле весьма хуевая.
Поискал в гугле - нашел, что нужно поставить adapter.hasStableIds(true) - действительно, теперь Recycler скроллится очень плавно, но зато глючит просто пиздец как.
К примеру notifyItemChanged приводит к удалению элемента списка.
В списке из 50 разных элементов отображаются только 2 и они чередуются.

Откатываться к обычному списку или есть решения?
Аноним 14/05/16 Суб 22:03:39  743724
>>743720
>Но вдруг оказалось, что его производительность при скролле весьма хуевая.
Ох помню спорили в скайпе что наоборот он производительнее.

Если честно я и сам не замечал хуевость работы ресайклервью, у тебя елементы убер тяжелые или что?
Аноним 14/05/16 Суб 22:06:26  743725
>>743724
CardView внутри которого ImageView, linear layout из 10 TextView.
При скролле неприятно тормозит, причем так, как будто сборщик мусора охуевает.
Переделаю завтра на обычный список - скорее всего тормозить не будет.
Аноним 14/05/16 Суб 22:11:48  743730
>>743725
Покажи код адаптера.
Аноним 14/05/16 Суб 22:11:55  743731
>>743693
Точно, нагуглил, что стактрейс можно засунут ьв логкат, а логкат сохранить! Не знал об этом раньше.
А можешь рассказать про фабрик.ио, я что-то гуглил, так и не понял, что это?
Аноним 14/05/16 Суб 22:21:48  743734
>>743731
fabric.io - когда выпустишь приложение, эта штука будет собирать багрепорты в фоне. Причем такие же подробные как и LogCat.
Аноним 14/05/16 Суб 22:26:34  743736
>>743734
>выпустишь
В смысле, через гугл плей или просто когда залью его в этот фабрик?
Я хотел отслеживать краши до релиза. Добавил метод, пожмакал его, добавил другой метод, пожмакал.
Я так понял, залитые туда приложения не приватные и доступны всем? Приватность вроде за деньги или я не понял?
Аноним 14/05/16 Суб 22:27:40  743739
>>743736
fabric.io - это всего лишь программный модуль, который ты можешь вставить в свое приложение, чтобы получать информацию о крашах.
Аноним 14/05/16 Суб 22:36:41  743742
>>743730
https://gist.github.com/anonymous/ab5fd5cc36954b5e03c85ad7b95f0ccb
Аноним 14/05/16 Суб 22:47:43  743751
>>743742
> инфлейты в onBindViewHolder
Это же пиздец, разве нет?
Я бы на твоем месте запихнул в айтем ресайклервью, но с wrap_content по высоте. Он хотя бы сможет переиспользовать вьюхи песен в рамках одного вьюхолдера, а не в каждом бинде их инфлейтить.
Ну и вместо setVisibility сделал бы viewTyp'ы.
Аноним 14/05/16 Суб 22:51:43  743759
>>743751
А теперь пожалуйста на человеческом языке, еще раз и помедленней.
Аноним 14/05/16 Суб 22:55:50  743764
>>743751
>запихнул в айтем ресайклервью
Не будет проблем со скроллированием внешнего RecyclrView?
Аноним 14/05/16 Суб 22:57:21  743765
>>743759
Твоя реализация будет и на обычном ListView лагать, вот че.
Не делай инфлеты, вставь recyclerView прямо в элемент списка. Его адаптер будет на каждом бинде переиспользовать свои вьюхи.
setVisibility(GONE) вызывают перерасчет разметки элемента списка, что тоже будет затормаживать скролл. Вместо него используй разные viewType и разные вьюхолдеры.
>>743764
1. RecyclerView работает через NestedScrollView, а у него проблем с вложенностью нет.
2. У него же wrap_content, там скролла не будет, он займет всю высоту своих элементов.
Аноним 14/05/16 Суб 22:59:23  743767
>>743765
Ага, спасибо. Завтра сделаю - отпишусь.
Аноним 14/05/16 Суб 23:11:04  743782
>>743765
Спасибо, гуру!
Аноним 14/05/16 Суб 23:31:56  743793
>>743765
>setVisibility(GONE) вызывают перерасчет разметки элемента списка, что тоже будет затормаживать скролл.
Тут поподробнее.
Это как-то тупо делать две разных вью если мне допустим нужно добавить убирать какую-то мелочь. Тогда вьютайпов будет дохуя.
Да и у него рейсайклервью внезапно тоже должен вызывать перерасчет элемента списка.

>2. У него же wrap_content, там скролла не будет, он займет всю высоту своих элементов.
Вспомнил что не так давно это не работало из коробки и взлольнул.
Аноним 14/05/16 Суб 23:45:26  743800
>>743793
> Вспомнил что не так давно это не работало из коробки и взлольнул.
Но теперь то работает!
> Да и у него рейсайклервью внезапно тоже должен вызывать перерасчет элемента списка
А, ну да. А еще чет я загнул с визибилити, ведь несколько реквест лейаутов скомпануются через isLayoutRequested и отработают один раз.
Аноним 14/05/16 Суб 23:49:13  743803
>>743800
Да и я первый раз слышу что нельзя сет визибилити в итемах делать, так что хз.
Даже на стековерфлове в примерах так делают.
Аноним 15/05/16 Вск 01:14:18  743840
>>743765
Всм, а как без инфлейтов то туда итемы накидать ?
Аноним 15/05/16 Вск 01:23:10  743848
>>743840
Сказали же юзай ресайклервью.
Аноним 15/05/16 Вск 01:26:09  743852
>>743848
В адаптере как итемы добавлять то ?
Аноним 15/05/16 Вск 01:30:22  743856
>>743852
У тебя есть ресайлервью с итемами в которых будет ресайлервью. Уже во вложенном ресайклервью делаешь обычный адаптер с инфлейтом в онкриейтвью, но не в онбинд.
Аноним 15/05/16 Вск 01:38:24  743862
>>743856
Это же костыль, не ? Не проще ли просто сделать проверку на то, уже был заинфлейчен или нет лэйаут ?
Аноним 15/05/16 Вск 01:40:58  743863
>>743862
Ну такое, такой проверкой ты просто будешь эмулировать работу листа, учитывая что еще нужно делать проверку сколько итемов показать, сколько спрятать.
Так что ресайклервью заюзать выглядит ровнее чем руками педалить велосипед.
Аноним 15/05/16 Вск 01:42:13  743864
>>743863
Но не ресайклервью в ресайклервью то блин, ужасно даже звучит
Аноним 15/05/16 Вск 01:43:56  743866
>>743864
Просто мозгами пошевели в чем суть листов.
Ты предлагаешь эмуляцию их работы писать руками.
Аноним 15/05/16 Вск 08:04:09  743908
14632886494680.png (19Кб, 659x60)
14632886494681.png (18Кб, 542x88)
Пишет анон, который задавал вопросы про геолокацию в бэкграунде. Дописал самый простой сервис, который запрашивает LocationUpdate. Стал прописывать имя в манифесте, само имя класса MyService.kt.
Вопрос по 2-му скрину.
Вот код
http://ideone.com/rkImys
Аноним 15/05/16 Вск 08:07:54  743909
ОП, ТЫ В ГЛАЗА ДОЛБИШЬСЯ? ЕСТЬ КОНФА В ТЕЛЕГРАМЕ, ПОЧЕМУ ДО СИХ ПОР ОНА НЕ В ШАПКЕ?
telegram.me/AndroidChan
Аноним 15/05/16 Вск 09:19:13  743937
>>743908
val intent = Intent(this, MyService::class.java)

P.S.
Советую убрать "abstract" перед "class MyService" иначе у тебя упадет при старте.
Аноним 15/05/16 Вск 09:35:40  743942
>>743909
Она слишком унылая. Половина чата - треп о какой то хуйне.
Аноним 15/05/16 Вск 09:59:43  743954
>>743403
> Этот трюк работает только с апликейшн который синглтон.
Верно. Аппликейшен существует всегда во время работы приложения в единственном экземпляре. Так в чём проблема сделать его синглтоном?
> Но с таким успехом можно педалить методы и в активити, и вызывать из только внутри адаптеров на этих активити.
Типо ты приравнял два разных случая и это уже называется аргументом? Активити не всегда существует во время существования процесса, одной и той же активити может быть много, это потенциальная ошибка и новая условность в стиле "этот метод работает только когда существует активити, не вызывайте его в другое время, спасибо".
Аноним 15/05/16 Вск 10:01:57  743955
>>743454
Пиздец, нашёл, до чего доебаться.
Аноним 15/05/16 Вск 10:07:03  743957
>>743409
Найс пердёж в лужу.
Аноним 15/05/16 Вск 10:14:34  743964
>>743909
одну трахаешь,неопытную - как будто в мышиный глаз,а другую,имевшую много партнеров и часто - там член летает ,как воробей по сараю.
ну и внешний вид у них неприятный,особенно с большим пробегом)
>>743942
двачую, мимо с того чата
Аноним 15/05/16 Вск 10:17:20  743966
>>743765
> setVisibility(GONE) вызывают перерасчет разметки элемента списка, что тоже будет затормаживать скролл.
После getView вернее, его аналога в RV, я им не пользовался будет перерасчитываться разметка независимо от того, вызывал ты setVisibility или нет. Это очень быстрая операция, явно не туда смотреть нужно.
Аноним 15/05/16 Вск 11:18:38  744009
>>743909
Хуй знает, я в скайпе сижу, но там скорее всего нету или очень мало двачеров, а тут даже название намекает на какую-то хуйню.
Аноним 15/05/16 Вск 11:22:05  744013
>>743954
>Активити не всегда существует во время существования процесса
Если юзать статик геттер для активити контекста в каком-то адаптере который заведомо в этой активити все будет работать.
>Так в чём проблема сделать его синглтоном?
В том что апликейшн тут сингл энтити. А синглтон создается при первом обращении, тут же апликейшн создается просто ДО первого вызова.

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

Вот такой тебе вопрос: а если у меня есть синглтон, который работает с ресурсами (строки и картинки достает, например) или с сервисами системными, как ты предлагаешь его инициализировать? Контекст в getInstance + ленивая инициализация? Ради одной красоты придётся терять другую.
Аноним 15/05/16 Вск 12:09:05  744041
>>744037
>А если активити 2 штуки?
>Ну и про эту условность я уже говорил.
Есть такой ньюанс, но опять же я сам видел что люди такое делают.

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

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

>Контекст в getInstance + ленивая инициализация? Ради одной красоты придётся терять другую.
Так и делал бы, андроид сдк сделан так что контекст будет откуда подтянуть.
Аноним 15/05/16 Вск 12:09:45  744042
14633033852080.jpg (24Кб, 532x421)
>>744013
> App.getShardInstance();
> (нарушение) красоты кода
Так и представляю:
Проект из over100 классов "джуниор-говно"-лапша-кода, а тебя ебет только статик геттер.

P.S.
Ребята вы уже заебали сратся на эту тему.
Аноним 15/05/16 Вск 12:13:36  744045
>>744042
Я вижу статики в апликейшене хуярят все ИТТ?
Аноним 15/05/16 Вск 12:31:46  744055
>>744041
> Вот только это не совсем синглтон.
По сути — одно и то же. Лёгким добавлением 1 метода он превращается в псевдо-синглтон. Формально он был создан не как синглтон, но по своему функционированию он ничем не отличается.
> Там тебе прямым текстом написали что ломает инкапсуляцию. Это не мнение, но очевидный факт, и да инкапсуляция это не про работу программы, следовательно ее можно ломать?
Синглтоны тоже ломают икапсуляцию, получается?
> Так и делал бы, андроид сдк сделан так что контекст будет откуда подтянуть.
Факт в том, что для ленивой инициализации тебе придётся городить больше лишнего кода, вместо того, чтобы сделать всё просто и наслаждаться этим.
Аноним 15/05/16 Вск 12:42:56  744060
>>744055
>Синглтоны тоже ломают икапсуляцию, получается?
Синглтон так-то в какой0то мере антипатерн.

>Факт в том, что для ленивой инициализации тебе придётся городить больше лишнего кода, вместо того, чтобы сделать всё просто и наслаждаться этим.
Вся сложность будет в получении контекста на самом деле для гетинстанса(сейчас мы говорим про твой синглтон для доступа к ресурсам), но сам посмотри, если не тулить работу с ресурсами где попало читай классах отвязанных от андроид сдк, то даже кода особо больше не будет.
Аноним 15/05/16 Вск 12:46:40  744062
>>744060
Синглтону нередко требуется работать с андроид сдк, а тянуть до него контекст — лишний гемморой.
Хотя я изначально реализацию синглтона имел в виду со всеми даблчекедлоками.
Аноним 15/05/16 Вск 12:49:12  744066
>>743449
Зачем делать WeakReference, когда можно просто сделать метод release(), вк отором обнулить всю хуйню, и вызвать его в onDestroy() активити, сервиса, фрагмента...
Аноним 15/05/16 Вск 12:54:13  744070
>>744066
>вызывать что-то в ондестрой
Ты псих?
Аноним 15/05/16 Вск 12:57:29  744072
>>744070
А что такого? Там же не сложная операция, а по сути одна строчка смысл которой сводится к:
mySuperHandler.activity = null; Это никак не сомжет навредить удалению, или я чего-то не выкупаю?
Аноним 15/05/16 Вск 13:08:03  744081
>>744070
onDestory у активити не вызывается же только в одном случае, когда процесс полностью умирает. А если процесс умирает, то уже нечему утекать.
Аноним 15/05/16 Вск 13:19:40  744092
Аноны в чем может быть проблема? http://pastebin.com/6MYsVhg4
Вот такая хуйня с картами, ничего не крашится, но они очень лагают.
Аноним 15/05/16 Вск 15:11:07  744160
Возможно ли хранить sqlite базу на external storage, чтобы даже если пользователь удалить приложение и потом заново его установит можно было подгрузить из приложения эту базу, как будто ничего и не случилось?
Аноним 15/05/16 Вск 15:17:06  744166
>>744160
Сохранить можно куда угодно раньше так тестил бд, и по сути считать ее тоже можно, а потом дублировать записи из нее в свою бд.
Но вот прям создать бд с нуля по тому что у тебя в экстернал сторейдж плохая идея, да и не думаю что возможно.
Аноним 15/05/16 Вск 15:17:42  744167
>>744166
Ну и забыл добавить, что работать ты все равно будешь со своей базой а не той которая на диске, но можешь делать бекапы в нее время от времени.
Аноним 15/05/16 Вск 15:19:25  744172
>>744166
> Сохранить можно куда угодно
Напоминаю про прекрасный андроид 4.4
Аноним 15/05/16 Вск 15:20:51  744175
>>744172
А что там? Признаю впадлу лезть в доку.
Аноним 15/05/16 Вск 15:21:35  744176
>>744160
Анон лучше не надо, это решение из прошлого века, юзай Android Backup.

В Android 6.0 и выше придется каждый раз проверять что у тебя есть права на запись карты памяти и если их нет запрашивать явно у юзера.
И сейчас юзер может спокойно их НЕ дать или в любой момент забрать.
Аноним 15/05/16 Вск 15:25:12  744182
14633151128210.jpg (63Кб, 300x300)
>>744060
> Синглтон так-то в какой0то мере антипатерн.
ТЫ несёшь хуйню.
Аноним 15/05/16 Вск 15:26:18  744186
>>744176
У меня сейчас build target 22, все разрешения по умолчанию включены.
Проблема в том, что мне нужно хранить кучу всякой инфы, которая очень важна для пользователя.
И он сильно разочаруется, если после удаление и установки приложения эта инфа пропадёт.
Аноним 15/05/16 Вск 15:27:08  744188
>>744182
Ну погугли придурок, может слова именитых программистов донесут до тебя правду и ты не будешь вылазить из под шконки со своими картинками?
Аноним 15/05/16 Вск 15:29:08  744193
>>744186
Почему вы сами это в облаке не храните?

Андроид бекап дали чисто для удобства, сохранять бд в экстернал сторейдж костыль.
Аноним 15/05/16 Вск 15:29:29  744196
>>744186
> build target 22
Идиотское решение.
Аноним 15/05/16 Вск 15:30:44  744198
>>744196
Это почему еще?
Аноним 15/05/16 Вск 15:30:46  744199
>>744188
> может слова именитых программистов донесут до тебя правду и ты не будешь вылазить из под шконки со своими картинками
Ох, лол. Как я с тебя проиграл.
Как думаешь, кто изображен на моей картинке?
Аноним 15/05/16 Вск 15:31:15  744201
>>744198
Наверное потому, что актуальное API — 23 ?
Аноним 15/05/16 Вск 15:31:40  744202
>>744198
В настройках вроде как можно рубануть пермишн.
Аноним 15/05/16 Вск 15:32:39  744204
>>744199
Ты какой-то ебанутый если думаешь что кто-то прогеров в лицо знает.
А синглтон антипатерном считаться может, так что увы ты идешь нахуй.
Аноним 15/05/16 Вск 15:33:03  744205
>>744201
Что мне это даст?
Сейчас это приложение замечательно работает и на 4.3 и на 6.0.1.
Вырубать разрешения смысла нет.
Т.к. их всего два и без них приложение потеряет смысл.
Аноним 15/05/16 Вск 15:36:52  744210
>>744202
Случайные пользователи - могут и рубануть, если вспомнят про такую функцию.
По факту - это абсолютно никому не нужно.
Аноним 15/05/16 Вск 15:38:50  744211
>>744210
Мы тебе тут рабочие решения пытемся подсказать, а не хуйню которая вылетит от действий самого юзера.

Под твои нужды нужно делать бекенд. Тем более почему тебе андроид бекап не нравится?
Аноним 15/05/16 Вск 15:39:54  744213
>>744211
Что есть Андроид Бекап?
По такому названию очень много программ есть.
Аноним 15/05/16 Вск 15:41:20  744217
>>744213
http://developer.android.com/intl/ru/guide/topics/data/backup.html
Аноним 15/05/16 Вск 15:43:35  744219
>>744217
Спасибо! Пойду посмотрю как с её помощью забэкапить sqlite базу.
Аноним 15/05/16 Вск 16:03:13  744233
14633173931800.jpg (17Кб, 480x360)
>>744202
Я на своем нексусе могу и тебе (с твоим 22) рубануть :)

Ты тогда будешь вместо карты-памяти получать заглушку.
Аноним 15/05/16 Вск 16:07:59  744237
>>744233
А я о чем говорю блять, хоть вникайте перед тем как отвечать.
Аноним 15/05/16 Вск 16:09:36  744242
14633177764690.jpg (36Кб, 498x500)
>>744237
Иди нахуй
Аноним 15/05/16 Вск 16:20:58  744260
>>744233
Да уж. Если пользователи увидят при запуске приложения: "Разрешить доступ к файлам, фото и мультимедиа на устройстве" - то очевидно, большинство ответят нет.
Хотя приложение ничего криминального не делает.
Про разрешение GPS - вообще молчу. Хотя не шпионит, ага.

Плохая эта идея - runtime permissions.
Аноним 15/05/16 Вск 16:28:31  744261
>>744260
Самое тупое, что для MediaStore.ACTION_IMAGE_CAPTURE тоже нужен рантаим пермишн камеры, хотя мы переходим вообще в другое приложение.
Аноним 15/05/16 Вск 16:28:50  744262
>>744242
Соси хуй быдло
Аноним 15/05/16 Вск 16:53:06  744274
>>744260
> Плохая эта идея - runtime permissions.
Хорошая, правильная и давно необходимая.

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

Использовать API 22 — это тупиковый путь. Либо адаптируйся к изменениям, либо вон из профессии. Пиши какой-нибудь ынтырпрайз на JEE: там всё тихо и спокойно, никаких изменений.
Аноним 15/05/16 Вск 16:59:33  744279
>>743739
Анончик, спасибо, я поставил крашлитикс, и теперь могу видеть, где упала моя хуйня. Здорово!
А можно еще как-то видеть, где моя хуйня все сделала правильно и не крашнулась? Ну типа
public void onClick(View v) {
Log.d(TAG, "вызываю метод onClick");
}
Я пока вижу вариант в тоасты это засунуть. Или это в фабрике тоже можно откуда-то вывести? Я не нашел.
Аноним 15/05/16 Вск 17:09:06  744286
>>744274
Пользователи действуют иначе - им нужно, чтобы всё работало.
В моём случае невозможно запросить разрешения где-то, кроме как при старте приложения.
Т.к. оно постоянно пишет данные в базу (база может быть большая, она лежит в external storage).
Приложению важно с момента запуска знать координаты пользователя.

Всё как всегда - пользователь не должен знать, что там внутри.
Аноним 15/05/16 Вск 17:21:10  744294
>>744286
Кстати, помню, что для google maps api v2 тоже требуется Write external storage.
Аноним 15/05/16 Вск 17:22:48  744296
>>744294
С версии Google Play Services 8.3 оно больше не нужно.
Вот наверное весело людям объяснять, что разрешение на доступ к файлам нужно для кеширования карт. 99% Не поймут ничего, остальные подумают, что их хотят наебать.
Аноним 15/05/16 Вск 18:01:03  744328
>>744279
Используй Timber. Подсадишь ему специальное дерево, которое скидывает логи в крашлитикс.
Аноним 15/05/16 Вск 18:20:45  744339
>>744328
В крашлитик обычные логи можно кидать?
Аноним 15/05/16 Вск 18:54:03  744370
>>744279
Сомневаюсь, тогда люди будут пидорить fabric.io запросами в вечном цикле.
Им это вряд ли всралось.
Аноним 15/05/16 Вск 18:57:32  744375
>>744339
Конечно. Когда ты пишешь Timber.d/i/e/... вызывается метод log твоего дерева, и тaм можно вызвать Crashylitics.log или что там есть.
Аноним 15/05/16 Вск 19:03:07  744384
>>744375
Таки зашел в админку крашлитикса, там есть и обычные ивенты, просто всегда юзал только краши.
Аноним 15/05/16 Вск 21:24:20  744512
Поменял api map key, собираю дебаг, релиз версию, запускаю - всё ок, когда апдейчу в гугл плей вылает ошибка у карт типо ключ не действительный и выводится старый ключ, как его поменять?
Аноним 15/05/16 Вск 22:03:57  744569
>>744182
разве дядя боб одобряет синглтон?

Аноним 15/05/16 Вск 22:52:56  744637
>>744512
Мне кажется в google-services.json все написано за нас, у тебя версии грейдла и плагина гугловских сревисов не протухли?
Аноним 16/05/16 Пнд 00:37:38  744721
14633482583570.jpg (116Кб, 720x960)
Анон, у меня вопрос про обучение.

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

Сейчас учу ведройд методом "хочу отправку смс в приложении -- гуглю "how to sent sms android programming" и чуть ли не копирую код, попутно пытаясь понимать, что за что отвечает. Хочу еще какое-нить говно -- гуглю и копипащу". Но понимаю, конечно, не все. С Джавы порой вообще охуеваю, видя вообще доселе неизвестные методы и операторы. Но тем не менее, после небольшого пердолинга все работает и приложение получается.
Ну и вот сам вопрос: какой способ обучения лучше? Вот так вот дальше ставить себе задачи и прорываться через гугл или пересиливать себя и читать учебники от корки до корки, чтобы знать всю мат.часть. Ведь, например, если проблемой неработающей программы будет проблема с потоками какими-нибудь, я этого никогда не узнаю и не допру, потому что это сложная тема и я ее еще не изучал.
И если идти по второму пути, то каков шанс не соснуть на собеседовании, когда я почувствую себя достаточно крутым и захочу устроиться на работу?
Надеюсь на твою помощь и мудрость, анон
Аноним 16/05/16 Пнд 02:04:10  744766
>>744721
Книжка по джаве + что то типа старт андроида для основ и потом читать/пробовать всякие крутые штуки
Аноним 16/05/16 Пнд 02:25:59  744772
Аноны, а как по нормальному сохранять презентер при перевороте? Пихать его в ретеин фрагмент? Но тогда же получается, что сама вью управляет им, а не наоборот.
Аноним 16/05/16 Пнд 02:35:57  744776
>>744772
Сохранять надо данные, а презентер пересоздавать и все
Аноним 16/05/16 Пнд 09:11:45  744855
>>744776
Ну запросы то выполняются в презенторе
Аноним 16/05/16 Пнд 10:17:58  744866
>>744855
1) делаешь запрос на сервер (допустим в asynctask).
Один раз при показе активити (пробрось onCreated в презентер).
2) данные загружаются -> преобразуются -> сохраняются в базу
3) asynctask кидает broadcast-message (или через ContentResolver.notifyChange)
4) обработчик (допустим cursorloader) читает данные из базы и показывает пользователю.

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

Здраво рассуди "что дает пользователю поворот экрана, является ли это преимуществом?",
а не делай просто "потому что можешь" (потом придется это все поддерживать и отлаживать).
Аноним 16/05/16 Пнд 12:02:05  744907
14633893256720.png (38Кб, 566x210)
14633893256721.png (15Кб, 446x59)
Что он до меня доебался?
Аноним 16/05/16 Пнд 13:13:40  744937
>>744907
O_o Эти локальные переменный в начале метода "аля паскаль",
пробудили у меня воспоминания из далекого детства :)

Ты опять с импортами проебался - проверь что туда точно передается наследник
android.location.LocationListener (или скинь файл целиком).
Аноним 16/05/16 Пнд 13:24:32  744942
Не мог бы кто-нибудь привести пример не текущего RecyclerView с ViewHolder, содержащим картинки, подгружаемые откуда-нибудь Glide-ом или Picasso ? Уже очень долго ебусь, никак не выходит нормально. И да, что дает следующий код :
@Override
public long getItemId(int position) {
return position;
}
Он вообще имеет смысл ?
Аноним 16/05/16 Пнд 13:54:00  744955
Посоны изучаю андроид и решил купить себе планшетик для того чтоб тестировать приложения по-лучше. Посоветуйте что-то годное
Аноним 16/05/16 Пнд 13:59:25  744959
>>744955
ИМХО, бери телефон, под планшеты обычно после заказа под телефон просят сделать. Или, как лучше, и то и то
Аноним 16/05/16 Пнд 14:05:23  744967
>>744959
Спасибо, хорошая идея
Аноним 16/05/16 Пнд 14:14:48  744974
Да, к слову, при переходе на другой экран идет утечка, которую не залавливает LeakCanary.
Аноним 16/05/16 Пнд 14:20:32  744982
>>744937
>Эти локальные переменный в начале метода "аля паскаль"
Код конвеншн давно читал?
Аноним 16/05/16 Пнд 14:21:08  744984
>>744942
Ну помогите пожалуйста :)
Аноним 16/05/16 Пнд 14:21:26  744985
>>744955
Бери нексус 5х, сам взял на днях, очень рад. Саппорт ведра до 2018
Аноним 16/05/16 Пнд 14:22:57  744986
>>744984
Хуй знает, юзаю пикассо самым стандартным способом, утечек не замеченно.
Аноним 16/05/16 Пнд 14:24:32  744988
>>744986
Утечка идет скорее при переходе на новый экран ( я вроде заюзал flow, соответственно, юзаю unbind, удаляю все данные из адаптера даже, черт его знает что делать )
Аноним 16/05/16 Пнд 14:26:34  744989
>>744988
Хотя сейчас вроде как смотрю, и просто некоторое количество переходов загрузка памяти растет, а потом останавливается на каком-то уровне. Но по-моему 60мб это пиздец как много для двух экранов с параллакс хэдерами в одном из которых есть список из 25 элементов каждый с картинкой
Аноним 16/05/16 Пнд 14:27:58  744990
>>744982
По паскалю - лет 12 назад, а что?
Аноним 16/05/16 Пнд 14:31:23  744991
>>744990
По жабе лол, совсем от котлина поехал?
Аноним 16/05/16 Пнд 14:32:14  744992
>>744989
Флов не юзал и не планирую, так что ничем помочь не могу. А 60 метров на два экрана разве что с картой может быть.
Аноним 16/05/16 Пнд 14:32:41  744993
>>744991
А при чем тут жабка? Код же на котлине,а я про паскаль писал.
Аноним 16/05/16 Пнд 14:35:01  744995
>>744993
Поправь если ошибаюсь, объявлять переменные вначале метода общепринятое правило.
Аноним 16/05/16 Пнд 14:38:52  744996
>>744942
Это хуйня, если у тебя не предопределенные элементы будут.
Аноним 16/05/16 Пнд 14:50:29  745004
>>744996
Окей, т.е. если мы делаем список с пагинацией - то эту штуку не юзаем ?
Аноним 16/05/16 Пнд 14:50:34  745005
>>744989
> 25 картинок
Ты их ресайзишь? Picasso.load.fit или Picasso.load.resize?
Аноним 16/05/16 Пнд 14:51:15  745007
>>744992
Да вроде везде использую правильные контексты, ничего никуда не должно улетать лишнего.
Аноним 16/05/16 Пнд 14:51:38  745009
>>745005
Использую glide, но там вроде подобного нету. Пикассо просто для примера привел
Аноним 16/05/16 Пнд 14:56:49  745019
Может кто посмотреть мой код ? Скину линк на гилтаб, только нужно будет добавить вас, ибо реп приватный
Аноним 16/05/16 Пнд 14:57:17  745020
>>744995
Хм, может в Pascal (там это на уровне языка) или Basic.

Сейчас занят что-бы пруфы искать, но насколько я помню из "чисты код" и "рефакторинг" Фаулера:
1) лок. переменные надо как можно ближе к месту использования
У Фаулера была мысль вообще их не заводить, а получать лок. данные через отдельный метод.
2) их НЕ рекомендуется использовать повторно, особенно для др. целей.
Для этого в разных языках есть val/let - одноразовое присваивание.
Аноним 16/05/16 Пнд 14:57:45  745022
>>745019
Советую тебе вырубать модули и смотреть ушла ли утечка.
Убери релейтив и посмотри, таким образом поймешь где копать.
Аноним 16/05/16 Пнд 14:58:32  745024
>>745004
Наоборот, это может помочь, вот были у тебя элементы {"id": 1}, {"id": 2}, {"id": 101}, а потом стали элементы {"id": 103}, {"id": 2}, {"id": 101}, он будет уверен в закешериванных шутках и не будет играть лишних анимаций.
Аноним 16/05/16 Пнд 14:59:23  745027
>>745022
Там только view и есть, лол. И тестовые данные. Больше ничего. Вообще думаю запилить все по-новой чтобы не ебаться
Аноним 16/05/16 Пнд 15:00:18  745028
>>745019
Ой добавь меня billgates2002@live.com
Я твое репозиторий выкачаю и перезалью на github, аночиками на радость.
Аноним 16/05/16 Пнд 15:03:43  745031
>>745020
Ну для начала методы нужно разбивать на методы-задачи, тогда и переменная будет сначала и не перечить словам Фаулера.
Аноним 16/05/16 Пнд 15:09:02  745035
>>745027
Сука не тупи блять, вью у него только есть.
Выпили ресакйлервью и посмотри, если не будет то начинай выпиливать глайд и тд и тп.
Аноним 16/05/16 Пнд 15:09:19  745036
>>745031
Хороший маневр, только это никак не связано с требование принудительно описывать переменный в начале метода.

Ты кстати про второй пункт забыл.
Аноним 16/05/16 Пнд 15:14:39  745038
>>745036
Не забыл, если у тебя метод решает какую-то задачу, то переиспользовать их в другой задаче внезапно не будет возможности.
Да и я боюсь сам компилятор оптимизирует работу с переменными. Тут правда я уже совсем не шарю как, но вполне возможно он определит что твоя переменная уже не используется но создалась новая. В форе он же определяет что переменная создается новая и не создает ее.

Аноним 16/05/16 Пнд 15:22:30  745040
>>745009
Есть там такое точно, влючено ли по дефолту? Вряд ли
Аноним 16/05/16 Пнд 16:38:05  745079
>>744937
http://ideone.com/bVClzY
Блять, как же в ведре немного запутано все это. Вот под EE с джавой, мне кажется, проще.
Аноним 16/05/16 Пнд 17:23:59  745119
14634086393350.png (26Кб, 539x290)
>>745079
JetBrains есть еще где тулинг подкрутить, у тебя показывается не "исходная" ошибка, а лишь следствие.

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

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

P.S.
Вопрос "зачем ты хранишь статическую ссылку на LocationManager?", а пожалуй задавать не буду.
Аноним 16/05/16 Пнд 17:42:15  745132
>>745038
> вполне возможно он определит что твоя переменная уже не используется но создалась новая.
Я тебе по секрету так скажу, на уровне байткода вообще переменных нет. Есть регистры, компилятор их число минимизирует.
Аноним 16/05/16 Пнд 17:44:34  745134
>>745132
По секрету себе сам скажи, я внезапно на ассемблере даже писал, но то что в памяти выделяется место под него при инициализации факт, а компилятор оптимизирует это дело.
Аноним 16/05/16 Пнд 17:48:53  745136
>>745134
Мы все тут наверно в свое время писали laba1
Аноним 16/05/16 Пнд 18:55:21  745195
14634141214830.jpg (198Кб, 1024x768)
Первое правило начинающего программиста под андроид:
Не слушать людей на stackoverflow, которые предлагают освобождать ресурсы/останавливать сервис в методе onDestroy активити или фрагмента.
Аноним 16/05/16 Пнд 19:04:03  745201
>>745195
Чому?
Аноним 16/05/16 Пнд 19:09:17  745208
>>745201
Метод onDestroy вызывается перед тем, когда активити будет уничтожено.
Зачастую не тогда, когда мы это ожидаем (слишком поздно, с задержкой, когда система решит его вызвать).
Аноним 16/05/16 Пнд 19:13:57  745213
>>745208
То есть надо высвобождать в onStop, ну не в onPause же?
Аноним 16/05/16 Пнд 19:14:14  745214
>>745208
Я просто не понял был ли твой пост сарказмом.
Сам в ондестрой нихера не делаю, если уж что-то важное стопать нужно то через онпауз онрезюме.
Аноним 16/05/16 Пнд 19:14:38  745215
>>745195
> освобождать ресурсы
Слишком размытый термин (хотя сложно представить что можно освобождать в onDestroy)
Аноним 16/05/16 Пнд 19:14:46  745216
>>745213
Он стоп и сам та еще херня.
Аноним 16/05/16 Пнд 19:16:04  745218
>>745215
Всякое говно типа синглтона который хранит в себя ссылки на активити, очень тупой пример, но тем не менее.

Уже обсуждали тут как хендлером сделать мемори лик, и описывали что можно просто очищать хендлер в онДестрое.
Аноним 16/05/16 Пнд 19:16:21  745219
>>745218
>что можно просто очищать хендлер в онДестрое.
обнулять всмысле
Аноним 16/05/16 Пнд 19:18:46  745224
>>745216
Ну и что за нахер, когда мне от сервиса анбайндится? И почему по гугловскому гайду для GoogleApiClient'a нужно конектится на старте, а отключаться в стопе
Аноним 16/05/16 Пнд 19:25:39  745230
>>745224
Там же основной заеб видима ли твоя активити.
Ну и по факту только онПауз гарантированно вызывается, это можно посмотреть по схеме лайфсайкла.
Аноним 16/05/16 Пнд 19:26:14  745231
>>745224
Слушая Google, а не рамдомных сосачеров.

Правильно тебе все гугл говорит, после Android 3.0 между pause/stop нет никакой разницы
(кроме случая перекрытия твоего активити, другим "полупрозрачным").
Аноним 16/05/16 Пнд 19:28:08  745235
>>745231
Долбоеб чтоль?
На перечитай пост рандомного сосачера и уйди под шконарь >>745230
Аноним 16/05/16 Пнд 19:30:05  745238
>>745235
Давай разберем все тобой написанное, складывается впичатление...

Что тебе конкретно не понравились?
Ты моя маленькая девочка считал себя умнее разрабов из гугла?
Аноним 16/05/16 Пнд 19:34:48  745244
>>745238
Эта маленькая девочка написала все как по доке, еще и объяснила чем чревато что-то делать в онСтопе.

И уже исходя из твоих слов
>по гугловскому гайду для GoogleApiClient'a нужно конектится на старте, а отключаться в стопе
>Правильно тебе все гугл говорит, после Android 3.0 между pause/stop нет никакой разницы
Ты сам перечишь гуглам если что.
Аноним 16/05/16 Пнд 19:36:03  745246
>>745215
Чаще всего встречаются "полезные советы" про AudioRecorder:
Если вызвать release в ondestroy, то не факт, что он освободится до того, как в другой активити/фрагменте его будут снова юзать. Ведь мы не знаем, когда будет вызов ondestroy. В итоге имеем рандомные краши время от времени на рандомных устройствах.
При этом куда не плюнь - в ondestroy все release вызывают.

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

Но масштабы проблемы куда шире, это не ограничивается примером с AudioRecorder и сервисом.
Аноним 16/05/16 Пнд 19:36:28  745247
>>745246
*поправка AudioRecord
Аноним 16/05/16 Пнд 19:40:48  745250
>>745246
Так блять, онСтарт нового активити вызывается не относительно онДестроя предыдущего.
Там вроде только между онПауз(1) - онКриейт(2) - онСтарт(2) - онРезюм(2) есть зависимость. Хотя тут мог ошибиться.
Аноним 16/05/16 Пнд 19:45:30  745254
14634171310310.png (120Кб, 943x575)
>>745244
Он написал
> Ну и по факту только онПауз гарантированно вызывается

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

Как видишь на картинке, после Android 3.0 активити не может быть убита до вызова onStop().
Так что теперь "onStop() тоже считается гарантированно вызываемым".
Аноним 16/05/16 Пнд 20:26:58  745283
Ну и что в результате? Пусть у меня есть сервис в котором музыка играет, когда мне release MediaPlayer'a вызывать.
Аноним 16/05/16 Пнд 20:31:43  745289
>>745283
В случае с сервисом - смело вызывай в onDestroy.
Аноним 16/05/16 Пнд 20:35:57  745294
>>745289
Окей, спасибо.
Аноним 16/05/16 Пнд 20:38:36  745296
>>744866
какая то хуевая архитектура, так как сохранять прогресс закгрузки при перевороте, только ретеин фрагмент и т.п.?
Аноним 16/05/16 Пнд 21:03:34  745312
>>745254
Тогда смысл онСтарт онСтоп нивелируется практически.
Аноним 16/05/16 Пнд 21:08:16  745315
>>745296
>хуевая архитектура
В Е Д Р О И Д
Е
Д
Р
О
И
Д
Аноним 16/05/16 Пнд 21:16:31  745323
>>745134
А кто не писал? Я про байткод далвика говорю.
Аноним 16/05/16 Пнд 21:24:07  745328
>>745312
Это атавизм из времен телефонов c 64 MB памяти я под такие разрабатывал.
Аноним 16/05/16 Пнд 22:43:54  745368
>>745328
И как это помогало?
Аноним 17/05/16 Втр 07:20:54  745539
видали, developer.android.com обновили
Аноним 17/05/16 Втр 07:46:57  745546
>>745539
Вообще не плохо сделали нужно признать.
Алсо, студию обновили и выслали оповещение на почту, лол. Первый раз такое вижу.
Аноним 17/05/16 Втр 08:11:10  745551
>>745546
Ну так это же обновление безопасности.
Аноним 17/05/16 Втр 08:32:34  745565
>>745551
Мне это не говорит нихуя.
Аноним 17/05/16 Втр 08:49:47  745581
сап prкун 15 лвл, посоветуйте какойнть курс/книгу на русском по андроид-разработке, гугл выдал только 1, и он меня не устраивает
Аноним 17/05/16 Втр 08:55:22  745589
>>745539
У меня меню все на китайском теперь.
Аноним 17/05/16 Втр 12:09:33  745677
>>745581
а мой ты каток, навошта гэта табе
Аноним 17/05/16 Втр 13:21:15  745738
14634804751580.png (51Кб, 1152x905)
>>743301 (OP)
Аноны, подскажите, переписывал по туториалу, после все скомпилировалось, я закрыл. Сегодня открыл - и вылазит пикрелейтед. В xml совсем хуй. Подскажите пожалуйста где ошибка.
Аноним 17/05/16 Втр 13:27:26  745745
>>745738
У тебя опечатки.
Аноним 17/05/16 Втр 13:33:09  745754
>>745745
Вот что бывает когда не знаешь что пишешь, точно, спасибо.
Аноним 17/05/16 Втр 14:42:52  745839
Двощик, есть примеры кода по работе с WEB API или сразу бы получения потока с онлайн-радио и работе с тегами дорожки?
Аноним 17/05/16 Втр 15:57:45  745902
Сап, подскажите как переключать язык приложения с помощью спинера и чтобы сохранять выбранный язык. Перелопатил весь гугл не смог сделать так чтобы сразу менялся язык после выбора в спинере
Аноним 17/05/16 Втр 16:46:48  745960
>>744985
тоже хотел его взять
Аноним 17/05/16 Втр 17:02:22  745966
>>745902
пересоздать активити
Аноним 17/05/16 Втр 18:11:56  746011
>>745960
Только покупай чехол сразу, и советую еще стекло. Задняя панель сделана из плохого пластика - царапается очень легко, прямо таки очень.

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

Сам все эти грабли испытал на себе.
Аноним 17/05/16 Втр 18:13:16  746013
>>745119
Только сейчас дошли руки. Спасибо тебе большое.
Нужно летнюю практику в универе закрывать, взяли по знакомству на позицию ведра. А так как я котлин не учил, то вот так получается
Аноним 17/05/16 Втр 18:30:30  746026
>>746011
5x говно же, дурацкий разъем от кабеля, лучше просто пятерку взять
Аноним 17/05/16 Втр 18:32:46  746029
>>746026
Ну он определенно не говно, с кабелем мозгоебка но от него есть профиты, время зарядки например.
5ка уже говно мамонта.
Аноним 17/05/16 Втр 18:44:39  746050
>>746026
Поддержка ближайшие 2 года (+ preview сборки)
VS
micro USB
Что бы выбрать?..

Тем более смирись, будущие за USB-C.
Вот уже и музыку через него можно слушать на Nexus5X
https://www.indiegogo.com/projects/aero-digital-earphone-upgrade-to-hifi-music-now#/
Аноним 17/05/16 Втр 18:45:43  746053
гуру mvp, стартовать активити нужно же из презентера?
Аноним 17/05/16 Втр 19:33:31  746084
>>746053
> гуру
Нет, ну да похуй.
Я из вьюхи предпочитаю, ибо 1) там 100% есть контекст, 2) все таки запуск активности, это операция показа каких-то данных, хоть и в другом окне. Да и вдруг тебе придется заменять запуск активити на добавление фрагмента?
Аноним 17/05/16 Втр 20:17:59  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.
Аноним 17/05/16 Втр 20:21:03  746122
>>746118
т.е. будет тупо класс NavManager с методами openActivity1(), ..., openActivity666() ?
Аноним 17/05/16 Втр 20:36:00  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>(...)
Аноним 17/05/16 Втр 20:40:44  746144
>>746140
Здесь кстати соблюдается "open/closed principle" - при добавление нового окна, не придется менять интерфейс.

Кстати если не хочешь делать через название активити можно, тупо сделать switch/case.
Аноним 17/05/16 Втр 21:05:04  746175
Я тут подумал, а ведь мобильщики - считай, фронт-эндеры. Дизайнеры, но не программисты.
Аноним 17/05/16 Втр 21:16:28  746192
>>746118
Это плохое решение в рамках MVP.
Если всё приложение реализовывать на MVVM, то ок.

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


> MVVM, там реально гораздо меньше бойлеплейта чем в MPV/MPC
С увеличением сложности приложения MVVM начнет ограничивать тебя, она не такая расширяемая, как MVP.
Аноним 17/05/16 Втр 21:18:00  746194
>>746175
Мобильщики вообще макаки же. Это что-то уровня программирования на пыхе или жс.
Аноним 17/05/16 Втр 21:18:43  746196
>>746175
Утешай себя этим почаще, JavaScript-макака.
Аноним 17/05/16 Втр 21:22:06  746201
>>746050
>>744985

Логичнее подождать до октября, и взять уже новый Nexus.
Аноним 17/05/16 Втр 21:25:46  746208
>>746194
Нет, слишком много тонкостей системы нужно знать. Слишком много багов в сдк.
Тут реально решает опыт.
Аноним 17/05/16 Втр 21:27:23  746209
>>746201
>Ждать пол года
>Брать телефон маньше чем через несколько месяцев после релиза.
Плохо, брат, плохо у тебя с логикой.
Аноним 17/05/16 Втр 21:34:47  746219
>>746209
До выхода новой модели осталось четыре месяца (пускай даже пять). Это больше, чем уже прошло со времени выпуска 5x. (Мы ведь помним, что апдейты системы будет выходить в лучшем случае два года).

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

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

Аноним 17/05/16 Втр 21:35:39  746220
>>746219
> Это больше, чем уже прошло со времени выпуска 5x
Имел в виду меньше, конечно же.
Аноним 17/05/16 Втр 21:37:15  746223
>>746192
> Это плохое решение в рамках MVP.
> С увеличением сложности приложения MVVM начнет ограничивать тебя
Пруфов конечно не будет.

Я к MVVM пришел эволюционно путем от MVP,
когда устал писать кучу однотипных методов которые просто гоняли данные.
Аноним 17/05/16 Втр 21:39:49  746227
Кстати, если аппарат нужен исключительно для разработки и тестирования, то Android One отлично подойдет Официально продаётся только в Африке, но легко находится на Ebay и Amazon
Аноним 17/05/16 Втр 22:40:35  746287
>>746227
не нахожу чет нигде
Аноним 17/05/16 Втр 23:02:51  746318
Стоит ли заморачиваться поначалу со всякими MVC, MVP и прочим? Я ещё и половины базовой программы не изучил, пробую писать маленький круд а уже такое ощущение, что выходит какое-то говно.
Читаю книгу Android Big Nerd's ranch (Busy Coder’s это ёбаный справочник, а не учебник).
Аноним 17/05/16 Втр 23:06:15  746324
>>746318
Блядь, ctrl+enter нажал.
Так вот, читаю и делаю оттуда упражнения, книга годная, но хотелось бы что-то ещё почитать об отделении логики обновления View и взаимодействия с моделью.
Смотрел пример TodoList приложения от гугла, ничего не могу понять. Какие есть годные материалы по данной теме?
Аноним 17/05/16 Втр 23:13:16  746334
>>746318
> Я ещё и половины базовой программы не изучил
Тогда явно не стоит. Изучи основы, привыкни к SDK (он тут со своими особенностями).
Когда поймешь, что именно тебя не устраивает в стандартном подходе (и почему), тогда и можно уже в архитектурные дебри углубляться.
Аноним 17/05/16 Втр 23:16:19  746340
14635161792760.png (87Кб, 1475x439)
>>746287
Ну, значит, не судьба ¯\_(ツ)_/¯
Аноним 18/05/16 Срд 00:24:01  746398
14635202419050.png (79Кб, 540x960)
>>743301 (OP)
Ребят, накатил стандартную DrawerLayout активность от студии, на уже созданное приложение, как перекрасить статусбар, чтоб он не становился оранжевым как на пикрелейтед, а был прозрачным?
Аноним 18/05/16 Срд 00:28:54  746401
>>746398
сделать прозрачный статусбар во всем приложение, это делается в пару строчек в теме приложения, погугли
Аноним 18/05/16 Срд 00:31:41  746405
>>746398
Если сставить на новое приложение, то статус бар прозрачным становится при открытии выдвижной панели.
Аноним 18/05/16 Срд 00:53:33  746419
>>746398
У тебя иконки уёбищные, да еще и стоят криво.
Аноним 18/05/16 Срд 10:09:09  746541
>>746219
5 месяцев это дохуя, ждать не имеет смысла, учитывая что тут у людей зарплаты в баксах, можно взять сейчас, и еще через пол года.
Да и не забывай что только ебанутые закажет только что выпущенный телефон проебывая гарантию(а так и будет закажи ты его читерством с америки), брак штука серьезная. А если подождешь одзывов месяц то как раз будет тебе пол года. Не выебуйся в общем.
У 5х однозначная начинка, средний смартфон, чего там неоднозначного. Вот материал пластика - говною.
Аноним 18/05/16 Срд 10:11:27  746543
>>746541
> учитывая что тут у людей зарплаты в баксах, можно взять сейчас, и еще через пол года.
Как толсто.
Аноним 18/05/16 Срд 10:15:04  746546
>>746543
Чего толстого? Намек что тут никто не работает? Так нахуй тогда тебе такой дорогой телефон если у тебя денег немного? Для себя тебе китаец + эмулятор хватит на ближайший год. А там если не зацепишься то уже прости но что-то явно не так.
Аноним 18/05/16 Срд 10:36:23  746559
>>746541
Я в Европе, так что с гарантией проблем нет.

Для личного использования меня устраивает мой китайфон абсолютно. Но для разработки хочется новый (физический) девайс. Поэтому пока и не тянет менять устройство, вот и хочу посмотреть, каков будет новый нексус
Аноним 18/05/16 Срд 10:37:59  746562
Видали? Пока, groovy, здравствуй, kotlin.

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

Аноним 18/05/16 Срд 10:43:03  746563
>>746559
>Я в Европе, так что с гарантией проблем нет.
Если ты в европе то и телефон менять раз в пол года не проблема, не выебуйся. Всегда можно сказать - давайте подождем новую модель, учитывая как их клепают.
Аноним 18/05/16 Срд 10:45:27  746565
>>746562
Радости у людей, словно они в тот градл заходят для чего-то помимо прописывания депенденсиса с примером на гитхабе.
Да-да я нуб и долбоеб, градл пушка и тд и тп, но хватит пиздеть, наверное никто ничего сложнее флейворов не делал.
Аноним 18/05/16 Срд 10:51:14  746568
>>746175
мобильщик = фронт-эндер + бак-эндер + дизайнер
Аноним 18/05/16 Срд 10:53:23  746572
>>746568
Не пали годноту быдлу.
Аноним 18/05/16 Срд 11:33:10  746597
А делал кто-нибудь с Glide-ом pre-cache для списка, например ?
Аноним 18/05/16 Срд 11:38:33  746599
>>746565
Настройка CI, тестов, flavors и build variants, dexing, shrinking, apt.

Переход на котлин особой разницы не принесёт, но хоть автодополнение будет работать.
Аноним 18/05/16 Срд 11:39:22  746600
>>746597
> pre-cache для списка
Что ты имеешь в виду?
Аноним 18/05/16 Срд 11:44:55  746604
>>746600
Загрузка картинок заранее ( до того, как они непосредственно подгружаются в элемент списка )
Аноним 18/05/16 Срд 12:12:33  746616
>>746599
>build variants
>dexing
>shrinking
Это ебучий шаблон который переносится из проекта в проект, как гитигнор и прогвард.
С флейворами конечно интереснее, но они не везде нужны.
С CI не приходилось еще работать.
Аноним 18/05/16 Срд 12:14:15  746618
>>746597
А смысл в чем? Оно кеширует все что ты загружаешь не забываем про размер кеша. Зачем кешировать то что возможно даже на экране выводится не будет?
Аноним 18/05/16 Срд 12:25:42  746622
Хм, анонимные локальные BroadcastReceiver норм вешать?
Утечек не будет?
Аноним 18/05/16 Срд 12:30:00  746623
>>746622
Ты главное их снимать не забывай
Аноним 18/05/16 Срд 12:30:33  746624
>>746618
потому что он загружает непосредственно во ViewHolder, а нужно бы заранее и из пула доставать потом. Быстрее же.
Аноним 18/05/16 Срд 12:32:38  746626
Да, к слову, заметил что у меня RecyclerView при каждом пересоздании отжирает по 10Мб. Скорее всего ( еще не тест ), как раз глайд в этом и виноват ( вернее - то, как я его использую ). Вопрос - как правильно в onBindViewHolder загружать изображение , чтобы это дерьмо не ликало ?
Аноним 18/05/16 Срд 12:38:23  746630
Подскажите пожалуйста книгу по фронт-энду для андроид.
Аноним 18/05/16 Срд 12:40:25  746634
>>746624
Оно загружает в кеш и потом отдает тебе.
Т.е. зашел на список - подгрузило из инета.
Перезашел в это список - подгрузило из кеша.
Аноним 18/05/16 Срд 12:40:41  746635
>>746630
Пахахахахах.
Что-то новое.
Аноним 18/05/16 Срд 12:42:03  746637
>>746626
10 метров не так много же. И в каком смысле при каждом пересоздании? Предыдущие 10 мегабайт не очищаются или что?
Аноним 18/05/16 Срд 12:51:13  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 с протухшим содержимым?
Аноним 18/05/16 Срд 12:52:29  746652
>>746634
Из памяти сначала. Если там нет, то из кэша.
Аноним 18/05/16 Срд 12:53:12  746653
>>746622
Будут. Делай поля
Аноним 18/05/16 Срд 12:54:40  746656
>>746650
Нет.
Аноним 18/05/16 Срд 12:58:49  746659
>>746650
Упс. Разобрался.
Аноним 18/05/16 Срд 13:00:59  746661
>>746637
именно
Аноним 18/05/16 Срд 13:08:48  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/05/16 Срд 13:10:06  746666
>>746546
Во-первых, работает мало кто. Во-вторых, зп в долларах — у пары человек на всю доску, максимум.
Аноним 18/05/16 Срд 13:10:36  746667
>>746626
>при каждом пересоздании отжирает по 10Мб
А как ты это посчитал?
Аноним 18/05/16 Срд 13:12:04  746668
>>746650
какой ужасный синглтон
Аноним 18/05/16 Срд 13:12:47  746669
Сап двач! Я дико фапаю на ведроид, но пока я быдлошкольник. Когда вырасту, я хочу стать таким же труЪ как вы! Что мне почитать, чтобы начать быдлокодить?
Аноним 18/05/16 Срд 13:22:36  746677
>>746669
Предлагаю пойти нахуй.

Выпустил в гп первое приложение, когда учился в школе.
Аноним 18/05/16 Срд 13:25:03  746679
>>746677
Ну, видимо, я не такая талантливая петушатина
Аноним 18/05/16 Срд 13:39:46  746691
>>746677
>Выпустил в гп первое приложение, когда учился в школе.

Так вот андроид-маркет засрал своими поделиями.
Аноним 18/05/16 Срд 13:40:10  746692
>>746691
>Так вот

Так вот кто
Аноним 18/05/16 Срд 14:12:16  746728
>>746669
google почитай, говорят запросы помогают. Шапка тебе нахуй дана, уебан ?
Аноним 18/05/16 Срд 14:12:58  746729
>>746667
В диспетчере задач ( или его аналоге ) на планшете посмотрел
Аноним 18/05/16 Срд 14:25:11  746741
Это тебя >>746677 надо благодорить за это https://www.youtube.com/watch?v=fFIrxXvv9pQ ?

>>746729
Ну это уже просто ПИЗДОС (других слов нет), ты программист или домохозяйка?

MAT для кого сделали?
Да даже в самой Android Studio/IDEA есть этот гребанный график потребления памяти,
мог бы туда посмотреть (вызвав сначала GC) и дамп там же сделать.
Аноним 18/05/16 Срд 14:31:42  746748
>>746741
да разницы то, лол, факт есть факт, утечка есть, она в recyclerView, даже более - связана с имагами
Аноним 18/05/16 Срд 14:40:14  746758
>>746741
И да, в графике потребления оперативки тоже смотрю, разницы нихера
Аноним 18/05/16 Срд 15:10:16  746785
>>746758
> да разницы то, лол, факт есть факт, утечка есть
Маленький ты мой лол, ты это тоже по диспечеру удивил или тебя или в отчете MAT?

> да разницы то
Разница в том что у нас тут есть сборщик мусора, который удаляет ссылки когда ему удобнее,
а ни когда объект уже не используется.
Соответсвенно если не нажимать вручную "perform GC", то "визуально" куча уменьшаться не будет
тк он будет освобождать память только что бы сразу ее отдать новым объектам.
Аноним 18/05/16 Срд 15:12:44  746787
>>746785
т.е. ты хочешь сказать, что то, что у меня в диспетчере на планшете видно, что каждый onResume кол-во оперативы занятой приложением возрастает на 10мб может быть нормальной работой ?)
Аноним 18/05/16 Срд 15:14:13  746790
>>746785
Да, даже несмотря на это, то же самое и в студии показывается, по +10мб при onResume
Аноним 18/05/16 Срд 15:14:44  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 не расскрывают темы. Везде просто примеры телефонной книги и просто ввод и вывод данных, а мне надо чтобы каждый пост был в базе данных(да, да я довн). Так что я хз, что делать. Помогите пожалуйста советом или каким-нибудь тутором. Спасибо!
Аноним 18/05/16 Срд 15:14:58  746793
>>746787
Я все сказал, а ты можешь и дальше профилировать "диспетчером приложение".
Аноним 18/05/16 Срд 15:17:18  746797
>>746793
ты блять по делу способен что-нибудь сказать ? Или тебе приспичило просто попиздеть, говном облить и не сказать ничего, содержащего хоть какую-то ценность ?
Аноним 18/05/16 Срд 15:18:49  746800
>>746792
Туториал гугла всё прекрасно описывает
Аноним 18/05/16 Срд 15:21:17  746802
>>746800
Линк, мб ? С нормальным прождакшн-кодом пожалуйста
Аноним 18/05/16 Срд 15:23:11  746804
>>746802
>нормальным прождакшн-кодом
:^)
Аноним 18/05/16 Срд 15:30:37  746810
>>746804
Ну а нафига мне тестовый пример с адаптером в 5 строк в котором учат делать список однострочных TextView ?
Аноним 18/05/16 Срд 15:33:52  746814
>>746810
Ты не на адаптер смотри, дурашка.
Аноним 18/05/16 Срд 15:35:12  746815
>>746814
а куда ? У меня leak в адаптере
Аноним 18/05/16 Срд 15:35:38  746817
>>746814
либо viewHolder, либо адаптер
Аноним 18/05/16 Срд 15:37:06  746818
>>746815
>>746817
Я подумал ты спрашивал про то как с базой работать а не про списки.
https://guides.codepath.com/android#adapterviews
Аноним 18/05/16 Срд 15:37:27  746819
>>746818
нет, про списки :)
Аноним 18/05/16 Срд 15:43:01  746825
Блять, ресайклер тупо жрет память при скроллинге по фиксированному количеству элементов "вверх-вниз". Ему насрать на unbind-ы, ему насрать на Glide.clear(), ему насрать на все. Он, сука, просто жрет оперативку и не выплевывает обратно
Аноним 18/05/16 Срд 15:49:00  746834
>>746825
use listview, luk
Аноним 18/05/16 Срд 15:50:49  746836
>>746398
Сделай полноэкранный режим, тогда статус бар не будет мешать
Аноним 18/05/16 Срд 15:53:41  746838
>>746834
ресайклер больше нравится :) Но правда вот такие моменты пиздос ебут
Аноним 18/05/16 Срд 16:00:46  746846
>>746825
А хули у меня с ним проблем нет?
Аноним 18/05/16 Срд 16:01:42  746847
Чуваки, хочу добавить в приложение написанное на Java, мини-игру. Посоветуйте, на каком движке и на каком языке её лучше делать, чтобы в дальнейшем можно было интегрировать в android приложение на написанное на Java.
Аноним 18/05/16 Срд 16:04:19  746849
>>746846
Не знаю. Я сейчас покопался в коде чувака, либу которого использую ( для хэдеров, футеров, удобной имплементации холдеров и прослушки клика ) и понял, где может быть собака зарыта.
Этот человек ставит онКлики на itemView и не убирает их никогда
Аноним 18/05/16 Срд 16:04:59  746850
Блять, потеплело так новая партия ньюфань подкатила.
Аноним 18/05/16 Срд 16:08:45  746854
Q
Аноним 18/05/16 Срд 16:10:01  746855
>>746849
Их не может сильно много накопится, ведь после присвоения они все проебутся.
Аноним 18/05/16 Срд 16:12:12  746858
>>746855
по крайней мере при выходе в бэкграунд они могут остаться в памяти а новые - добавится потом при возвращении и onresume, если я правильно понимаю
Аноним 18/05/16 Срд 16:12:48  746859
А нужно юзать unbinder во ViewHolder-ах ?
Аноним 18/05/16 Срд 16:26:29  746875
14635779892920.jpg (197Кб, 914x508)
>>746858
Ебать, ну точно одни нюфаги everywhere.

Ему сказали использовать тулзы для анализа, нет он сидит и фантазирует.
Аноним 18/05/16 Срд 17:27:37  746929
>>746875
а существует ли место где сидят гуру ведроида?
Аноним 18/05/16 Срд 17:29:02  746932
>>746929
А че, не видно что-ли, вон гуру писал, к которому ты обращался
GOOGLE IO 2016 Аноним 18/05/16 Срд 17:41:03  746946
14635824634850.png (63Кб, 1161x863)
14635824634851.jpg (39Кб, 1132x756)
>>746929 да они все здесь Google "отдел разработки Android"

Кстати напоминаю: до главного события Android мира осталось 2 часа.

https://events.google.com/io2016/

Ждем ободряющей речи от Сундара. Интересно чем он решил нас удивить?
Может язык платформы поменяют на Kotlin или Swift или GO?
Аноним 18/05/16 Срд 17:43:24  746951
>>746946
Хотел подколоть и сделать скрытый текст, но вместо этого выделил :)
Аноним 18/05/16 Срд 17:43:53  746952
>>746847
На хаскелле
Аноним 18/05/16 Срд 17:49:00  746954
>>746946
Ну вот котлин уже в грейдле, маленькими шажками.
Аноним 18/05/16 Срд 18:00:52  746962
Сап, пишу подобие аудиоплеера, но т.к. ньюфаг, не совсем понимаю как правильно это все дело организовать.

В общем главное активити представляет собой список песен, доступных для воспроизведения. При нажатии на элемент выплывает фрагмент, в котором есть кнопка play/pause и seekBar для перемотки и отображения прогресса. Помимо этого при нажатии запускается сервис (в том же процессе), в котором работает MediaPlayer (занимается непосредственно воспроизведением музыки). В этом сервисе создается второй поток, из которого я раз в секунду отправляю в активити бродкаст, в котором содержится текущая позиция(прогресс) MediaPlayer'а. Приняв в активити бродкаст, извлекаю из него позицию и задаю ее как текущий прогресс seekBar'а во фрагменте. Если хочу остановить воспроизведение из фрагмента (нажать на кнопку play/pause) или перемотать песню изменив положение seekBar'а, то использую binding вместо бродкаста и просто вызываю публичную функцию для паузы/перемотки, которые прописаны в сервисе.

Норм я все организовал? Есть смутное подозрение что это немножко быдлокод, подскажите как лучше сделать.
Аноним 18/05/16 Срд 18:03:40  746964
>>746962
Все аудиплееры что я видел в опенсорсе - говнокод. Статическая ссылка на забайнденный сервис, ммм.... Мне кажется лучше на сикбар просто повесить анимацию и паузить ее когда сервис скажет.
Аноним 18/05/16 Срд 18:04:17  746965
>>746946
Текстовая версия будет? А то ивенты от гугла еще более унылые, чем последние от эпла.
Аноним 18/05/16 Срд 18:08:25  746969
>>746954
>>746962
Каждый раз отправлять бродкаст - это точно говнокод
Аноним 18/05/16 Срд 18:13:44  746975
Recycler-о-View-блядь пишет в очередной раз. Вроде как я более-менее улучшил ситуацию. Теперь ублюдок отжирает мегабайта по два. Пришлось вручную использовать Glide.clear в onViewRecycled, чистить абсолютно все, что глайд накэшировал при выходе в onStop
Аноним 18/05/16 Срд 18:14:01  746977
>>746962
> я раз в секунду отправляю в активити бродкаст
Лучше уж у биндера колбэк дергать, не? Чтоб gc не охуевал подчищать за тобой интенты.
Аноним 18/05/16 Срд 18:16:08  746979
Ан нет, просто не вызывался по какой-то причине onDetachedFromRecyclerView, смешно, ха-ха, блядь
Аноним 18/05/16 Срд 18:19:22  746983
>>746964
>>746969
А если повесить анимацию разве не получится расхождения между реальной позицией воспроизведения и отображаемой? Я стримлю музыку с вк, и вполне возможно что где-то воспроизведение будет останавливаться -> нужно это как-то учитывать, каждую секунду чекая все ли нормально. Кстати, чем грозит ссылка? Сервис у меня останавливается, если закрывается активити, что может произойти?
Аноним 18/05/16 Срд 18:20:12  746984
>>746977
Т.е. запилить метод в сервисе, который будет возвращать текущий прогресс и обращаться к нему раз в секунду из активити?
Аноним 18/05/16 Срд 18:22:54  746987
>>746984
Да. Либо сделать универсальный коллбэк, который будет иметь onPlayStart, onPlayPause, onPlayStop, onPositionChanged, чтобы синхронизировать изменения, которые инициирует плеер, с ui.
Аноним 18/05/16 Срд 18:26:18  746991
>>746987
Так и сделаю, спасибо анон )))
Аноним 18/05/16 Срд 20:06:13  747079
>>746987
А если сервис в другом процессе? Как тогда подписаться.
Аноним 18/05/16 Срд 20:12:14  747084
>>747079
Хуй знает.
Но думаю через сервис прослойку. У обоих сервисов есть aidl, чтобы дергать rpc, вот они и будут друг другу эти методы дрочить. У сервиса в главном процессе будет дергать oonPlayStart(), onPlayPause(), onPlayStop(), onPositionChanged(), который будет прокидывать их в ui. У сервиса в другом процессе будут дергаться play(), seek(), pause(), stop().
Бугурты по IO Аноним 18/05/16 Срд 20:29:40  747100
14635925810050.png (178Кб, 662x617)
Ну наконец будет с кем поговорить, осталось ей только кошачьи-ушки одеть и голос по приятнее сделать.
Аноним 18/05/16 Срд 20:41:08  747115
>>747100
А что это?
Аноним 18/05/16 Срд 20:43:48  747118
>>747084
>два сервиса
Звучит как хуйня.
Аноним 18/05/16 Срд 20:47:11  747119
>>747118
Ну, ты можешь использовать бродкасты.
Аноним 18/05/16 Срд 20:48:29  747120
>>746691
>>746741
Нет, приложение хоть и было хуёвым, но более-менее вменяемым. Оно до сих пор там есть, просто дело было 4.5 года назад уже.
А написал я потому что охуели нынче школьники. Сейчас миллион материалов по программированию под андроид, ссылки в оппосте, видео, миллион готовых решений. Нет, не хочу, хочу "сап посаны, я школота, накидайте мне гайдов :)))". У меня такого не было, хотя я каким-то выдающимся себя не считаю. Наоборот, по сравнению с местными я днище уже, тем более во время универа я разработку забросил.
Аноним 18/05/16 Срд 20:49:31  747122
>>747115
Умный Дилдак от гугла на агдроиде конечно же.
Сможешь с ним разговаривать когда будешь садиться на него.

Еще больше изврата прямо по ссылке http://google.com/io
Аноним 18/05/16 Срд 20:50:02  747123
>>747122
А ДАВАЙЕТ ВОЗЬМЕМ ХОРОШЕЕ ОТ ТЕЛЕГРАМА И ЗАХУЯРИМ ТУДА АВТООТВЕТЫ?
Аноним 18/05/16 Срд 21:27:53  747162
>>746987
Запилил коллбэк для обновления сикбара, для этого в активити создал поток, который обращается к сервису и обновляет сикбар, но почему-то код работает даже тогда, когда я выполняю обновление позиции сикбара прямо в параллельном потоке, хотя такого быть не должно, т.к. ни один поток кроме главного не имеет доступа к UI. Что я сделал не так?
Аноним 18/05/16 Срд 22:05:44  747193
>>747162
> для этого в активити создал поток
Ты уверен, что он это отдельный поток, а не хендлер на главном?
Аноним 18/05/16 Срд 22:35:34  747235
Скопировал вашу шапку в свой гайдик по джаве https://github.com/qqqlll/Java-Thread/wiki/Android

Реквесты по изменению/добавлению ссылок можете оставить здесь или на гитхабе.
Аноним 18/05/16 Срд 22:38:50  747240
>>747235
Ну учитывая что там я пишу про кскамарин и джаваскрипт, то это не слишком соответствует тематике, наверное стоит почистить.
Аноним 18/05/16 Срд 22:39:53  747241
>>747235
А нет, все ок, почистил, молодец.
Аноним 18/05/16 Срд 22:49:21  747257
http://vk.com/softdesigneducation для тех кто хочет начать мб полезно будет
Аноним 18/05/16 Срд 23:16:56  747288
>>747235
Зачем wiki pages, если все влезло бы в один readme.md?
Аноним 18/05/16 Срд 23:38:06  747321
>>747288
Там разметка удобная.
Аноним 19/05/16 Чтв 06:23:23  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 если что.
Аноним 19/05/16 Чтв 08:08:06  747442
>>747433
пиздец, откуда вы лезите только
Аноним 19/05/16 Чтв 08:10:31  747444
>>747442
Из тваеий мамки)))
Аноним 19/05/16 Чтв 08:16:31  747446
>>747442
Ты уж пожалуйста либо поясни что не так, либо уебывай
Аноним 19/05/16 Чтв 10:50:59  747499
>>747433
Потому что вьюхи это ресурс (классы) в которых у методов нет синхронизационных секций,
тк они рассчитаны на использование с одного потока.
Если ты не понимаешь чем череват многопоточный доступ к объекту, который его не поддерживает,
то иди читай "Java Concurrency in Practice".

При этом разработчик Android понадеялись на адекватность разработчиков (видимо зря) и
не стали делать проверки правильности треда в каждом методе.
Аноним 19/05/16 Чтв 11:04:37  747507
>>747499
Ты кажется не понял меня, я понимаю чем чреват многопоточный доступ, я не понимаю почему seekBar является исключением и прекрасно обновляет свою позицию даже не из главного потока, хотя делать этого не должен. Потому что изменение позиции seekBar не рассматривается как изменение состояния UI? По каким-то другим причинам? В этом вопрос.
Аноним 19/05/16 Чтв 11:10:00  747508
>>747507
Да при чем здесь "изменение состояния", это объект который не поддерживает многопоточный доступ - ВСЕ.
То что там что-то работает (конкретно на твоем телефоне) это просто совпадение.

Использование объекта с неправильного потока, НЕ вызывает АВТОМАТИЧЕСКИ исключение.
Тут видимо просто забыли добавить проверку (или посчитали не нужным, тк НЕадекватов как-ты единицы).
Аноним 19/05/16 Чтв 11:18:50  747511
>>747508
Няша, я просто пытаюсь понять почему данное вью ведет себя неправильно в данной ситуации. Про то, что вьюхи не поддерживают многопоточный доступ и так делать низзя я тоже знаю.
Аноним 19/05/16 Чтв 11:25:46  747513
>>747508
>Использование объекта с неправильного потока, НЕ вызывает АВТОМАТИЧЕСКИ исключение

А разве CalledFromWrongThreadException это не то самое исключение?
Аноним 19/05/16 Чтв 11:32:01  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.
Аноним 19/05/16 Чтв 11:33:51  747518
>>747516
> Но это уже будет undefined behavior
... если ты делаешь вызов с другого потока
Аноним 19/05/16 Чтв 11:39:36  747526
14636471770620.png (5Кб, 406x131)
>>747516
Спам-лист
Аноним 19/05/16 Чтв 13:59:41  747601
Есть ли резон страдать WeakReference-ами в ViewHolder ? В частности на ImageView.
Аноним 19/05/16 Чтв 14:06:21  747604
>>747601
Нет, когда они отцепятся от адаптера все почистится. А так только дрочить сборщик этими референсами будешь.
Аноним 19/05/16 Чтв 14:07:06  747605
>>747604
Окей, а в каких случаях его стоит использовать ?
Аноним 19/05/16 Чтв 14:08:06  747606
>>747605
Здесь советовали для хендлеров, например.
Аноним 19/05/16 Чтв 14:08:30  747607
>>747604
У меня просто странная ситуевина, количество занимаемой оперативы увеличивается примерно на 60кб внезависимости от того, сколько элементов в ресайклере, при триггере onPause - onResume. Не думаю, что критично, но хочется причину найти
Аноним 19/05/16 Чтв 14:09:00  747608
>>747606
Вроде как некоторые кастомные вьюхи не ресайклятся самостоятельно
Аноним 19/05/16 Чтв 14:09:54  747611
>>747607
p.s. Возможно, что виноват flow, не так давно начал его юзать, но вроде как по исходникам он особо там не должен ничего сохранять каждый раз по-новой
Аноним 19/05/16 Чтв 14:32:15  747629
Да, к слову, никто не знает, как сохранить текущее состояние вьюхи с использованием flow ? Вроде как у них написано, что это происходит автоматом, но не очень на то похоже. Пока что склоняюсь к кэшированию в локальную БД ( есть список на экране, который неплохо бы в onResume восстанавливать в том же состоянии, в котором он и был ) всех данных и их состояния, но на вскидку получится довольно тяжеловесно, если учесть, что список может быть на n*10^3 позиции, а в итемах присутствует не хило так картинок и данных
Аноним 19/05/16 Чтв 14:51:20  747641
>>747629
Мда, представляю какая у тебя там каша спагетти, лазанья - выбирай сам.
Видимо забота о контролирование сложностью проектов НЕ для тебя.

Но это в принципе норм для нюфагов, надеюсь только что никто это поддерживать не будет.
Аноним 19/05/16 Чтв 14:56:42  747649
>>747641
Нет, поддерживать это буду я, то небольшой учебный стартап. В принципе то каши и нету, и выглядит приятно вполне. Единственная проблема - вот эта вот утечка и сохранение state-ов. Со всем остальным, что есть, работать я уже давно научился.
Фактически, там получается классический набор ( по кр. мере для меня ) для клиент-серверки: rx, retrofit, flow, butterknife, ну и vk/fb/gmaps/gcm )
Аноним 19/05/16 Чтв 14:59:30  747652
>>747641
Проблемы только с view-частью, там мерзкий lifecycle порой покоя не дает, все еще не привык к нему нормально :( Все думаю записаться на курсы какие-нибудь, где построют теорию вменяемую, но времени нету. Только только 11 класс заканчиваю, плюс хочу на стажировку пойти на пару месяцев куда-возьмут, или, в идеале - джуном. Благо уже даже в gplay публиковал свой "ужас". Но то был совсем бешеный пиздец, еле-еле добили до конца приложение. За три недели кое-как сделали не самый простой заказик и теперь только под своим началом что-либо клепаем
Аноним 19/05/16 Чтв 15:22:24  747662
>>747641
Можешь посмотреть если хочешь, кинь сюда линк на свой гитлаб - добавлю. Только закоммичу через пару дней вменяемую версию с окончательным перекатом с фрагментов на flow
Аноним 19/05/16 Чтв 15:44:37  747668
Да, к слову, как можно минимизировать объем оперативы, пожираемый гугл картой из API_V2 ? А то она пиздос какая жирнявая. Просто в рот ебал.
Аноним 19/05/16 Чтв 15:45:00  747669
>>747668
порядка 50 мегов хамает просто без маркеров, без нихуя
Аноним 19/05/16 Чтв 16:08:09  747678
>>747649 >>747652
Хм, не хочу никого осуждать, скажу только imho: меньше -> лучше
(меньше библиотек, меньше зависимостей, меньше состояний/мутабильности, меньше кода == меньше сложность).
Чем ниже сложность - тем проще поддерживать ПО (и через год не появится желание переписать с нуля).

Тебе бы пойти куда-нибудь работать (не обязательно сразу в yandex), чтобы тебе это взрослые-авторитетные дяди объяснили.

> в onResume восстанавливать в том же состоянии, в котором он и был
Вот тут очевидно что у тебя слишком много состояний, почему так (перегруженный UI, много промежуточных стейтов)?
Аноним 19/05/16 Чтв 16:10:20  747679
>>747678
> Тебе бы пойти куда-нибудь работать (не обязательно сразу в yandex), чтобы тебе это взрослые-авторитетные дяди объяснили.

С чего ты взял, что везде работают взрослые авторитетные дяди?
Аноним 19/05/16 Чтв 16:21:45  747687
>>747679
Относительно 11-классника, это кто угодно закончивший вуз + >2 года опыта.
Аноним 19/05/16 Чтв 17:43:32  747740
>>747678
Я долго думал как бы получше сделать этот экран, в итоге сделал его с RecyclerView, который уже содержит в себе хэдеры, футеры и прочее. Так что не то чтобы много состояний.
Аноним 19/05/16 Чтв 17:45:50  747743
>>747678
я и не нацелен на то чтобы "сразу в яндекс". Собственно от стажировки/работы джуном я просто хочу опыта, дальше скорее всего фриланс
Аноним 19/05/16 Чтв 18:49:03  747809
>>747669
на каком девайсе? если на каком-нибудь нексусе с 2gb оперативы, 50 отожраных метров - это норма
Аноним 19/05/16 Чтв 18:53:37  747814
>>747669
на каком девайсе? если на каком-нибудь нексусе с 2gb оперативы, 50 отожраных метров - это норма
Аноним 19/05/16 Чтв 19:06:38  747823
>>747809
galaxy s tab
Аноним 19/05/16 Чтв 19:38:26  747845
>>747823
>>3 GB RAM Memory
Аноним 19/05/16 Чтв 20:13:07  747870
>>747605
Практически никогда. Серьёзно. Если возникнет ситуация, когда им нужно пользоваться, — у тебя уже будет достаточно опыта и ты уже сам поймёшь.
Аноним 19/05/16 Чтв 21:23:59  747932
>>747870
вроде видел как адаптер в него пихали для ресайклера, не уверен
Аноним 19/05/16 Чтв 21:32:15  747935
Анон аноныч подскажи совет начинающему нубу как лучше всего реализовать пользовательскую авторизацию? Отдельное активити или фрагмент? Где и как хранить логин/пароль.
Аноним 19/05/16 Чтв 22:00:27  747955
>>747935
Единственно верный вариант: https://developer.android.com/reference/android/accounts/AccountManager.html

Никаких shared prefs и sqlite для хранения credentials.
Аноним 19/05/16 Чтв 22:03:38  747959
>>747955
> 2016
> хранить что-то кроме куков
> не использовать OAuth2
Аноним 19/05/16 Чтв 22:06:33  747960
>>747959
Не куки, а access token.
Аноним 19/05/16 Чтв 22:56:36  747999
>>747960
Не куки, а пропуск в брюки.
Аноним 20/05/16 Птн 09:58:42  748171
А ведет ли кто-то список всех встречающихся девайсозависимых багов? Если нет, было бы вам интересно начать вести такой в гитхабе например?
Аноним 20/05/16 Птн 10:03:51  748177
>>748171
Костылей в программе много не бывает?
Аноним 20/05/16 Птн 10:17:58  748186
>>748177
Костыли костылями, но сранный мейзу мне сейчас сбивает паддинги у текстинпутедиттекста например. С учетом того, что они явно заданы в стиле.
Аноним 20/05/16 Птн 11:27:19  748242
>>747955
А в случае если нужно хранить очень много инфы пользователя ?
Аноним 20/05/16 Птн 14:16:33  748356
реально ли найти работу джуну? Че то мне кажется нихуя
Аноним 20/05/16 Птн 14:31:47  748360
>>748356
Сначала иди джуном на обычный десктоп. Потом
Аноним 20/05/16 Птн 14:45:55  748370
>>748360
ты про EE? По свингам и всяким джава эфиксам вообще ничего не видел
Аноним 20/05/16 Птн 15:34:44  748414
>>748370
На Xamarin дохуя видел.
Аноним 20/05/16 Птн 17:03:26  748491
>>748414
>99 вакансий на всё снг
Аноним 20/05/16 Птн 18:07:51  748554
>>748370
Дойчебанк и люксофт для дойче - куча вакансий на эту тему.
Аноним 20/05/16 Птн 18:08:42  748555
>>748414
Xamarin - это как PHP, но только в мире мобильной разработки.
Аноним 21/05/16 Суб 12:18:25  749112
Анон, реально вкатиться в андроид-программирование если до этого в IT не работал?
Аноним 21/05/16 Суб 12:43:30  749132
>>749112
Конечно нет, нужно быть программистом в третьем колене. Как и везде собственно.
Аноним 21/05/16 Суб 13:26:48  749200
>>743301 (OP)
А почему бы не писать приложения на js? В чем подводные камни? Сразу и на яфон и под андроид.
Аноним 21/05/16 Суб 13:51:43  749237
скажите, вот собрал я в instant run приложение. деплоится конечно быстро - и это круто. Однако если посмотреть внутрености apk - там лежит несколько dex файлов(т.е. включен multidex) + instant_run.zip файл. Можно ли как-то по быстрому отключить это говно, чтобы залить в стор норм apk?
Аноним 21/05/16 Суб 14:39:44  749280
>>749200
Никаких подводных камней. Сплошные плюсы.
Я вообще думаю, что нужно Linux на JavaScript переписать: сразу же столько новых возможностей появится и коммьюнити будет больше.
Аноним 21/05/16 Суб 14:40:35  749281
>>749237
Ты debug-сборку в Play отправлять собрался?
Аноним 21/05/16 Суб 14:47:23  749290
>>749200
Вроде как далеко не весь функционал удобно на js писать, но то мое ИМХО, особо не вникал.
Аноним 21/05/16 Суб 16:56:37  749400
>>749237
assembleRelease должен собрать нормальную сборку, но я не уверен, не пользуюсь инстант раном.
Аноним 21/05/16 Суб 17:13:12  749423
>>749400
Я всегда для релизов юзаю "генерейт сайнинг апк". Хуй знает, может это глупо, но уже привычка.
assembleRelease - юзаю чтоб sha1 посмотреть.
Аноним 21/05/16 Суб 17:30:49  749449
Пробовали уже новые плюшки? Firebase? Autolayout ConstraintLayout?

>>749423
Удобнее singningConfig прописать в градле и делать assembleRelease.
Аноним 21/05/16 Суб 18:12:41  749498
Sup! Пацаны, вот в этом видео типаня на 4ой минуте задает какие то строки, которые потом должны получаться картинками. Но они нихуя не получаются. Мб он что то еще юзает или это стандартные какие то константы в андроиде?
Просто я ньюфаг и ебусь с этой парашей уже 2 дня.
https://www.youtube.com/watch?v=1tDsf7Sw6-U
Аноним 21/05/16 Суб 18:49:52  749546
14638457930590.png (56Кб, 580x700)
ТРЕД НЕ ЧИТАЙ - СРАЗУ ЗАДАВАЙ
Надоело пилить AsyncTask в каждой Activity. Хочу такую библиотеку чтобы в одну строчку можно было указать url картинки и ид вьюшки. Недавно случайно наткнулся на Volley, но на деле там не то, что обещают. Еще увидел android-query(https://code.google.com/archive/p/android-query/), но не нашел для нее примеров использования. Знаю еще, что есть picasso, но чем-то она меня отталкивает.
А мне нужно реализовать ListView с картинкой и строками в каждом пункте (как на пике). Важный момент: адрес картинки у меня возвращается кастомным методом, указывая который в качестве аргумента конечно словит исключение.
Что посоветуете?
Аноним 21/05/16 Суб 18:54:11  749554
>>749449
>Удобнее singningConfig прописать в градле и делать assembleRelease.
Куда оно апк помещает в таком случае?
Аноним 21/05/16 Суб 19:08:14  749580
>>749546
> Что посоветуете?
Повеситься.

> Хочу такую библиотеку чтобы в одну строчку можно было указать url картинки и ид вьюшки
Glide, Picasso, Universal Image Loader
Отталкивает, не нравится — ну тогда напиши свою либу и не задавай глупых вопросов.
> адрес картинки у меня возвращается кастомным методом, указывая который в качестве аргумента конечно словит исключение
Подъезжая к вокзалу, у меня слетела шляпа. Прекрасный повод переписать по-нормальному.
Аноним 21/05/16 Суб 20:13:27  749670
>>749498
Это скорее всего какие-то коды символов. Так что то там иконки тупо текстом получаться.
Аноним 21/05/16 Суб 20:29:08  749680
>>749554
Там же, где и все остальные apk, в папке build.
Аноним 21/05/16 Суб 23:00:07  749854
>>749680
При генерейт сайнинг апк апк помещается в папку с апликухой.
Аноним 21/05/16 Суб 23:03:46  749858
>>749854
Неправда
Аноним 22/05/16 Вск 00:35:08  749942
Пацаны, а поясните еще за такую тему. Я пилю приложуху по погоде, используя АПИ с опенвезермапс. Так вот я хочу сделать менюшку, что бы можно было вводить название города и приложуха показывала там погоду. Единственное, что я не догоняю, это как менять АПИ, когда переходишь к другому городу? Просто я задаю АПИ строкой и из него все парсю, но хоть убей не понимаю как сделать динамическую смену АПИ во время работы приложухи.
Аноним 22/05/16 Вск 00:42:55  749947
>>749942
Ты как-то странно объясняешь, может ты чего-то не понимаешь, что значbт менять API? Если ты про xyi.pizda/api/weather?city=tagil и хочешь получить в геленджике, а не тагиле, то надо просто запрашивать xyi.pizda/api/weather?city=gelendjik, никакой смены API.
Аноним 22/05/16 Вск 01:04:07  749969
>>749947
ну я не догоняю просто
тип в видосике сделал менюшку, в которой меняет город и показывает его погоду
а я не догоняю как он это делает
ведь для этого надо загонять новую АПИ
линк на видосик: https://www.youtube.com/watch?v=1tDsf7Sw6-U
Аноним 22/05/16 Вск 01:10:40  749979
>>749858
Кому ты пиздишь? Апк будет в папке app.
Аноним 22/05/16 Вск 01:11:29  749981
>>749969
Тебе уже ответили, что делать. Думать и васяновидосики за тебя смотреть никто не собирается.
Аноним 22/05/16 Вск 01:17:12  749990
>>749981
тот ответ содержал и так понятные истины
а меня интересует именно конкретный ответ
Аноним 22/05/16 Вск 01:23:07  749992
>>749990
Предлагаю тебе пойти нахуй.
Достаточно конкретно?
Аноним 22/05/16 Вск 01:28:03  749995
>>749969
Сделай функцию генерации урла для запроса, если поп рсотому то:
return String.format("xyi.pizda/api/weather?city=%s", cityName);
В реальных проектах это конечно не так делается.
Аноним 22/05/16 Вск 01:36:53  749998
>>749995
но ведь тогда надо будет загонять новую АПИ
просто я задаю АПИ строкой и из него все парсю
вот видосик: https://www.youtube.com/watch?v=1tDsf7Sw6-U
тип в видосике сделал менюшку, в которой меняет город и показывает его погоду
а я не догоняю как
АПИ ведь загонять придется новую
Аноним 22/05/16 Вск 01:51:53  749999
>>749992
я просто попросил помощи и не получил ответ
че ты агришся, даун?
>>749995
а вот как он делает через
connection.addRequestProperty("x-api-key",
context.getString(R.string.open_weather_maps_app_id));
так можно реализовать?
Аноним 22/05/16 Вск 02:03:29  750000
>>749999
нет
Аноним 22/05/16 Вск 09:23:10  750092
>>749999
Анончик, а почему ты разговариваешь как 14-летний даун-аутист?
Аноним 22/05/16 Вск 12:40:35  750190
>>750092
хз
я даже не помню, что вчера тут делал
))0
Аноним 22/05/16 Вск 13:24:02  750220
>>749942
>>749969
бросай свои паршивые васяновидосы и дуй на udacity смотреть официальный курс от гугла.

Тем более, что на курсе они делают ровно тоже самое и скорее всего твой васяновидос оттуда все слизал подчистую
Аноним 22/05/16 Вск 14:02:35  750231
>>750220
Школьник иди нахуй со своим курсам, этот тред для крепки мидлов/синьеров
Аноним 22/05/16 Вск 14:43:54  750262
>>750231
> этот тред для крепки мидлов/синьеров
Эх, если бы...
Аноним 22/05/16 Вск 15:04:55  750289
Какие шансы создать казуальную игру и иметь доход с рекламы в ней хотя бы тысяч десять в месяц? Насколько это реально? Хватит ли года 24/7 учебы серьезной? Пр условии, что я знаю простейшие аспекты программирования, и пару тройку программ-парсеров на андроид создавал. Знаете, просто очень хочу создать своё творение в виде игры, но мне больно смотреть на то, что многие игры, сделанные другими людьми, просто невостребованны на рынке Google Play. Это же огромная почва для грусти, когда твои потраченные часы не окупаются даже радостью людей, не то что деньгами.
Аноним 22/05/16 Вск 15:31:42  750313
>>750289
Если у тебя нет хотя бы $5k на рекламу, то никакх.

Стор завалин фритуплейным парашей погорло, а ведь есть еще фирмы которые зарабатывают копипастой успешних игр.
Знаю одну такую, там работают сотни "разработчиков", которые конвеером выпускают это гавно.
Google их конечно переодически банит, но их это не останавливает - больше сотни аккаунтов (и это только одна фирма).
Аноним 22/05/16 Вск 15:48:36  750330
>>749942
Что в твоем понимании представляет из себя API ? Ты уверен что понимаешь значение этого слова ?
Аноним 22/05/16 Вск 15:50:02  750332
Да, к слову, снова 11-класснико-блядь пишет в тред. [С надеждой в голосе] Может кто-то все-таки делал свое сохранение стэйта с использованием flow для того чтобы при проходе вверх по бэкстэку экраны оставались в том же состоянии что и вниз ?
Аноним 22/05/16 Вск 15:54:08  750337
Кто уже поюзал Firebase Database? Как в нем эффективно работать со списками? А то у меня сейчас 1к мелких объектов полностью считываются в память, а из интерфейсов только iterator по ключам есть, без случайного доступа.
Можно конечно было бы сначала считать только ключи, и ходить в DataSnapshot по этому ключу по необходимости, каждый раз десериализуя объект, но это как то звучит левачно.

>>750332
Да flow мало используется, нахуй ты его вообще брал. Тебе даже его никто не советовал здесь.
Аноним 22/05/16 Вск 16:01:02  750342
>>750337
Firebase это бд, которая позволяет напрямую из андроида работать с ней без апи, я правильно понял?
Аноним 22/05/16 Вск 16:05:04  750343
>>750342
Ну как без апи, у нее есть rest api, но соль в том, что через сдк она самообновляемая. Т.е. на объект вешаешь листнер, и этот колбек отработает, как только с этим объектом что-то случится.
Да и до полноценной бд как до берлина. Фильтрация у меня чет не запахала, сортировка только по одному полю. Для серьезных проектов не подойдет, но для какого-нибудь мелкого проекта думаю сойдет.
Аноним 22/05/16 Вск 16:08:51  750346
>>750289
где то была стата, что 5% разработчиков, собирают 90% прибыли, остальные сосут хуи. Вот и думай, попадешь ли ты в эти 5%
Аноним 22/05/16 Вск 16:38:50  750376
14639243303740.jpg (105Кб, 1280x800)
>>749549 (OP)
Анончики, задаваю этот вопрос сразу в 2х тредах по C# и Java.

Есть знания в области геймдева со стороны 3D графики.
Хочу начать изучать кодинг.

И вот вопрос:
Что же будет перспективнее и более реально в соотношении время обучения/возможности на этом зарабатывать? На чем реальнее и перспективнее будет делать простые игры для мобилок?

Как вариант это уже более-менее знакомый мне Unity + C#
Либо Java + другой движок

И в чем из этих языков будет проще отстраниться от конкретно геймдева в сочетании с движком и уйти просто в кодинг, не завязанный на играх вообще?
Аноним 22/05/16 Вск 16:52:39  750388
>>750337
Он оказался удобным дофига. Плюс абстракция то будет поболее, чем со фрагментами. И практически полная замена EventBus-а сервисами ( flow-овскими )
Аноним 22/05/16 Вск 17:02:32  750396
>>750337
И да, в 17 треде советовали вроде ( помню что было, точно не припомню, может и в 16 ). Принципиально иной подход, но он блять удобен и более кампактен + абстрагирован. И под mvp тот же заточен больше
Аноним 22/05/16 Вск 17:44:36  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
Аноним 22/05/16 Вск 17:51:27  750423
>>750417
в translate.google.com можем ?)
Аноним 22/05/16 Вск 17:54:37  750426
>>750423
Эх, сейчас бы в 2016 на русском гуглить. Можем, конечно же.
Аноним 22/05/16 Вск 18:07:51  750460
>>750388
>>750396
Что ты чешешь? Нахуярил абстракция удобнее и тд, а сам ебеться уже неделю с ним.
Аноним 22/05/16 Вск 18:08:56  750463
>>750417
Что за хуйня, недавно только мигрировались с C2DM на GCM?
Аноним 22/05/16 Вск 18:09:13  750464
>>750460
У меня по нему один вопрос неделю остается, но на крайняк сделаю кэширование в локальной бд, благо это просто + всяко оффлайн режим пилить нужно будет. В остальном же помимо state-а меня flow устраивает более чем
Аноним 22/05/16 Вск 18:17:25  750478
>>750463
После IO появилась та же хуйня от firebase.
https://developers.google.com/cloud-messaging/android/android-migrate-fcm#import_your_gcm_project_as_a_firebase_project
Аноним 22/05/16 Вск 18:19:53  750482
>>750478
Дак а профиті появились какие-то? ГСМ не закрывается хоть?
Аноним 22/05/16 Вск 18:21:36  750483
>>750464
Уже есть тысячи вариаций архитектуры мвп с активити и фрагментами, зачем нужны ноунейм фловы?
Нет на полном серьезе? Если бы это было нормальное решение коммьюнити бы уже его продвинуло, но нет.
Аноним 22/05/16 Вск 18:21:51  750484
>>750482
Стабильнее, кода меньше и прочее.
Мне-то, блять, что делать?
Аноним 22/05/16 Вск 18:33:24  750492
>>750484
так нахуй перекатываться, gcm же будет жить?
Аноним 22/05/16 Вск 18:34:06  750493
>>750492
Мне похуй, я люблю новые технологии, хочу перекатиться туда.
Аноним 22/05/16 Вск 18:38:30  750500
>>750493
Бля, это не новые технологии, я уверен их файрбейс тот же гсм.
Аноним 22/05/16 Вск 18:43:58  750506
>>750483
Ну посмотри что-ли, может поймешь, когда прикинешь как это по-сравнению с фрагментами профитно.
Аноним 22/05/16 Вск 18:45:07  750508
>>750506
Коммьюнити забила хуй, мне то зачем оно?
Аноним 22/05/16 Вск 18:46:22  750511
>>750508
Ну ты же хочешь понять, зачем нужны ноунейм фловы. Мое дело сказать, твое - решат что будешь делать. Я просто говорю, что использовать flow, ИМХО, профитнее
Аноним 22/05/16 Вск 19:06:31  750548
Че скажите про Constraint Layout? Как по мне хуйня для новичков, которых пугает xml, не?
Аноним 22/05/16 Вск 19:25:52  750584
>>750548
вроде в нем заебешься что-то сложное делать
Аноним 22/05/16 Вск 19:36:55  750599
>>750584
Уже полгода делаю в нем проект. Это аналог лейаута из айос. Там в принципе очень удобно, если понять, для чего он тебе. .
Аноним 22/05/16 Вск 19:37:57  750601
>>750599
Всмысле полгода? Его же только презентовали.
Аноним 22/05/16 Вск 19:44:33  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
Аноним 22/05/16 Вск 19:45:40  750612
>>750611
кхм
Аноним 22/05/16 Вск 19:46:00  750613
>>750611
То конечно хороший перекат, я люблю рекурсию, но...
Аноним 22/05/16 Вск 19:46:29  750614
>>750601
Есть аналог - cassowary-layout..
Аноним 22/05/16 Вск 19:49:34  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/06/16 Птн 19:32:38  760815
>>744766
Удвою.
Аноним 05/06/16 Вск 21:27:15  762598
Можете по программированию под андроид накидать годных книг? Если имеются адекватные переводы, то можно и их.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 531 | 24 | 101
Назад Вверх Каталог Обновить

Топ тредов