67

W Androidzie jaka jest główna różnica między rozszerzeniem aktywności Lifecycler, Activity, ActionBarActivity & AppCompactActivity? W jaki sposób klasy te różnią się od siebie pod względem użytkowania?Różnica między rozszerzeniem LifecycleActivity, Activity, ActionbarActivity i AppCompactActivity?

+2

Wszystko to wyjaśniono tutaj: https://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html – donfuxx

+0

Przeczytaj więcej na ten temat tutaj: http://stackoverflow.com/questions/23045472/ action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action-action ActionBarActivity rozszerza działanie FragmentActivity i dodaje wsparcie dla backportu paska działań appcompat –

Odpowiedz

80
  • rozszerzenie ActionBarActivity daje ActionBar s funkcjonalność na każdym poziomie API> = 7
  • rozszerzając Activity można uniknąć dodawania dodatkowych projektów/bibliotek do projektu, ale będziesz brakuje ActionBar na poziomie poniżej 11 api

edit: Więcej szczegółów:

ActionBarActivity jest częścią Support Library. Biblioteki pomocnicze są używane do dostarczania nowszych funkcji na starszych platformach. Na przykład kod ActionBar został wprowadzony w interfejsie API 11 i jest domyślnie częścią Activity (w zależności od motywu). W przeciwieństwie do tego na starszych platformach nie ma wersji ActionBar.Więc biblioteka wsparcie dodaje klasę podrzędną Activity (ActionBarActivity), która zapewnia funkcjonalność i interfejs ActionBar „s

Edit2: Aktualizacja kwiecień 2015 - wygląda na to ActionBarActivity jest przestarzałe w revision 22.1.0 Biblioteki Wsparcia. Zamiast tego należy użyć AppCompatActivity.

Edit3: Aktualizacja sierpień 2017 - LifecycleActivity jest LifecycleOwner ale:

„Ponieważ składniki Architektura jest w fazie alpha, Fragment i klas AppCompatActivity nie można wdrożyć go (bo nie możemy dodać zależność od stabilnego komponentu do niestabilnego interfejsu API.) Do cyklu życia jest stabilny, klasy LifecycleActivity i LifecycleFragment są dostępne dla wygody. Po opublikowaniu projektu Lifecycles , obsługiwane fragmenty biblioteki i działania będą zaimplementować interfejs LifecycleOwner ; LifecycleActivity i LifecycleFragment będzie być przestarzałe w tym czasie.”

(skopiowane z wytyczną Architektura komponenty)

+2

"brak paska Actionbar na poziomach api poniżej" 7 – m121212

+0

@ m121212 Pasek ActionBar został wprowadzony na poziomie interfejsu API 11. Dlatego rozszerzając działanie, będziesz mieć go tylko na urządzeniach z Androidem Honeycomb 3.0 (poziom interfejsu API 11) i powyżej – stan0

+0

nie jest to prawdą, w rzeczywistości obsługiwana jest biblioteka obsługująca funkcjonalności dla poziomu api niższego niż 11 (na przykład) – m121212

4

Modele ActionBarActivity lub SupportActionBarActivity mają dodatkowe metody i właściwości, które nie występują w ogólnej wersji Activity. na przykład metody dodawania zakładek są obecne w ActionBarActivity, a nie w ogólnym Activity.

Główna różnica polega na tym, że nie otrzymuje się ActionBar na generic Activity.

+0

Co, jeśli nie chcesz używać paska akcji? Czy ma jakieś ulepszenia wydajności w porównaniu z Prostą aktywnością, czy tylko lepiej jest używać tylko z paska akcji? –

+0

IDK, jeśli actionbaractivity ma poprawę wydajności w porównaniu do braku aktywności – danny117

+0

Dzięki. Wciąż jestem nieco zdezorientowany z tego, czego używać w moich przyszłych aplikacjach i co jest bardziej zalecane. –

1

ActionBarActivity tylko ma więcej bibliotek wsparcia i lepszego wykorzystania nowszych tematów dostępnych API 11.

„W swojej najbardziej podstawowej formie, bar akcja wyświetla tytuł dla aktywności i ikony aplikacji po lewej stronie. Nawet w tej prostej formie pasek czynności jest przydatny w przypadku wszystkich działań, aby poinformować użytkowników o tym, gdzie się znajdują i zachować spójną tożsamość aplikacji. "

7

Jeśli przyjrzeć się dokładnie, widać to

public class ActionBarActivity extends FragmentActivity 
implements ActionBarDrawerToggle.DelegateProvider TaskStackBuilder.SupportParentable 

Tutaj można przeczytać o FragmentActivity: http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html

i różnice między aktywnością i FragmentActivity: Difference between Activity and FragmentActivity

Ponadto, istnieją nowe motywy do stylizacji akcjiBar ... https://developer.android.com/training/basics/actionbar/styling.html

Actionbar został wprowadzony na poziomie interfejsu API 11. com.android.support:appcompat-v7:+ to biblioteka pomocy, która umożliwia korzystanie z paska akcji w aplikacji na urządzenia z systemem Android w wersji 3.0 lub starszej. Tak więc, jeśli potrzebujesz akcji poniżej poziomu 11 api, twoja Aktywność musi rozszerzyć ActionBarActivity.

Jeśli kierujesz api na poziom 11 i wyższy, nie musisz rozszerzać ActionBarActivity i odwoływać się do AppCompat. Możesz po prostu rozszerzyć działanie, a będziesz miał domyślnie Actionabr.

Domyślny projekt Android Studio automatycznie włącza go w zależności i rozszerza ActionbarActivity zamiast Activity, aby z niego korzystać.

1

Używasz Android biblioteki wsparcie, gdy przyjdziesz do do Actionbaractivity. Tak więc zastosowania biblioteki Wsparcia czy twoja aplikacja może być obsługiwana dla maksymalnej liczby urządzeń Biblioteka wsparcia daje twojej aplikacji moc wstecznej kompatybilności Actionbaractivity daje ci wiele funkcji, takich jak ActionBardrawer, przełączanie itd .. dostępnych jest więcej bibliotek wsparcia. zobacz ten link .. i udostępnij do znajomych ... https://developer.android.com/tools/support-library/index.html

Powiązane problemy