Bulat
какие, например?
Bulat
ручками
Это как? Типа разработчики выезжают к клиентам и кидают себе дозвон?
dev_sheep
Всем привет, ребята :) Понимаю, что этот вопрос задавали много раз, но, возможно, для меня будут другие рекомендации. Собственно, вопрос: где лучше изучать android, если вся деятельность связана с бэкэнд разработкой на Java? Просто уже подташнивает от бэкэнд-проектов и тьмущи кода, когда занимаешься этим все время. Хочеццо чего-то красивого - андрюша, как мне кажется, подходит. Только вот где его быстренько изучают и качественно?
dev_sheep
Заранее спасибо за ответы :)
dev_sheep
:D
dev_sheep
+
dev_sheep
да не в коде даже дело. Хочется интерфейс поделать
dev_sheep
поиграться с приложениями
Anton
получать ux
dev_sheep
как хобби, шталь. Давно хотел начать, да время не позволяло
Bulat
+
На coursera.org есть курс по Android - рекомендую
dev_sheep
я не юзаю айось)
Bulat
интереснее всего на js фронты писать)
Bulat
там столько боли
Bulat
у нас в компании самые грустные - фрондэндчики
Bulat
самые невыспавшиеся
Vladislav
нужно устраивать свинг-вечеринки, когда андроидисты будут писать бекенд, а серверисты под андроид
dev_sheep
спаси и сохрани)
dev_sheep
от жса
dev_sheep
хоть без него и никак, но у нас дотнетеры его пишут по большей части)))
dev_sheep
нас так, иногда напрягают
dev_sheep
И все-таки, сможет кто еще годных ресурсов накидать?
dev_sheep
Мне правда не хочется тратить время на всякий шлак, которого много
dev_sheep
Знаю курс на udemy вот
dev_sheep
Мэйби есть что-то лучше?
dev_sheep
мне чисто стартануть, а там разберусь
dev_sheep
хм, окей)
Aleksandr
документация по андроиду
Aleksandr
самое оно
Vladislav
гитхаб тогда уж с годными семплами
Aleksandr
по вопросам в stackoverflow
Aleksandr
документация по андроиду
вот именно официальная гугловская
Sergey
https://developer.android.com/training/index.html тут есть линк
Sergey
на юдасити курс
Vladislav
документация по андроиду
через два часа он уже будет пилить свой костыль для асинктасков
Aleksandr
прини всем привет. Есть recycler view во врагменте, по нажатию на item которого открываеться новый фрагмент. Во время открытия происходит еще addSharedElement.
Aleksandr
все работает нормально, кроме первого элемента ( который индекс 0)
Aleksandr
никто не сталкивался с таким?
Aleksandr
TransitionName точно уникальные
Andre
А как этот самый драйвер сделать, гугл молчит..
Это уже в момент разработки прошивки надо делать. на с++ писать и прочее. Думаю ты это врядли сделаешь.
Aleksandr
не, никто?
Ruslan
so в jar? точно не в aar?
Constantine
Добрый день, прошу помощи с написанием простенького rxBus-а. В теории он должен принимать сообщение от сервиса и передавать уведомлять фрагмент/активность. Но все мои попытки были нещадно разбиты об "
Constantine
CalledFromWrongThreadException
Ruslan
ты в background-e трогаешь вьюхи
Ruslan
так делать нельзя
Constantine
Я понимаю почему это происходит, но как с этим бороться так и не придумал
Сергій
CalledFromWrongThreadException
Ну так прокидай ивент на главный поток
Constantine
Ruslan
либо через view.post(() -> {...}), либо подписывайся в главном потоке
Artem
Ребята, помогите советом. У меня есть активити А с лоадером в котором загружается и хранится презентер. Я из активити А перехожу в активити В, добавляю какие-то данные в бд и возвращаюсь в активити А. В активити А в данном случае мне нужно перезагрузить лоадер. Есть какой-то оптимальный способ отслеживать измененные данные, что бы лоадеры постоянно не перезагружать?
Constantine
При построении класа сделал такие же манипуляции с PublishSubject<Object> как и с банальными Observable
Constantine
Но всё равно ответ приходит не в UI thread
Сергій
Но всё равно ответ приходит не в UI thread
Покажи где ты слушаешь ивент
Constantine
Слушаю во фрагменте через subscribe (onNext, onError)
Сергій
Слушаю во фрагменте через subscribe (onNext, onError)
Возможно у тебя есть ещё какой-то flatMap с походом в сеть
Сергій
Лучше покажи код, чем гадать
Constantine
Всё, спасибо, просто как раз при подписывании на него нужно было использовать observeOn
Constantine
Благодарю
Igor
Ребят, как создать “красивый” диалог с двумя полями и кнопкой? Может есть какие-нибудь шаблоны? По умолчанию с DialogFragment получается какая-то фигня.
Сергій
AlertDialog with contentView, проще некуда )
Artem
AsyncTaskLoader
Глеб
мм...сек..
Vadim
как можно привести к типу integer .rotationBy(180f).scaleX(1f).scaleY(1f)
Глеб
AsyncTaskLoader
Блин, начал смотреть изобретать)) и вспомнил.. короче есть CursorLoader - наследник AsyncTaskLoader-а это как раз твой случай работы с бд
Глеб
Блин, начал смотреть изобретать)) и вспомнил.. короче есть CursorLoader - наследник AsyncTaskLoader-а это как раз твой случай работы с бд
только там подразумевается что твоя бд завёрнута в content provider и лоадеровский внутренний ForceLoadObserver подписывается на ContentResolver (registerObserver(URI))
Глеб
только там подразумевается что твоя бд завёрнута в content provider и лоадеровский внутренний ForceLoadObserver подписывается на ContentResolver (registerObserver(URI))
И в этом случае - вобще всё из коробки работает. Но тебе надо будет имплементить ContentProvider. Если без него - тогда тебе нужен враппер над БД который будет работать с подписками и подписываться всеми лоадерами .... точнее их обсерверами (ForceLoadObserver) на твою бд. БД будет синглтоном - единственная на процесс. И потому лучше тогда не смотреть в сторону нескольких активностей - то есть переходить к singleActivity - подходу
Artem
Ну у меня сейчас что-то похожее на второй подход, курсор лоадер не подходит под все мои случаи(
Artem
спасибо)
Artem
у меня отдельный интерфейс через который записывается и считывается что данные были обновлены, но думал к какому-то более удобному подходу перейти
Глеб
посмотри CursorLoader исходники..... там создается в конструкторе ForceLoadObserver, ты делаешь также и там же регай его на твою базу (она должна уметь хранить лист обсерверов и оббегать их дергая onChange при завершении транзакции) в onFinished лоадера - отписывайся. После этого колбэка лоадер отваливается - он не будет больше использован. а в ду-ин-background - замени "поход за данными в контент провайдер" на "поход в твою базу" В итоге ты, вдохновляясь существующим CursorLoader-ом по факту пишешь свою версию - наследуясь от AsyncTaskLoader-а
Глеб
пожалуйста
Глеб
Cursor loader оббегает всю таблицу, что бы проверить актуальность данных?
Он просто получает курсор и всё. А курсор - это посути итератор-по-записям/подключение к бд, который грузит небольшой лимит записей (<1мб) и по мере движения (moveToNext, moveToPos) - догружает необходимые записи. Если в этот момент кто-то пишет в таблицу не исключён момент "неконсистентности", однако, если каждая транзакция завершается уведомлением обсерверов, все подписаные загрузчики тут же (doInBackground) перезапросят новый курсор, поэтому - рассинхрон там мало возможен, хотя не исключен
Artem
спасибо)
Глеб
пожалуйста