Условный перезапуск на Activity onConfigurationChanged

Я хочу сделать занятие, которое позволяет менять ориентацию на некоторые условия, но не иначе. Точнее, я хочу предотвратить перезапуск активности, когда фоновый поток занят.

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

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if (orientationChangeAllowed) {
        // how do I restart this activity?
    } else {
        // don't do anything
    }
}

1 ответ

Решение

Если это разрешено звонить setRequestedOrientation(), когда это не разрешено, ничего не делать.

Как совет: вы можете использовать onRetainNonConfigurationInstance() а также getLastNonConfigurationInstance() и вернуть (объект, содержащий) AsyncThread, Таким образом, Activity изменит ориентацию, когда пользователь хочет. Обратите внимание: вы не должны пропускать ссылку на Context (это может быть ссылка на ваш Activity или Drawable...)

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