마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

액티비티 체인지시 선 딜레이 문제

0 추천
제가 겪고 있는 문제를 간단하게 설명드리자면, 액티비티 A에서 버튼을 클릭하면 액티비티 B로 넘어갑니다.

액티비티 B에서는 HttpURLConnection을 이용해 html 파일을 가져와서 웹뷰로 보여줍니다.

 

제가 기대했던 작동 모습은 이렇습니다.

1. 액티비티 A에서 버튼 클릭

2. 가장 먼저 액티비티 B의 레이아웃이 나타난다. (액션바라든가...)

3. 그 후에 html파일의 다운로드가 완료되면 화면에 띄워준다.

 

그런데 기대와는 다르게 액티비티A에서 버튼을 클릭하면 A의 화면에서 정지한 채로 B의 onCreate()가 실행됩니다. 그리고 다운로드가 완료되면 액티비티B의 레이아웃이 나타납니다. (예를 들어서 B의 onCreate()에 Thread.sleep(2000) 과 같이 추가하면 A의 화면에서 2초간 더 머물러 있습니다.)

어떻게 해결해야 할까요?

 

열심히 구글링 해봤지만 어떤 키워드로 검색해야 할지 잘 모르겠네요...

stackoverflow에서 비슷한 문제를 겪고 있는 사람의 질문을 찾긴 했는데 저에게는 맞지 않는 해결 방법이네요.

( stackoverflow.com/questions/10801981/android-how-to-avoid-delay-when-changing-activity )

 

인터넷 연결은 AsyncTask 클래스를 이용했습니다.
익명사용자 님이 2015년 2월 24일 질문

1개의 답변

+1 추천
Activity 생명주기를 다시 공부해보세요.
익명사용자 님이 2015년 2월 24일 답변
답변 감사합니다.
구글 가이드 왈 사용자에게 화면이 보여지는 것은 onStart() 이후라길래 onCreate()에 있던 로직들을 onStart()로 옮겨봤는데 변한 것이 없는듯 합니다.
제가 잘못 알고 있는걸까요?
그래도 나름 찾아보고 해보셨나보네요.
onStart에서 AsyncTask 같은것으로 약간 딜레이(화면이 다 표시되엇을 것으로 예상되는 시점)를 준다음,
통신이 시작되는 AsyncTask 을 그때서야 실행하면 될 것 같습니다.
AsyncTask 를 두번 실행하는 것이죠.
코드를 보고 디버깅 해봐야 뭐가 진짜 문젠지 알겠지만, 그렇게 까진 못하고,
언뜻 현재 당면한 문제를 피하는 정도의 트릭은 이런정도겠군요.
...