Что на самом деле делает добавление uiMode в android:configChanges?

Я только что исправил ошибку в нашем приложении. Проблема заключалась в том, что при стыковке или отстыковке устройства приложение перезагружалось. Исправление, которое я обнаружил после траления множества форумов, заключалось в добавлении uiMode к атрибуту android:configChanges в файле AndroidManifest.xml:

    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustPan">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

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

1 ответ

Решение

Добавление чего-то к android:configChanges сообщает Android, что вы сами будете обрабатывать определенные события в onConfigurationChanged в классе Activity (или игнорировать их). Если вы укажете что-то там, Android ничего не сделает сам в случае запуска события, которое будет воссозданием Активности в случае стыковки / отстыковки.

В обычном случае вы ничего не нарушаете, если не меняете свой макет, например, в случае такого события.

Другие вопросы по тегам