다음과 같은 시나리오가 있습니다. 활동 A에서 사용자가 버튼을 클릭하면 앱이 서버에 정보를 검색하라는 요청을 보낸 다음이 정보를 시작하려는 의도에 배치합니다 활동 B.활동 창을 표시하기 전에 전체 레이아웃을
활동 B에서 onCreate
방법으로, 나는 setContentView(R.layout.activity_b)
(이 레이아웃은 꽤 복잡하므로 XML을 부 풀기까지는 다소 시간이 걸립니다), 초기화를 한 번 해보십시오. 마지막으로, onStart
에서 구성 요소의 최종 준비/준비를 수행합니다.
활동 A에서 사용자가 버튼을 누르면 서버에서 정보를 가져와 필요한 정보를 의도로 전달하는 활동 B를 시작하는 AsyncTask
을 시작합니다. 'startActivity'를 호출하면 B 액티비티 윈도우가 바로 위치로 슬라이드되지만 초기화를 완료하는 데 몇 초가 걸릴 수 있습니다. 이 초 동안에는 검은 색 화면이 나타납니다. 그런 다음 마침내 onStart
이 실행되고 모든 것이 계속됩니다.
활동 B가보기로 슬라이드하기 전에이 모든 초기화 작업을 완료하여 "도착"하면 모든 레이아웃이 이미 존재하도록하고 싶습니다. 어떤 아이디어가 이것을 달성하는 방법?
안녕하세요 @ Alleks G asyncTask doinbackground에서 서버에서 다운로드 작업을 의미합니다 귀하의 작업을 수행합니다. 해당 메서드에서 AsyncTask의 onpostexecute 옵션을 리디렉션을 사용합니다. 네가 이렇게하면 검은 화면이 나타나지 않을 것이다. 또한 작업 B에서는 비 사용자 데이터를 바인딩하기 위해 로더없이 비동기 작업을 사용합니다. – itsrajesh4uguys
@Rajesh : 그게 내가하고있는 일이다. 제 질문을 신중히 읽어주십시오. 문제는 B 액티비티의'onCreate' 메쏘드에 있습니다. 에뮬레이터에서, 레이아웃을 팽창시키고, 로컬 레퍼런스를 설정하고, 1 차 초기화를하기 위해서 완료하는데 약 5 초가 걸립니다. 팽창하는 레이아웃만으로는 약 3 초가 걸립니다. 이 5 초 동안 나는 검은 화면을 쳐다보고있다. –
@ Aleks 당신은 활동 A의 데이터를 다운로드 중입니다. 그 대신 당신은 Activity B로 넘어 가고 있습니다. 그 대신 Activity B에서 Async Task를 사용할 수 있습니다. oncreate에서 비동기 작업을 시작하면 세부 정보를 다운로드하는 등의 작업을 진행할 수 있습니다 ... 실행 후 u 데이터를 바인딩 할 수 있습니다. – itsrajesh4uguys