Fragment # setRetainInstance (boolean)를 사용하는 이유는 무엇입니까?
Fragment # setRetainInstance (true) 혼란 스럽습니다. 다음은 Android Developer API 에서 추출한 Javadoc입니다 .
public void setRetainInstance (부울 보유)
프래그먼트 인스턴스가 활동 재 작성 (예 : 구성 변경)에서 유지되는지 여부를 제어합니다. 이것은 백 스택에없는 조각에만 사용할 수 있습니다. 설정된 경우 활동이 다시 생성 될 때 조각 수명주기가 약간 다릅니다.
- onDestroy ()는 호출되지 않습니다 (그러나 조각이 현재 활동에서 분리되기 때문에 onDetach ()는 여전히 호출됩니다).
- 조각이 다시 생성되지 않으므로 onCreate (Bundle)이 호출되지 않습니다.
- onAttach (Activity) 및 onActivityCreated (Bundle) 은 계속 호출됩니다.
질문 : 개발자로서 어떻게 이것을 사용하며 왜 일을 더 쉽게하나요?
개발자로서 이것을 어떻게 사용합니까?
에게 전화하십시오 setRetainInstance(true)
. 나는 일반적으로 그것을 사용하는 onCreateView()
또는 에서 수행 onActivityCreated()
합니다.
그리고 왜 일을 더 쉽게 만들까요?
onRetainNonConfigurationInstance()
구성 변경 (예 : 장치를 세로에서 가로로 회전)에 걸쳐 데이터 보존을 처리하는 것보다 더 간단한 경향이 있습니다 . 보존되지 않은 조각은 구성 변경시 파괴되고 다시 생성됩니다. 보유 된 조각은 아닙니다. 따라서 유지 된 조각이 보유한 모든 데이터는 구성 변경 후 작업에서 사용할 수 있습니다.
소켓과 같은 장기 실행 리소스를 열어 두는 데 매우 유용합니다. 블루투스 소켓에 대한 참조를 보유하는 UI가없는 프래그먼트가 있으면 사용자가 전화기를 뒤집을 때 다시 연결하는 것에 대해 걱정할 필요가 없습니다.
또한 비트 맵이나 서버 데이터처럼로드하는 데 시간이 오래 걸리는 리소스에 대한 참조를 유지하는데도 유용합니다. 한 번로드하고 유지 된 프래그먼트에 보관하고 활동이 다시로드 될 때 여전히 거기에 있으며 다시 빌드 할 필요가 없습니다.
이 답변을 매우 늦게 추가했지만 더 명확해질 것이라고 생각했습니다. 날 따라 말해. setRetainInstance가 다음과 같은 경우 :
그릇된
- 구성 변경시 조각이 다시 생성됩니다. 새로운 인스턴스가 생성됩니다.
- onCreate () 및 onDestroy ()를 포함한 모든 수명주기 메서드는 구성 변경시 호출됩니다.
진실
- 구성 변경시 조각이 다시 생성되지 않습니다. 동일한 인스턴스가 사용됩니다.
- 모든 수명주기 메서드는 구성 변경, APART FROM onCreate () 및 onDestroy ()에서 호출됩니다.
- 인스턴스 유지는 백 스택에 추가 될 때 작동하지 않습니다.
위의 내용이 DialogFragments와 Fragments에 적용된다는 것을 잊지 마십시오.
참고 URL : https://stackoverflow.com/questions/11160412/why-use-fragmentsetretaininstanceboolean
'program story' 카테고리의 다른 글
IPython 노트북에서 코드가 실행되었는지 어떻게 확인할 수 있습니까? (0) | 2020.11.24 |
---|---|
외부 스크립트가로드되었는지 확인 (0) | 2020.11.23 |
JQuery / Javascript : var 존재 여부 확인 (0) | 2020.11.23 |
두 개체가 한 줄로 선언 된 경우 어떤 순서로 구성됩니까? (0) | 2020.11.23 |
메서드에서 익명 유형을 반환하는 방법이 있습니까? (0) | 2020.11.23 |