2014-04-22 2 views
0

많은 스레드가 코드를 실행하거나 조각의 가시성을 얻는 방법에 대해 질문합니다. 하지만 Fragments : onResume() 및 onStart()는 사용자가 볼 수 있어야한다고 명시되어 있지만 사용자가 볼 수없는 "이유"를 알고 싶습니다. 가입일조각보기 가시성

: http://developer.android.com/reference/android/app/Fragment.html#Lifecycle

ONSTART() 사용자에게 표시 단편 (그 함유 활동을 기반으로 시작되는)을 만든다. onResume()은 조각을 사용자와 상호 작용하게합니다 (포함 된 활동을 기반으로 다시 시작됨).

http://developer.android.com/reference/android/app/Fragment.html#onResume() 및 그 문제 ONSTART()

는 분명히 설명 : 단편 사용자
활발히 실행 볼 때 호출

. 이것은 일반적으로 포함 된 Activity의 라이프 사이클에 대한 Activity.onResume에 연결됩니다.

onResume이 완료 될 때까지 명확하게 조각이 보이지 않습니다. 여전히 질문은 남아 있습니다. '왜'는 onResume 다음의 단편입니다. doc 당 onStart가 아닌가요? 아, 이것에 대한 확장 : 나는 ViewPager를 사용하지 않습니다. 단지 간단한 Activity-Fragment 모델입니다.

희망의 사람이 ...이에 대한 몇 가지 인텔있다

[업데이트 *] 내가 한 활동 및 문제를 보여주는 한 단편 샘플 프로젝트를 추가 한. 사람이 아마도 ;-)

https://www.dropbox.com/s/08noqvmq7sjwppb/fragmentUserVisibilityTest.zip

답변

0

을 시도하려면, 당신은 메인 스레드에서 발생하여 onStart()에서 장기 실행 작업을해야합니다. 이 경우이 작업이 끝날 때까지는 아무 것도 볼 수 없습니다. 어떤 시간이 지나면 onResume이 호출됩니다. 장시간 작업 할 때는 AsyncTask을 사용하십시오. 조각에 대한 을 표시 할 때

onStart() 가 호출되는 단편 interactible 수하려고 할 때 onResume()가 호출됩니다. 그것은 활동과 동일합니다. 그들은 조각이 interactible/표시되기 후 라고 된 경우

onStart()onResume()

은 아무 소용이 있었을 것이다.

+0

입력 해 주셔서 감사합니다. 매우 가능성이 있지만 그렇게 될 것입니다. onStart() 또는 다른 메서드에서 장기 실행 작업이 없습니다. 그게 뭔가 관련이 있다고 생각합니까? : fragmentTransaction.replace (R.id.container, fragment); – Ronnie

+0

일반적으로 작업자는 savedState == null 인 경우 작업의 onCreate에서 replace(). commit()을 수행합니다 (그렇지 않으면 해당 프래그먼트가 이미 있습니다). 또한 프래그먼트의 onCreate에서 setRetainInstance (true)를 시도하여 프래그먼트가 구성 변경 사이에 있도록 할 수 있습니다. 이것이 도움이되는지 아닌지 전혀 모릅니다. –

+0

나는 이것을 시도 할 것이다. 지금은 누구나 시험해 볼 수 있도록 샘플 프로젝트를 업로드했습니다. 내가 본 것을 보여 줬어. (원래 질문보기) – Ronnie