У меня есть следующая сценария: в действии A, когда пользователь нажимает кнопку, приложение отправляет запрос на сервер для получения некоторой информации, тогда эта информация помещается в намерение начать активность B.Полная компоновка перед отображением окна активности
В действии B, в onCreate
методе, я делаю setContentView(R.layout.activity_b)
(этот макет довольно сложный, поэтому даже раздувание его из XML занимает некоторое время), затем выполните кучу инициализации. Наконец, в onStart
я делаю некоторые окончательные приготовления/расположения компонентов.
В действии A, когда пользователь нажимает кнопку, я запускаю AsyncTask
, который получает информацию с сервера и запускает активность B, передавая необходимую информацию в намерение. Когда я называю «startActivity», окно активности B сразу переходит в позицию, однако для завершения инициализации может потребоваться несколько секунд. В течение этих секунд я вижу черный экран. Затем, наконец, выполняется onStart
и все продолжается.
Что бы я хотел сделать, так это завершить всю эту инициализацию за пределами экрана, до активность B скользит в поле зрения, так что, когда она «прибывает», все макеты уже присутствуют. Любые идеи, как достичь этого?
Привет @Aleks G в AsyncTask выполняйте свою работу в doinbackground, что означает, что загрузка выполняется с сервера. то у вас есть опция onpostexecute в AsyncTask, в этом методе используется перенаправление. если вы сделаете это, вы не получите черный экран. а также в Activity B используют Async-задачу без загрузчика для привязки не-ui-данных. – itsrajesh4uguys
@ Раджеш: это именно то, что я делаю - пожалуйста, внимательно перечитайте мой вопрос. Проблема заключается в методе 'onCreate' в действии B. В эмуляторе требуется около 5 секунд - просто для раздувания макета, настройки локальной ссылки и первичной инициализации. Только для раздувания занимает около 3 секунд. Все эти 5 секунд я смотрю на черный экран. –
@ Aleks вы загружаете данные в действии справа. то вы переходите к Activity B. Вместо этого вы можете использовать Async Task в Activity B. В oncreate просто запустите задачу async с прогрессом, как загрузка деталей ... затем в post execute u можно связать данные – itsrajesh4uguys