Позвольте мне убедиться, что у меня есть это право: Задание А - ваше первое, Б - ваше второе. Вам нужна кнопка на A, которая запускает 2 вещи: асинхронную загрузку данных и нажатие B в стеке Activity. Это все хорошо.
В « Что мне нужно » вы используете глагол «обновить представление в фоновом режиме». Это невозможно - вы можете обновить только представление в основном потоке пользовательского интерфейса. Кроме того, после вызова A onPause()
(вызванного нажатием B), вы действительно должны считать A недоступным для обработки. Что вы можете сделать, это загрузить данные в фоновом режиме, в то время как B делает свое дело, а затем A в своем onResume()
может соответствующим образом обновить свой пользовательский интерфейс.
Если я ошибаюсь, и вы заставили A выполнить некоторую работу с пользовательским интерфейсом, пока отображается B, то это хорошо для вас, но если ваша обработка как чанка занимает слишком много времени, то, я думаю, вам придется ее сломать разбить на более мелкие куски и распланировать их по крупицам, чтобы не прерывать работу пользователя B.
UPDATE
Я не уверен, как вы будете выполнять работу с ресурсами пользовательского интерфейса Деятельности Y, находясь в пределах Деятельности X, особенно если Y еще не было onCreate()d
. Я не знаю, возможно ли совместное использование ресурсов макета между операциями, хотя это может быть.
Ссылка, которую вы разместили выше, ведет к ней - я думаю, что ответ относительно использования класса Handler является частью вашего решения. Также читайте о Looper и Проектирование для отзывчивости . Короче говоря, вы захотите реализовать обработчик в своем основном потоке, который позволит вам обновлять пользовательский интерфейс небольшими порциями по 100-200 мс (как предложено в Отзывчивость ) и, с высокой степенью детализации, отправлять сообщения в этот обработчик, когда вы обрабатываете небольшие кусочки данных в фоновом потоке. Например, если вы обновляете ListView
, вы сможете раздувать по одной строке за раз. Аналогично, если вы добавляете изображения в GridView
. Кроме того, рассмотрите возможность pre -загрузки ресурсов, но не показывайте их, чтобы вы могли тратить меньше времени на раздувание, когда времени мало.
Это насколько мои мысли забирают меня в данный момент, но я отмечаю это как фаворит, потому что я думаю, что мне придется сделать что-то подобное через несколько недель. Держите нас в курсе, что работает для вас. Удачи!