조각 또는 지원 조각?


125

Android> = 4.0을 지원하는 앱을 개발 중입니다. android.app패키지의 조각을 사용 합니다. 내가 좋아하는 4.0 이전의 단편 구현, 문제에 직면하고있다으로 이 일 에 이미 지원 라이브러리에 고정되어, 나는 믿을 수 있고 일관된 구현을 얻을 수있는 지원 라이브러리에서 조각 구현 다시 전환을 고려하고있다.

이것에 대한 당신의 의견은 무엇입니까? Android 4 용으로 개발할 때 이미 사용 가능하더라도 지원 라이브러리의 단편을 사용하고 있습니까?


2
이것은 좋은 질문입니다 (흥미 롭기 때문에 +1). 또한 웹에는 이에 대한 좋은 설명이 없습니다. 내 응용 프로그램에 지원 라이브러리를 사용하고 있으며 컴파일 중이나 테스트 중에 오류가 발생하지 않았기 때문에 내가 틀렸는 지 아닌지 궁금합니다.
JJ86

2
@animuson brillenheini의 답변은 이것이 주로 의견 기반 답변이 아님을 증명합니다.
OneWorld

답변:


90

내 경험상 모든 Android 기기에서 동일한 조각 구현을 사용하는 것이 큰 이점입니다. 지원 라이브러리가있는 네이티브 조각을 사용하여 상태가 Android 4.0에 저장되면 모든 NullPointerException을 제거 할 수 없었습니다. 또한이 접근법으로 지금까지 어떤 단점도 볼 수 없었습니다.

따라서 내 자신의 질문에 대한 나의 대답은 다음과 같습니다. Android 4.x를 개발할 때 지원 라이브러리의 조각을 사용하는 것이 좋습니다. 지원 라이브러리에는 이전 조각 구현에 여전히 존재하는 버그가 수정되었으며 더 많은 버그 수정으로 자주 업데이트됩니다.


11
그럼 android.app.Fragment그때 의 목적은 무엇 입니까? 조금 더 설명하면서 여기 에 답을 추가 할 수 있다면 완전히 만족할 것입니다. 감사!
jonstaff

1
@jonstaff 그 이유는 아마 역사적인 것입니다. 내 업데이트 된 답변을 참조하십시오.
brillenheini

11
완전성을 위해 조각을 지원할 수없는 작업이있는 것 같습니다 (예 : 실제 대상 OS에서 지원하더라도 애니메이션으로 표시objectAnimator ). 어느, 경우에 당신이 사용하고 ViewPager그렇지 않으면 모두 viewpager 및 뒤집기 애니메이션을 가질 수 없습니다, 당신은 V13 지원 라이브러리에서 어댑터를 사용할 필요가 있음을 의미.
GSerg

5
또한 2014 년 8 월부터 v13 라이브러리는 중첩 조각을 수행 할 수 없습니다.
Martin Marconcini

1
구글의 사람이 iosched 응용 프로그램에 대한 V13 라이브러리 사용에 대한 거부 이유는 무엇 github.com/google/iosched/blob/master/android/src/main/java/com/...을 , 그들은 몇 가지 이유가 있어야합니다
forcewill

40

SupportFragment한동안 고수 해야하는 한 가지 큰 이유 는 ChildFragmentManagerAPI 17까지 액세스 할 수 없기 때문입니다 . 지원 라이브러리는 하위 조각 관리자의 지원 버전을 제공합니다.

다른 조각이 포함 된 조각이있는 경우 이는 큰 문제가됩니다. 이는 복잡성이 많은 태블릿 응용 프로그램에서 일반적이며 전체 아키텍처는 탭 레이아웃을 기반으로하거나 탐색 창을 사용합니다.


21

또한 Android 4.0 이상을 대상으로했지만 지원 라이브러리를 포함해야하는 것에 실망했습니다. 그러나 공식적으로 권장되는 것 같습니다.

Android 지원 라이브러리 패키지에는 애플리케이션에 포함될 수있는 여러 라이브러리가 포함되어 있습니다. 이러한 각 라이브러리는 특정 범위의 Android 플랫폼 버전 및 기능 세트를 지원합니다.

이 안내서는 지원 라이브러리에서 제공하는 중요한 기능 및 버전 지원에 대해 설명하여 응용 프로그램에 포함 할 기능을 결정하는 데 도움을줍니다. 일반적으로 v4 지원 및 v7 appcompat 라이브러리는 다양한 Android 버전을 지원하고 권장되는 사용자 인터페이스 패턴을위한 API를 제공하므로 v4 지원 및 v7 appcompat 라이브러리를 포함하는 것이 좋습니다.

http://developer.android.com/tools/support-library/features.html


@brillenheini가 스스로 답변을 제공했다는 사실에도 불구하고 이것은 허용되는 답변이어야합니다. 가장 정확하고 간결하게 질문에 대답합니다.
Arvindh Mani

4

IMHO 4.0 만 개발하려는 경우 실행 파일이 작아지기 때문에 기본 라이브러리를 사용하는 것이 좋습니다. 초기 버전에서 버그 문제가 발생할 수는 있지만 대부분의 경우 해결하기가 쉽지 않습니다. 또한 호환성 라이브러리는 4.0 이상에서 실행중인 경우 기본 조각에 매핑되어야합니다. 어쨌든 이런 종류의 문제로 어려움을 겪을 수도 있습니다. 지원 라이브러리의 문제점은 많은 클래스가 2 배 (지원 패키지 구조에서 한 번, "기본"패키지 구조에서 한 번) 표시되어 개발이 좀 더 번거 롭다는 것입니다.

그러나 4.0 이전 버전의 앱을 출시하려는 경우 지원 라이브러리를 둘러싼 방법이 없습니다. 또한 2.3에있는 모든 사용자의 약 38 %가이 OS 버전을 포함시키는 것이 합리적 일 수 있습니다. 이 경우 지원 라이브러리를 Jake Wartons ActionBarSherlock과 함께 사용하거나 Google이 ActionBar 라이브러리를 마지막으로 릴리스하면 지원합니다.


3
답변 주셔서 감사합니다. ViewPager가 필요하기 때문에 어쨌든 지원 라이브러리를 포함시켜야합니다. 또한 지원 조각은 사용 가능한 경우 기본 구현으로 전환하려고 시도하지 않습니다. 그것이 문서에서 말하는 것입니다.
brillenheini 2016 년

예, (@brillenheini가 말했듯이) ViewPager를 사용하려면 v4가 필요하므로 v13 이상 장치 만 타겟팅하더라도 v4 사용을 마칠 수 있습니다.
Sotti

방금 API 21 및 앱에서 (ViewPager v4가 필요함) 발견했습니다. Meh :-/
mraviator

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.