6

Я прошел через разные должности и вопросы для обработки вращения и AsyncTask. В каждом посте упоминается, что использование android:configChanges является плохой практикой. Но я не нашел фактической причины, по которой он обескуражен, и почему это плохая практика. Каков недостаток, если мы используем android:configChanges для ориентации.почему использование android: configChanges - плохая практика

Примечание: Я знаю, что он уже ответил, как обращаться с ориентацией и AsyncTask. но я хочу знать причину, по которой не используется android:configChanges.

+0

см: https://github.com/open-keychain/open-keychain/issues/257 –

+1

Одна из причин заключается в том, что вы отключите поведение по умолчанию Android, и вам действительно нужно обратить внимание на то, чтобы сохранить все строки в руках, чем. Итак, лучше принять свой код в правилах фреймворка, чем бороться с ним. Но есть ситуации, когда это хорошо и только решение, поэтому это не все «1 или 0. –

ответ

4

Ну, вы должны помнить, что Activity может быть перезапущен по нескольким причинам.

Например, одна из этих причин заключается в том, что ваше приложение находится в фоновом режиме, и ОС решает убить его (с вашим Activity, конечно), чтобы восстановить память.

Когда вы вернетесь в свое приложение, ОС попытается воссоздать ваш Activity, как вы его оставили, но не сможет этого сделать, потому что вы решили не беспокоиться об этом, просто использовали android:configChanges в вашем манифесте.

Если вы уверены, что ваше приложение может нормально восстановиться после перезагрузки, может не потребоваться android:configChanges. Из-за этого нужен, чтобы использовать android:configChanges, может указывать на некоторые недостатки в вашем приложении, которые могут стоить взглянуть.

Неплохое использование android:configChanges, но это довольно легко, если вы не понимаете, что именно вы делаете.

+2

Последнее предложение - это ключ! –

0

Подводя итог всем, что я получил, ответил на вопрос @ user13 и другие вопросы о стеке и сообщениях в блоге, я хотел бы поделиться своими выводами, чтобы убрать некоторые очень важные аспекты.

  1. (user13) Это не плохая практика, чтобы использовать Android: configChanges, но это довольно легко может быть, если вы не понимаете, что именно вы делаете

  2. Используя эту технику, мешает вам легко используя конфигурационные ресурсы. Например, если вы хотите, чтобы ваш макет, чертежи или строки или что-то другое было в портрете и ландшафте, вы должны управлять им самостоятельно, если используете android:configChanges.

  3. Вы должны переопределить и использовать метод для выполнения конкретных действий, если вы решите использовать android:configChanges
  4. Как user13 упоминалось активность воссоздан не только за счет изменения ориентации, но есть несколько причин, в силу которых деятельность может быть перезапущен. Для этого необходимо перезагрузить работу для всех причин. использование android:configChanges обрабатывает только один случай и будут необработанные случаи перезапуска активности, которые могут вызвать потенциальную ошибку.
  5. Существует множество и более эффективных способов обработки перезапуска активности, а также большая помощь также доступна для stactoverflow, поэтому android:configChanges следует использовать в качестве крайней меры в соответствии с документацией.
0

Использование android: configChanges - хорошая практика, если вы знаете, что делаете.

Всегда проверяйте, как ваше приложение работает, когда оно перезапускается системой, чтобы оставаться комфортным для пользователя, поэтому некоторое состояние должно сохраняться все время, но не все. с изменениями конфигурации, как это:

android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"

Ваше приложение будет перезапустится довольно редко на новых устройствах, которые имеют большой объем памяти. Если он перезагрузится, это не так неожиданно для пользователя, так как пользователь обратил внимание в другом месте и вернулся в приложение. Пользователь не должен быть в том же состоянии после перезагрузки, если это произойдет путем ручного убийства приложения или перезапуска приложения из-за того, что пользователь выполняет другие тяжелые задачи (играя в игру), здесь важна работа пользователя.

Если вам нужно обновить список только для различных макетов для ориентаций изменений или вам нужно, чтобы скрыть некоторые просматривать элементы, которые вы можете позвонить:

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    _list.reloadData(); 
    _editorButton.visible(isPortrait()); 
} 

(я использую свои собственные классы, но вы получите точку)

 Смежные вопросы

  • Нет связанных вопросов^_^