Android 애플리케이션에서 조각을 언제, 왜 사용해야합니까? [복제]
이 질문에 이미 답변이 있습니다.
- 딜레마 : 프래그먼트와 액티비티를 사용하는시기 : 14 개 답변
고유 한 동작과 UI를 갖기 위해 애플리케이션의 다른 부분이 필요한 경우가 많으며 프래그먼트가 어떻게 도움이 될 수 있는지 모르겠습니다. 대부분의 경우 2 개의 다른 활동 (예 : 태블릿 용 1 개, 핸드셋 용 1 개)을 만들고 세 번째 클래스에서 일반적인 행동과 이벤트를 공유하는 것이 더 빠르다고 생각합니다.
이 점을 염두에두고 왜 조각을 사용해야합니까?
조각은 내 생각에 UI 이점에 더 가깝습니다. 사용자가 때때로 동일한 화면에서 두 개의 서로 다른 클래스의 두 가지 다른보기를 보는 것이 편리합니다. 창의력을 발휘할 때 화면의 절반을 차지하는 listView와 나머지 절반을 차지하는 webView를 사용하여 애플리케이션을 표시하는 것이 좋겠다고 결정한 경우-목록 항목을 클릭 할 때 프래그먼트 A는 프래그먼트 B의 webView에 인 텐트를 전달하고 갑자기 앱 전환 활동없이 방금 클릭 한 내용을 보게됩니다. 그러면 프래그먼트를 사용할 수 있습니다. 그것은 내가 내 머리 꼭대기에서 생각 해낸 예일뿐입니다.
결론 : 프래그먼트는 동시에 화면에 표시되는 두 개 이상의 활동입니다.
혜택 조각을 사용할 때 볼은 다음과 같습니다 :
- 논리 캡슐화.
- 조각의 수명주기를 더 잘 처리합니다.
- 다른 활동에서 재사용 할 수 있습니다.
단점 내가 볼은 다음과 같습니다 :
- 추가 코드 (예 : 프래그먼트 관리자 인스턴스화, 프래그먼트 트랜잭션 추가, 프래그먼트 콜백 작성)
- 프래그먼트와 활동 간의 통신이 더 어렵습니다. 으로 @jonney는 그것을했다, 당신은 당신이 통과 할 개체를 직렬화하는 parcelable 인터페이스를 처리해야합니다.
따라서 조각을 사용하기로 결정할 때 다음과 같은 질문을합니다.
- 조각의 수명주기가 활동의 수명주기와 다른가요?
수명주기가 다른 경우 조각을 사용하여 수명주기를 더 잘 처리 할 수 있습니다. 예를 들어 활동이 아닌 조각을 파괴하려는 경우입니다. 호출기 어댑터 가있는 경우 입니다.
- 조각이 여러 활동에 사용될 예정입니까?
조각을 사용하면 사용자 입력 이벤트를 재사용 할 수 있습니다.
- 프래그먼트와 활동 간의 통신량이 적습니까?
큰 개체를 조각에 전달해야하는 경우이를 직렬화하는 코드를 처리해야합니다. 또한 프래그먼트와 활동간에 통신해야하는 경우 인터페이스를 구현해야 할 것입니다. 이것은 대부분의 경우 코드베이스에 복잡성을 추가합니다. 차이를 만드는 것은 아니지만 고려해야 할 기준입니다.
Google은 항상 Fragments를 사용하도록 권장합니다.
왜? 간단 해:
가장 간단한 경우에 Fragments는 활동의 컨테이너처럼 사용됩니다.
왜 이것이 필요합니까? 다시 말하지만 간단합니다.
Android 4 (ICS)는 스마트 폰과 태블릿을 모두 지원합니다. 즉, SAME 애플리케이션이 스마트 폰과 태블릿에서 실행되며 매우 다를 가능성이 높습니다.
태블릿에는 제대로 할당하지 않으면 비어 있거나 사용되지 않는 큰 화면이 있습니다.
이는 연락처 목록 및 연락처 정보와 같은 하나의 활동에 두 개의 조각을 넣는 것을 의미합니다.
smatphone은 연락처 목록을 표시하고 터치 디스플레이에는 연락처의 정보가 표시됩니다.
태블릿에서 사용자는 여전히 목록을 볼 수 있으며 정보는 그 옆에 표시됩니다.
두 조각-한 화면에 ....
똑똑한? 예 ... Android 1.6까지 다시 호환되어야합니다 ...
################################################ ###########
좋아요, 이미 알고 있나요? 그런 다음 해결 된 사례를 이해하려고합니다.
목록 및 세부 정보, 메뉴 및 하위 메뉴, 정보, 세부 정보 및 더 자세한 정보와 같은 많은 것들이 그렇게 작동합니다. 그런 방식으로 미리 성형 할 것으로 예상되는 태블릿에 대해 자연스럽고 매끄럽게 유지하는 방법을 원하지만 스마트 폰이 태블릿처럼 모든 것을 표시 할 것으로 기대할 수는 없습니다.
알 겠어요?
자세한 정보는 여기를 확인하세요 . 컨셉을 잡기 만하면된다고 생각합니다 ....
역사적으로 Android 앱의 각 화면은 별도의 활동으로 구현되었습니다. Android 인 텐트 메커니즘은 활동간에 참조 유형 (즉, 객체)을 직접 전달하는 것을 허용하지 않기 때문에 화면간에 정보를 전달하는 데 어려움이 있습니다. 대신 개체를 직렬화하거나 전역 적으로 액세스 할 수있는 참조를 사용할 수 있어야합니다.
각 화면을 별도의 조각으로 만들면 이러한 데이터 전달 문제를 완전히 방지 할 수 있습니다. 프래그먼트는 항상 주어진 활동의 컨텍스트 내에 존재하며 항상 해당 활동에 액세스 할 수 있습니다. Activity 내에 관심있는 정보를 저장함으로써 각 화면의 Fragment는 Activity를 통해 객체 참조에 간단히 액세스 할 수 있습니다.
https://softwareengineering.stackexchange.com/questions/244771/why-use-android-fragments
프래그먼트 기본은 태블릿과 같은 더 역동적이고 큰 UI 화면을 지원합니다. 태블릿 화면은 일반 핸드셋보다 훨씬 크기 때문입니다. UI 구성 요소를 결합하고 교환 할 여지가 더 많습니다.
조각은 View 계층 구조에서 복잡한 변경없이 이러한 디자인을 허용합니다.
활동 레이아웃을 조각으로 나누면 런타임에 활동의 모양을 수정할 수 있습니다.
'Programming' 카테고리의 다른 글
순서에 관계없이 두 목록에 동일한 요소가 있는지 확인합니까? (0) | 2020.08.13 |
---|---|
Any, AnyVal, AnyRef, Object 간의 관계는 무엇이며 Java 코드에서 사용될 때 어떻게 매핑됩니까? (0) | 2020.08.13 |
오류 : 'Node'에서 'appendChild'를 실행하지 못했습니다. 매개 변수 1이 'Node'유형이 아닙니다. (0) | 2020.08.13 |
문자, 코드 포인트, 글리프 및 자소의 차이점은 무엇입니까? (0) | 2020.08.13 |
iPhone의 "홈 화면에 추가"에 대한 Javascript? (0) | 2020.08.13 |