В Android основное отличие между расширением Lifecycler Activity, Activity, ActionBarActivity и AppCompactActivity? Как эти классы отличаются друг от друга с точки зрения использования?
Разница между расширением LifecycleActivity, Activity, ActionbarActivity и AppCompactActivity?
Ответ 1
- расширение
ActionBarActivity
дает вамActionBar
на каждом уровне API >= 7 - расширяя
Activity
, вы можете избежать добавления дополнительных проектов/библиотек в свой проект, но вам не хватитActionBar
на уровнях api ниже 11
изменить: Подробнее:
ActionBarActivity
является частью Support Library. Библиотеки поддержки используются для предоставления более новых функций на старых платформах. Например, ActionBar
был введен в API 11 и по умолчанию является частью Activity
(в зависимости от темы на самом деле). Напротив, на старых платформах нет ActionBar
. Таким образом, библиотека поддержки добавляет дочерний класс Activity
(ActionBarActivity
), который предоставляет функциональность ActionBar
и ui
edit2: обновить апрель 2015 г. - похоже, что ActionBarActivity
устарел в revision 22.1.0
библиотеки поддержки. AppCompatActivity
.
edit3: Обновление Aug 2017 - LifecycleActivity является LifecycleOwner, но:
"Поскольку компоненты архитектуры находятся в альфа-стадии, фрагменты и Классы AppCompatActivity не могут реализовать его (потому что мы не можем добавить зависимость от стабильного компонента к нестабильному API). До Жизненный цикл стабилен, классы LifecycleActivity и LifecycleFragment для удобства. После проекта Lifecycles выпущенные, фрагменты и действия библиотеки поддержки Интерфейс LifecycleOwner; LifecycleActivity и LifecycleFragment будут быть устаревшим в то время".
(скопировано из руководства по архитектуре)
Ответ 2
Если вы посмотрите внимательно, вы увидите это
public class ActionBarActivity extends FragmentActivity
implements ActionBarDrawerToggle.DelegateProvider TaskStackBuilder.SupportParentable
Здесь вы можете прочитать о FragmentActivity: http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html
И различия между Activity и FragmentActivity: Разница между Activity и FragmentActivity
Кроме того, есть несколько новых тем для стиля actionBar... https://developer.android.com/training/basics/actionbar/styling.html
Actionbar представлен на уровне API 11. com.android.support:appcompat-v7:+ - это библиотека поддержки, которая позволяет вам иметь ActionBar в вашем приложении для устройств, работающих на Android 3.0 или ниже. Итак, если вам нужна панель действий ниже уровня api 11, ваша активность должна расширить ActionBarActivity.
Если вы нацеливаете уровень api 11 и выше, вам не нужно расширять ActionBarActivity и ссылаться на AppCompat. Вы можете просто расширить Activity, и у вас будет actionabr по умолчанию.
Проект по умолчанию для Android Studio включает его автоматически в зависимости и расширяет ActionbarActivity вместо Activity, чтобы использовать его.
Ответ 3
ActionBarActivity
или SupportActionBarActivity
имеют дополнительные методы и свойства, которые не входят в общий Activity
. например, методы добавления вкладок присутствуют в ActionBarActivity
, а не в общем Activity
.
Основное различие заключается в том, что вы не получаете ActionBar
для общего Activity
.
Ответ 4
ActionBarActivity имеет больше библиотек поддержки и лучшее использование более новых тем, доступных из api 11.
"В своей основной форме панель действий отображает заголовок для действия и значок приложения слева. Даже в этой простой форме панель действий полезна для всех действий, чтобы информировать пользователей о том, где они находятся, и поддерживайте согласованную идентификацию для своего приложения".
Ответ 5
Вы используете библиотеку поддержки Android. Когда вы переходите к Actionbaractivity. поэтому использование библиотеки поддержки - ваше приложение может быть одобрено для максимального количества устройств. Библиотека поддержки предоставляет вашему приложению силу обратной совместимости. Actionbaractivity дает вам функцию mulitiple, такую как Actionbardrawer toggle и т.д., Есть больше доступных библиотек поддержки. см. эту ссылку.. и поделиться с друзьями... https://developer.android.com/tools/support-library/index.html