Mike
допустим активных 20 асинктасков. ~8 за раз могут выполняться
Почему именно 8 и что значит «за раз»?
Yuri
за раз , то есть одновременно. 8 в среднем. взял за основу 8 ядерный проц
Mike
как это читать — я не знаю :)
Yuri
Почему именно 8 и что значит «за раз»?
поэтому не думаю,что стоит использовать много активных асинктасков
Yuri
ну выполнятся последовательно — и что?
будетет выполняться за один промежуток столько асинктасков, сколько ядер в проце. остальные асинк будут в выжидании
Max
поэтому не думаю,что стоит использовать много активных асинктасков
А если будет много rx observable выполняться то норм, да?
Yuri
и?
то есть это не проблема?
Dyno
Вполне возможно. А какие аргументы?
я не очень понял что они имеют ввиду, но вот https://proandroiddev.com/a-quick-story-about-async-callbacks-memory-leaks-weakreferences-and-misconceptions-78003b3d6b26 и вот https://medium.com/google-developer-experts/weakreference-in-android-dd1e66b9be9d
Mike
то есть это не проблема?
Всё зависит от длительности. Если нужно много параллельных запросов в сеть — лучше делать на отдельном пуле, но это вообще не особо здоровая ситуация. Да и асинктасками делать это неудобно. Если же это задача на ~20-100 миллисекунд, то более-менее всё равно.
Yuri
как кстати колбэк у ретрофита осуществляется?
Dyno
ну, мысль в том, что нужно отписываться/отменять, когда уходишь из активити
то есть юзать слабую ссылку и в ondestroy отменять задачу?
Dyno
а, похоже тогда нет смысла в слабых ссылках
Yuri
Подскажите пожалуйста. У меня есть модуль , который принимает в конструкторе один параметр string. Я создаю 2 компоненты. В 1 компонент передаю один стринг параметр, во 2 другой. Параметры у двух компонент одинаковые и инжект одинаковый. Как мне теперь это внедрить в активити?
Yuri
Yuri
Yuri
Yuri
Yuri
это классы описанные выше
Dyno
+
а если нашу активити снесет андроид, что тогда будет с потоком?
Cyclone
Ребята, подскажите, как программно сделать пункт меню видимым после результата AsyncTask'а? Сохраняю menuItem в переменную: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); this.speakMenuItem = menu.findItem(R.id.mi_speak); return true; } В AsyncTask'е: @Override protected void onPostExecute() { ... speakMenuItem.setVisible(true); } AsyncTask вызывается в onCreate и программа падает с nullPointer: Attempt to invoke interface method setVisible on a null object reference.
You
Делаю выполнение жестов через AccessibilityService.dispatchGesture() Проблема заключается в том, что жест получается очень ломаный, как видно на видео ниже. При этом если отрисовать тот же Path, который я передаю в диспатч, на канвасе, то он будет выглядеть нормально. Кто-нибудь подскажет, как увеличить плавность жеста?
You
Cyclone
onPostExecute вызывается, когда таск закончился, не так ли?
Cyclone
А причём тут поворот экрана?
Cyclone
Программа на старте должна лезть на удалённый api и получать ответ (дулаю это AsyncTask'ом в onCreate). В случае успешного ответа должен появляться пункт меню, который изначально invisible (непонятно, как обратиться к пункту меню - nullpointer).
Yuri
И потом вызывать меню
Mike
Cyclone
Спасибо, похоже.
Turalllb
Программа на старте должна лезть на удалённый api и получать ответ (дулаю это AsyncTask'ом в onCreate). В случае успешного ответа должен появляться пункт меню, который изначально invisible (непонятно, как обратиться к пункту меню - nullpointer).
Во-первых учтите ситуацию: АсинкТакс запустился, экран повернулся, АсинкТаск шлет ответ активности которяа уже не существует. И Утечка актвности. Решение используя асинкТаск: Делать ссылку на активность мягкой (weakReference) , проверять не null ли активность. Если null , завершаем работу. В новой активности, которая будет после поворота экрана делается повторный запрос. (предварительно проверив не Видна ли уже менюшка).
Cyclone
Ясно, буду иметь в виду.
Yuri
А в чём плохая практика?
Понятия не имею. Но ссылку на актиивити в таске лучше не держать
Turalllb
Для тяжелых данных асинкТаск не годится, т.к.
Turalllb
потеря данных уже загруженных в случае поворота экрана
You
Кто-нибудь знает как обойти ограничение в 100мс на ивент в MotionEventGenerator?
Mike
Используй rxjava
И как это поможет?
Turalllb
Понятия не имею. Но ссылку на актиивити в таске лучше не держать
А как таск будет возвращать данные в активность? у него в любом случае есть ссылка.
Turalllb
Попутал мягкие со слабыми
ну да, мягкие softReference
Yuri
Да)
Mike
Главное — не задумываться о том, как он работает, и свято верить, что он решит все проблемы.
Mike
Не знаю )
Тогда не советуй.
Dyno
Зависит от того, по каким причинам снесёт.
посчитает, что надо экономить память, а есть еще варианты?
You
если я правильно понял суть проблемы то тебе нужно использовать кривую безье, которая более плавные линии сделает
Не совсем в этом дело. Когда я передаю жест в диспатчер, MotionEventGenerator рубит его на интервалы по 100мс и вычисляет ключевые точки жеста. В итоге плавные линии превращаются в ломаные
Turalllb
Кто-нибудь знает как обойти ограничение в 100мс на ивент в MotionEventGenerator?
Нужно чтобы , события от касания генерировались чаще ?
You
Намного чаще
Mike
посчитает, что надо экономить память, а есть еще варианты?
Почитай матчасть. Есть смены конфигурации, вытеснение приложения. Кнопка «назад», в конце-концов.
You
Как будто человек делает
Turalllb
Я думал это невозможно)) и вот по каким соображениям
Turalllb
я писал игрушку, в ней нужно было двигать пальцем фигуру и чем быстрее она следует за пальцем тем лучше. НУжно было в общем получать как можно больше точек , когда делаю резкое движение по экрану. Я подумал что это заложено , где то в нативКоде, т.к. от этого зависит Заряд батареи (чаще проверять экран на касания) плюс физические возможности экрана, чтобы так часто это делать тоже не безграничны. В общем дальше я не искал такой возможности, хотя было бы не плохо. До сих пор актуально и для меня )
You
Это просто скорее всего ограничение диспатчера
You
Я же могу пальцем намного больше ивентов послать
roman G
Turalllb
так а вот сколько экран физически их способен зафиксировать? хз
Denis
60fps ваш друг
You
Это всё очень прекрасно, но мне нужно без рута выполнять жесты
Turalllb
60fps ваш друг
всего 60 касаний за секунду??