2012-06-14 3 views
1

다음과 같은 시나리오가 있습니다. 활동 A에서 사용자가 버튼을 클릭하면 앱이 서버에 정보를 검색하라는 요청을 보낸 다음이 정보를 시작하려는 의도에 배치합니다 활동 B.활동 창을 표시하기 전에 전체 레이아웃을

활동 B에서 onCreate 방법으로, 나는 setContentView(R.layout.activity_b) (이 레이아웃은 꽤 복잡하므로 XML을 부 풀기까지는 다소 시간이 걸립니다), 초기화를 한 번 해보십시오. 마지막으로, onStart에서 구성 요소의 최종 준비/준비를 수행합니다.

활동 A에서 사용자가 버튼을 누르면 서버에서 정보를 가져와 필요한 정보를 의도로 전달하는 활동 B를 시작하는 AsyncTask을 시작합니다. 'startActivity'를 호출하면 B 액티비티 윈도우가 바로 위치로 슬라이드되지만 초기화를 완료하는 데 몇 초가 걸릴 수 있습니다. 이 초 동안에는 검은 색 화면이 나타납니다. 그런 다음 마침내 onStart이 실행되고 모든 것이 계속됩니다.

활동 B가보기로 슬라이드하기 전에이 모든 초기화 작업을 완료하여 "도착"하면 모든 레이아웃이 이미 존재하도록하고 싶습니다. 어떤 아이디어가 이것을 달성하는 방법?

+0

안녕하세요 @ Alleks G asyncTask doinbackground에서 서버에서 다운로드 작업을 의미합니다 귀하의 작업을 수행합니다. 해당 메서드에서 AsyncTask의 onpostexecute 옵션을 리디렉션을 사용합니다. 네가 이렇게하면 검은 화면이 나타나지 않을 것이다. 또한 작업 B에서는 비 사용자 데이터를 바인딩하기 위해 로더없이 비동기 작업을 사용합니다. – itsrajesh4uguys

+0

@Rajesh : 그게 내가하고있는 일이다. 제 질문을 신중히 읽어주십시오. 문제는 B 액티비티의'onCreate' 메쏘드에 있습니다. 에뮬레이터에서, 레이아웃을 팽창시키고, 로컬 레퍼런스를 설정하고, 1 차 초기화를하기 위해서 완료하는데 약 5 초가 걸립니다. 팽창하는 레이아웃만으로는 약 3 초가 걸립니다. 이 5 초 동안 나는 검은 화면을 쳐다보고있다. –

+0

@ Aleks 당신은 활동 A의 데이터를 다운로드 중입니다. 그 대신 당신은 Activity B로 넘어 가고 있습니다. 그 대신 Activity B에서 Async Task를 사용할 수 있습니다. oncreate에서 비동기 작업을 시작하면 세부 정보를 다운로드하는 등의 작업을 진행할 수 있습니다 ... 실행 후 u 데이터를 바인딩 할 수 있습니다. – itsrajesh4uguys

답변

0

나는 그렇게 생각하지 않습니다. 본성에 의한 활동은 화면에 표시되는 동안에 만 "살아있다".

그래서 전 화면에 표시되지 않고 작업 (예 :보기 인스턴스화)을 시작하라는 신호를 보낼 수있는 방법이 없다고 생각합니다.

더 나은 사용자 경험을위한 최선의 방법은 사용자 작업이 표시되고 어떤 작업이 완료되면 숨겨져 있는지를 나타내는 진행률 표시기를 사용하는 것입니다.

+0

좋아, 활동이 전경에 있지만 검은 색 화면이 싫어. 그것에 대해 할 수있는 일은 무엇입니까? 투명하게 만들었나요? 아무것도? 문제는 초기화에 약간의 시간이 걸리므로이 프로세스를 "사용자에게 친숙한"방식으로하고 싶습니다. –

+0

전체 화면 이미지로 만들고 XML에 fill_parent/fill_parent로 저장하십시오. 이미지를 제외한 모든 것을 보이지 않게 설정하십시오. setContentView()가 완료된 직후에이 이미지가 화면상의 유일한 것이어야합니다. 모든 다른 뷰를 초기화 한 후에는 모두보기로 설정하고 이미지를 보이지 않게 설정하십시오. 이것은 실제로 "스플래시 화면"이 의미있는 사례입니다. 왜냐하면 당신이 더 나은 사용자 경험을 제공하기 위해 일부 작업을 수행하는 동안에 만 사용하기 때문입니다. – FoamyGuy

0

아마도 조각이 도움이 될 수 있습니까? 활동 A & B를 조각 A & B로 변경하고 조각 B를 표시하지 않고 백그라운드에서로드하십시오.

+0

감사하지만 앱이 2.1 이상을 지원해야하므로 불행히도이 작업을 수행 할 수 없습니다. –

+0

CompatibilityLibrary가 해당 문제를 해결합니다. http://android-developers.blogspot.fr/2011/03/fragments-for-all.html –

관련 문제