Tornike
Службы тогда без пуша могут запрашивать состояние. https://m.habr.com/ru/post/349102/ посмотри про закрепление в панели уведомлений, чтоб работало в фоне
Я ошибся в формулировке. Это не пуш, а просто уведомление, так как его послыает приложение, основываясь на данных с сервера. "Службы тогда без пуша могут запрашивать состояние. " Не понял, если честно
Александр
Я ошибся в формулировке. Это не пуш, а просто уведомление, так как его послыает приложение, основываясь на данных с сервера. "Службы тогда без пуша могут запрашивать состояние. " Не понял, если честно
Ну, собственно, раз формулировка поменялась, то и ответ непонятный. Пуши и служба в твоём случае решают схожую задачу - получение данных от сервера. Выбери попроще и делай
Turalllb
Что-то никак не найду проблему. Вот локализовал ее. Если этот код запускается, по клику на изображение, то всё работает как положено, с анимацией. Если этот код запустить в onResume, то нет ни анимации ни конечного увеличенного изображения. Если запустить в onResume но без анимации, то увеличенное изображение есть https://pastebin.com/prZvzrar
Нашел подсказки по поводу моего вопроса. Если запустить анимацию где то в onCreate или OnResume, то на экране ничего не нарисовано, в таком случае аниматор может не показать конечный результат преобразований. Поэтому если кликнуть вручную, то анимация работает, а в onCreate нет. Действительно ли есть такие проблемы с аниматором, как реализуются анимации, которые работают сразу после отрисовки экрана , разве onResume не гарантия этого ?
Turalllb
Если я запускаю анимацию в onResume не работает ничего, а если обернуть в Runnable запуск и с задержкой на всего 1 миллисекунду , то всё работает.
Turalllb
Вообще не понимаю, почему из потока через handler можно притрагиваться к UI
Sergey
Во-вторых как ты из ранэбле обращаешься к юи?
Turalllb
Во-первых, нет задержки на 1 миллисекунду.
в смысле если задавать 1 миллисекунду в postDelay, то она с этой точностью не будет обработана и смысла в этой задержке никакой?
Michael
https://stackoverflow.com/a/7289908/6124719 Суть: > If you want to play the animation immediately, without requiring interaction, then you might want to call it from the onWindowFocusChanged() method in your Activity, which will get called when Android brings your window into focus.
Sergey
Проверь через вывод в лог.
Turalllb
Во-вторых как ты из ранэбле обращаешься к юи?
Я в hundler.postDelay запускаю этот код https://pastebin.com/prZvzrar , который находит на экране ImageView миниатюру, находит большую версию ImageView и осуществляет анимацию. Почему работает я не знаю
Turalllb
И постДелей у тебя сработает на следующем цикле твоего юи потока.
ну понял. Просто я поставил такую маленькую задержку, чтобы понять зависит ли то что анимация в onResume не показывает результат, от того что на экране еще ничего не отрисовано. Но как я понимаю задержка в 1 миллисекунду не доказывает то что проблема не в этом. Проблема всё еще может быть в том что на экране ничего не нарисовано. Да?
Turalllb
Да
хорошо, но я всегда думал, что onResume - значит всё уже нарисовано. Выходит onResume - всё передано на отрисовку ?
Turalllb
Я в hundler.postDelay запускаю этот код https://pastebin.com/prZvzrar , который находит на экране ImageView миниатюру, находит большую версию ImageView и осуществляет анимацию. Почему работает я не знаю
и что насчет этого моего ответа, почему получается находить в UI ImageView из потока и анимировать его? ВРоде из потока я даже Visible не должен суметь ставить
Mr O
хочу сделать читалку под формат fb2, посоветуйте библиотеку пожалуйста
Turalllb
Хватит обычного post, без задержки. Как вариант еще можно завязаться на onWindowFocusChanged, но придется отслеживать, что анимация уже запускалась.
ведь главная цель, чтобы после onResume дождаться когда цикл отрисовки экрана завершится? Просто не понимаю, как добавление hundler дает гарантию, что пошел след цикл отрисовки. Ну состояние анимации я отслеживаю.
Turalllb
onWindowFocusChanged вот этот калбек вроде то что нужно
Turalllb
Спасибо всем больше, вроде разобрался в этой какашке
Andrey
привет я тут ломаю пальцы об MVVM. интересует двухсторонний биндинг, вернее, чтобы из EditText значение попадало в ObservationField в модель. какая-то хрень, то пишут что достаточно в EditText добавить параметр text="@={model.etValue}", то добавить change листенер, параметра которого я у себя в принципе не нахожу. есть у кого-то работающий пример? чтобы из макета сразу в модель, без watcher в активити(фрагменте)?
Андрей
Товарищи, может кто в личке подсказать по Room? Всю голову себе сломал с ForeignKey, если у кого есть минутка, задам вопрос в личку.
Андрей
Есть папка, в папке будут карточки. Нужно что бы у всех карточек(которые будут в последствии добавляться) в определенной папке был ID этой папки. Пытаюсь через ForeignKey связать ID папки с ID карточки. Прописываю в Data классе карточке дочерний ключ Card_id, который будет связан с Folder_id. Но тогда, что бы добавить новую карточку, обязательно требуется прописать ей Card_id, который должен по идее автоматом ставится с Folder_id. Не понимаю, как тут быть. Мне нужно, что бы я мог добавить новую карточку, введя только ее название. А Id сам добавлялся, исходя из папки, в которой будет карточка создана.
Mr O
Добрый день
Mr O
Есть ли библиотеки для чтение формата fb2 ?
Yusuf
Из-за чего NotificationManager.notify() может не обновлять уведомление? Запустил foreground service с уведомлением и notificationId, потом вызываю NotificationManager.notify() с тем же notificationId, но оно не заменяет предыдущее уведомление. Если еще раз запустить startForeground(notificationId, notificationBuilder().build()) обновляется, но через сам менеджер нет
Yusuf
Вроде бы если одинаковые айди должно меняться ведь
Nikolay
не работает( это я нагуглил сразу же
ну тогда надо смотреть детальней что не так. У меня работает 🙂
Andrey
ну тогда надо смотреть детальней что не так. У меня работает 🙂
вспомнил еще такую штуку, из модели получаю LiveData. когда делаю getValue() приходит null, когда подписываюсь на данные через Observer - данные приходят. пока не дошел до этого, но в чем может быть проблема? вдруг знаешь)
Yusuf
Можно ли привязать активити к работающему сервису? Как это делается?
One
Можно ли привязать активити к работающему сервису? Как это делается?
Сервис привязывается к активити через биндер. Или можно посылать что нибудь через броадкасты или сделать свой евент бас через rx или использовать го овую имплементацию
Yusuf
Сервис привязывается к активити через биндер. Или можно посылать что нибудь через броадкасты или сделать свой евент бас через rx или использовать го овую имплементацию
Кажется я понял. Обычно я запускаю сервис и потом привязываюсь. Когда он и так запущен startService необязателен, можно сразу передать в bindService нужный интент, так ведь?
Anonymous
Ребят, создавал приложение - всё запускалось. И вдруг при попытке запуска оно просто останавливается теперь всегда.. Ничего пока не кодил, просто элементы в xml размещал. Что не так? Ошибка только в логах видна: https://pastebin.com/DWY0tZfL Вот xml — https://pastebin.com/7s0maFHP
Kota
table null хотя должен быть не null
Alexey
А что за table?
это откуда ошибка то? У тебя студия крашится?
Сергей
Если я в адаптер RecyclerView передам контекст утечки памяти не будет?
если его хранить в переменной класса то непременно будет.
Dmytro
Здраствуйте.. Почему мы можем написать такое в дочернем классе AppCompatActivit? val db = (this.application as BasicApp).database где BasicApp class BasicApp : Application() { private var mAppExecutors: AppExecutors? = null val database: AppDatabase get() = AppDatabase.getInstance(this, mAppExecutors!!) val repository: DataRepository get() = DataRepository.getInstance(database) override fun onCreate() { super.onCreate() mAppExecutors = AppExecutors() } } Рефлексии ж нету тут.. И BaseApp c AppCompatActivit ничем кроме предка не связаны
Dmytro
а почему должны не мочь?
Рефлексии ж нету тут.. И BaseApp c AppCompatActivit ничем кроме предка не связаны
Dmytro
а почему должны не мочь?
Абсолютно разные потомки
Алексей
this.application - это получить текущий объект Application в вашем приложении. BasicApp - он и есть.
Алексей
Все Activity в приложении имеют доступ к текущему Application, потому что так устроен Андроид.
Dmytro
this.application - это получить текущий объект Application в вашем приложении. BasicApp - он и есть.
Это из-за этой строки в манифесте? <application android:name=".BasicApp"
Алексей
да
Dmytro
да
Спасибо вам за то что обьяснили
Dmytro
Я иерархию знаю.. Не в том была проблема
Dmytro
Я иерархию знаю.. Не в том была проблема
Просто я не понял как мой "Application from AppCompatActivity" был связан с каким то вообще левым классом BaseApp..
Dmytro
И почему вообще можно было кастовать this.application as BasicApp Ну и ответ в том что в Манифесте был прописан "custom application class" <application android:name=".BasicApp"
Andrey
ответ в том, что BasicApp наследован от App
Dmytro
ответ в том, что BasicApp наследован от App
Ну да но именно ж его прописали в манифесте.. Наследника ж
Andrey
и указав наследника App в манифесте, приложение использует не App, а его наследника, вернее App оно тоже использует, но BaseApp идет какое то расширение функциональности, переменные, синглотоны и т д
Andrey
ну и кастуя App к BasicApp ты получаешь доступ к переменным BasicApp
Andrey
ооп + знание поля в манифесте
Dmytro
ооп + знание поля в манифесте
Вот знания поля в манифесте отсутствовало(
Dmytro
ну и кастуя App к BasicApp ты получаешь доступ к переменным BasicApp
А так по моему очень полезный "инструмент". Спасибо)
Anonymous
это откуда ошибка то? У тебя студия крашится?
Приложение на виртуальном устройстве
Turalllb
Подскажите, а возможно сделать так чтобы в cordinatorLayout при скоролле вверх исчезал Toolbar, но с таким вот условием: если toolbar хоть немного уже скрылся , то сам скроется полностью, если пользователь недоскроллит ? без кастомных реализаций это возможно?
Ваня
Как реализовать слиптаймер для плеера?
Ваня
Ресивер, который кидает интент сервису?
Andrey
ну тогда надо смотреть детальней что не так. У меня работает 🙂
а, ну да. биндинг собственно забыл в активити создать. layout передавал через setContentView()
Turalllb
кажется, это snapMode какой-нибудь
точно) я думал в модах такие фишки не предусмотрены, оказывается много интересного. Спасибо
padmitriy
Народ, а где лучше почитать как работает static и другие модификаторы под капотом? Может литература хорошая есть или статьи?
padmitriy
чтобы не просто тупо бояться статики, а знать ПОЧЕМУ, к примеру)
Turalllb
Народ, а где лучше почитать как работает static и другие модификаторы под капотом? Может литература хорошая есть или статьи?
легко гуглится, инфы валом. Но лучше взять книгу и полностью изучить базовые вещи последовательно, а не тогда когда покажется необходимым. Из простоых книг это философия Java или Java для чайников от Шилдта
Spirit
Добрый вечер господа. Скажите пожалуйста, реально вытащить пароль от инстаграмма, имея доступ к телефону прямо, ну adb в том числе