Parça mı Destek Parçası mı?


125

Android> = 4.0'ı destekleyen bir uygulama geliştiriyorum. android.appPaketin parçalarını kullanır . Ben gibi 4.0 eski parçası uygulanması ile sorunlarla karşı karşıya am gibi bu bir zaten destek kütüphanesinde sabittir, ben daha güvenilir ve tutarlı uygulanmasını almak için destek kitaplığından parça uygulamasına geri geçiş düşünüyorum.

Bu konudaki fikriniz nedir? Android 4 için geliştirme yaparken zaten mevcut olmalarına rağmen destek kitaplığından parçalar kullanıyor musunuz?


2
Bu güzel bir soru (+1 çünkü beni meraklandırıyor). Ayrıca internette bunun için iyi bir açıklama yok. Uygulamam için destek kitaplığı kullanıyorum ve yanılıyor muyum diye merak ediyorum çünkü derleme veya test sırasında herhangi bir hata fark etmedim.
JJ86

2
@animuson Brillenheini'nin cevabı, bunun esasen fikir temelli bir cevap olmadığını kanıtlıyor.
OneWorld

Yanıtlar:


90

Deneyimlerime göre, tüm Android cihazlarda aynı parça uygulamasını kullanmak büyük bir avantaj. Tüm NullPointerExceptions'dan, tüm NullPointerExceptions'dan kurtulamadım, tüm NullPointerExceptions, destek kitaplığıyla birlikte Android 4.0'da yerel parçalar kullanılarak kaydedildi. Ayrıca bu yaklaşımla şimdiye kadar herhangi bir dezavantaj göremedim.

Şimdi kendi soruma cevabım şu: Android 4.x için geliştirme yaparken, destek kitaplığındaki parçaları kullanmak iyi bir fikir. Destek kitaplığı, eski parça uygulamalarında hala mevcut olan ve daha fazla hata düzeltmesiyle sık sık güncellenen hatalara sahiptir.


11
Öyleyse bunun amacı android.app.Fragmentnedir? Sorununuza bu ekleyebiliyorsanız burada biraz daha açıklama ile, tamamen memnun olacaktır. Teşekkürler!
jonstaff

1
@jonstaff Nedeni muhtemelen tarihseldir. Lütfen oradaki güncellenmiş cevabıma bakın.
brillenheini

11
Bütünlük adına, destek parçalarının yapamayacağı şeyler var gibi görünüyor (örneğin , gerçek hedef işletim sistemi desteklese bile animasyonlu olmakobjectAnimator ). Bu, kullanıyorsanız ViewPager, v13 destek kitaplığındaki adaptörleri kullanmanız gerektiği anlamına gelir, aksi takdirde hem görüntüleyici hem de çevirme animasyonuna sahip olamazsınız.
GSerg

5
Ayrıca dikkatli olun, Ağustos 2014 itibariyle v13 kitaplığı İç İçe Parçalar yapamaz.
Martin Marconcini

1
Google'daki adamlar neden iosched uygulaması için v13 kitaplığını github.com/google/iosched/blob/master/android/src/main/java/com/… için kullanmayı seçtiler , bir sebepleri olmalı
forcewill

40

Bir SupportFragmentsüreliğine bağlı kalmanın en büyük nedenlerinden biri , ChildFragmentManagerAPI 17'ye kadar erişiminizin olmamasıdır . Destek kitaplığı size alt parça yöneticisinin bir destek sürümünü verecektir.

Başka parçalar içeren fragmanlarınız varsa, bu çok önemli hale gelir. Bu, oldukça karmaşık olan tablet uygulamalarında yaygındır ve / veya genel mimariniz sekmeli bir düzene dayanır veya gezinme çekmecesini kullanır.


21

Ayrıca, Android 4.0+ hedeflemesine rağmen destek kitaplıklarını dahil etmek zorunda kaldığım için hayal kırıklığına uğradım - ancak görünüşe göre resmi olarak tavsiye ediliyor:

Android Destek Kitaplığı paketi, uygulamanıza dahil edilebilecek birkaç kitaplık içerir. Bu kitaplıkların her biri, belirli bir Android platform sürümlerini ve bir dizi özelliği destekler.

Bu kılavuz, hangilerini uygulamanıza dahil etmeniz gerektiğine karar vermenize yardımcı olmak için Destek Kitaplıkları tarafından sağlanan önemli özellikleri ve sürüm desteğini açıklamaktadır. Genel olarak, çok çeşitli Android sürümlerini destekledikleri ve önerilen kullanıcı arabirimi kalıpları için API'ler sağladıkları için v4 desteği ve v7 uygulaması uyumlu kitaplıkların dahil edilmesini öneririz.

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


@Brillenheini'nin kendisi bir cevap vermesine rağmen, bu kabul edilen cevap olmalıdır. Soruyu en iyi doğruluk ve özlülükle yanıtlar.
Arvindh Mani

4

IMHO sadece 4.0 için geliştirmeyi planlıyorsanız, çalıştırılabilir dosya küçüleceğinden yerel kütüphanelerle gitmenizi tavsiye ederim. İlk sürümlerde böcek sorunlarıyla karşılaşabileceğiniz doğrudur, ancak bunların çoğunun üzerinde çalışmak oldukça önemsiz olduğunu düşünüyorum. Ayrıca uyumluluk kitaplığının, yine de 4.0 ve üzeri sürümlerde çalıştırmanız durumunda yerel parçalarla eşlenmesi beklenir. Yani bu tür sorunlarla zaten mücadele etmek zorunda kalabilirsiniz. Destek kitaplıklarıyla ilgili sorun, geliştirmeyi biraz daha hantal hale getiren çok sayıda sınıfın 2x olarak görünmesidir (bir kez destek paketi yapısında ve bir kez "yerel" paket yapısında).

Bununla birlikte, uygulamanızı 4.0 öncesi sürümüne de yayınlamak istiyorsanız, destek kitaplığının etrafında bir yol yoktur. Ayrıca, 2.3'teki tüm kullanıcıların yaklaşık% 38'i olduğu için, bu işletim sistemi sürümünü eklemek iş açısından mantıklı olabilir. Böyle bir durumda, destek kitaplığını Jake Wartons ActionBarSherlock ile birlikte kullanabilirsiniz (veya sonunda piyasaya sürüldüğünde googles ile ActionBar Kitaplığı desteklenir).


3
Cevabınız için teşekkürler. ViewPager'a ihtiyacım olduğu için, yine de destek kitaplığını eklemem gerekiyor. Ayrıca, destek parçası varsa yerel uygulamaya geçmeye çalışmaz. Yani ne dokümanlar söylüyorlar.
brillenheini

Evet, mesele şu ki (@brillenheini'nin söylediği gibi) ViewPager'a sahip olmak için v4'e ihtiyacınız var, bu yüzden sadece v13 + cihazları hedefliyor olsanız bile muhtemelen v4'ü bitireceksiniz.
Sotti

API 21'imde ve uygulamada bunu da (ViewPager'ın v4'e ihtiyacı var) keşfettim. Meh: - /
mraviator

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.