Условный перезапуск на Activity onConfigurationChanged - PullRequest
5 голосов
/ 19 марта 2010

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

Я поместил атрибут 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 Ответ

7 голосов
/ 19 марта 2010

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

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

...