Pull to refresh
2
0
Минас Абрамян @mabramyan

User

Send message
Сорри, похоже не в тему написал
Навскидку — multiwindow.

См жизненный цикл multiwindow https://developer.android.com/guide/topics/ui/multi-window.html?hl=ru
Фреймворк не будет лагать в таком режиме. Просто UI задачи предназанченные для специфичной Activity будут выполняться только тогда, когда Activity будет реально актинвной. ИМХО случай довольно редкий, к тому же не вызовет ошибок. Помечу, эту особенность в Javadoc-е

но все же нехорошо хранить ссылки на активити в контексте процесса.

Почему?
1) При компилляции проекта, студия не ругается.
2) Где вы нашли статическое поле?
+ «current Activity» вообще-то может быть больше одной штуки

Я вызываю setCurrentActivity в событии onResume. Каким образом их будет несколько?

Это одна из самых крутых утечек памяти из возможных на андроиде.

Я вызываю setCurrentActivity(null) на каждом onPause
Каким образом утечет память? См https://developer.android.com/guide/components/activities/activity-lifecycle.html

instantrun наверное на этом сильно поперхнется и не обновит ссылку

Почему?

Ок, давайте на практическом примере.
Моя задача, реализация процесса регистрации:
1) Получаю от пользователя первую порцию данных
2) Выполняю шаг регистрации 1. Последовательно отправляется N различных запросов. Тут я хочу показывать пользователю, что именно сейчас программа делает
3) Получаю от пользователя вторую порцию данных
4) Выполняю шаг регистрации 2. Последовательно отправляется M различных запросов. Тут я хочу показывать пользователю, что именно сейчас программа делает

Как я должен это сделать при помощи сервисов?
Для того, что бы фреймворк знал, какая именно Activity сейчас работает.
У фреймворка есть возможность запускать задачи UI при выполнении предусловий см https://mkabramyan.github.io/Asmyk/net/mabramyan/asmyk/core/AsmykUITask.html
Например вы можете выполнить какое либо UI задание из фоновой задачи/сервиса под конкретную Activity или при каких либо специфичных условиях (одно ограничение, проверка должна быть относительно быстрой).
Предусловия описываются в методе isApplicatble()
Запустить задачу вы можете вызвав метод runUITask экземпляра класса AsmykApplicationContext.
Если вы укажете параметр postpone=true, тогда задача будет выполнена если isApplicatble вернет true.
Если isApplicable вернет false задача будет отложена. Как только сменится текущая Activity проверка isApplicatble будет вызвана снова и так до тех пор пока isApplicatble не вернет true. Это позволяет однозначно выполнить специфичную UI задачу из фоновой операции.
Спасибо за вопрос, надеюсь у меня получилось описать понятно
Спасибо за критику, данная конструкция добавлена для того, что бы не получилось так, что фоновая задача выполнилась быстрее чем запустилась Activity, например если произошел какой либо непредвиденный сбой в начале операции.
Опишите, пожалуйста, ваше предложение подробнее

Information

Rating
Does not participate
Location
Алматы (Алма-Ата), Алма-Атинская обл., Казахстан
Date of birth
Registered
Activity