Когда использовать PreferenceFragment и PreferenceFragmentCompat?

Я всего лишь новичок, но у меня есть несколько вопросов относительно библиотеки поддержки.

  1. Каждый раз, когда команда Google добавляет новую версию поддержки, она устарела для использования в новой версии, поэтому нам приходится просто переделывать код заново. для поддержки нового уровня API. Разве это не может быть так, у вас может быть эта библиотека, но вы не получите дополнительных функций. Вместо того, чтобы просто отказаться от всей работы? Из-за этого при создании приложения для Android требуется много дополнительной работы.
  2. Почему PreferenceFragment устарел в Android P и какие существуют версии поддержки для обеих библиотек PreferenceFragment и PreferenceFragmentCompat, а также какие дополнительные функции вы получаете?

Платформа Android потрясающая, но в этом сложно разобраться. Если разработчик сделал приложение, какова гарантия, что оно будет работать, когда Android выпустит новую версию? С каждым выпуском что-то объявляется устаревшим либо в функции, либо во всей библиотеке.


person Ravi Parmar    schedule 23.08.2018    source источник


Ответы (1)


Каждый раз, когда команда Google добавляет новую версию поддержки, она устаревает для использования в новой версии, поэтому из-за этого нам приходится снова переделывать код только для поддержки нового уровня API.

Это не относится к делу. «Устаревший» в Android обычно означает «у нас есть то, что мы бы предпочли, чтобы вы использовали». Таким образом, хотя в конечном итоге вы должны попытаться отказаться от устаревших API, «в конечном итоге» может быть порядка пары лет.

Почему PreferenceFragment устарел в Android P

Собственный android.preference.PreferenceFragment устарел в Android 9.0, в основном потому, что он наследуется от android.app.Fragment, который устарел в Android 9.0. В коде фрагмента было много ошибок на протяжении многих лет. Google пытается направить разработчиков на использование реализации фрагментов из библиотек, поскольку библиотеки можно поддерживать в актуальном состоянии, в то время как старые устройства Android (к сожалению) не получают обновлений.

Ничто не мешает вам использовать android.preference.PreferenceFragment в Android 9.0, если хотите. В идеале со временем вы перестанете его использовать, но вам не нужно завтра все бросать и менять свой код.

каковы версии поддержки для обеих библиотек PreferenceFragment и PreferenceFragmentCompat

AFAIK android.support.v14.preference.PreferenceFragment также следует пометить как устаревший, поскольку он тоже наследуется от android.app.Fragment.

android.support.v7.preference.PreferenceFragmentCompat происходит от android.support.v4.app.Fragment, поэтому, насколько я знаю, это то, что вы должны использовать в краткосрочной перспективе.

Весь материал с фрагментами предпочтений в настоящее время немного запутан, я надеюсь, что Google уладит это и предоставит более четкие инструкции в рамках перехода на androidx в течение следующих нескольких месяцев.

person CommonsWare    schedule 23.08.2018
comment
Вы имеете в виду, что если я использую PreferenceFragment вместо PreferenceFragmentCompat, я все равно смогу использовать его в Android P без каких-либо проблем? - person Ravi Parmar; 23.08.2018
comment
@RaviParmar: кроме предупреждения об устаревании, android.preference.PreferenceFragment будет нормально работать в Android 9.0. В конце концов, я ожидаю, что существуют десятки тысяч, если не сотни тысяч существующих приложений, которые уже используют его, и они не будут обновляться быстро, если вообще когда-либо. - person CommonsWare; 24.08.2018
comment
@CommonsWare теперь предлагает использовать AndroidX PreferenceLibrary, как вы можете видеть в документации здесь разработчик .android.com/reference/android/preference/ - person Elior; 07.04.2019