Manipulação graciosa da mudança de orientação da tela durante o início da atividade

Estou tentando encontrar uma maneira de lidar adequadamente com a configuração de uma atividade em que sua orientação é determinada a partir de dados na intenção que a iniciou. Isto é para um jogo em que o usuário pode escolher níveis, alguns dos quais são orientação retrato e outros são paisagem. O problema que estou enfrentando é quesetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) não entra em vigor até que a atividade esteja totalmente carregada. Isso é um problema para mim, porque eu faço um carregamento e processamento de imagem durante a inicialização, o que eu gostaria de fazer apenas uma vez.

Atualmente, se o usuário escolher um nível de paisagem:

a atividade inicia onCreate (), padronizando para retratodescobre analisando sua intenção de lançamento de que deveria estar na orientação paisagemcontinua independentemente até onResume (), carregando informações e executando outras tarefas de configuraçãoneste momento, setRequestedOrientation entra em ação para que o aplicativo seja executado onPause () até onDestroy ()em seguida, inicia novamente a partir de onCreate () e é executado em onResume (), repetindo a instalação da versão anterior

Existe uma maneira de evitar isso e não executar o carregamento duas vezes? Por exemplo, idealmente, a atividade saberia antes mesmo de o onCreate ser chamado se deveria ser paisagem ou retrato, dependendo de alguma propriedade da intenção de lançamento, mas a menos que eu tenha perdido algo que não é possível. Consegui invadir uma maneira de evitar repetir o carregamento, marcando umboolean antes das etapas de carregamento demoradas, mas essa não parece a maneira correta de fazer isso. Eu imagino que eu poderia substituironSaveInstanceState, mas isso exigiria muita codificação adicional. Existe uma maneira simples de fazer isso?

Obrigado!

Solução:

De acordo com a resposta de Daniel, isso foi realmente muito fácil de corrigir. Eu só precisava fazer algumas pequenas alterações. Na minha atividade 'menu', onde o jogador escolheria qual nível jogar, eu apenas tinha que adicionar uma verificação if / else para escolher qual classe seria iniciada pela minha intenção. Isso foi feito com um simples int representando retrato ou paisagem, determinado quando o jogador selecionou um nível. Criei uma segunda classe estendendo minha classe 'GameLogic'; esta é a classe que continha a maior parte do código do jogo, e não os menus, instruções etc.

public class GameLandscape extends GameLogic{
}

Literalmente simples e completamente vazio. Dessa forma, ele herdou todo o código da minha atividade anterior, onde eu já o havia codificado para lidar com as coisas de maneira diferente, dependendo da orientação. Por fim, bastava adicionar uma linha ao manifesto, afirmando que o GameLandscape sempre rodava na paisagem e o GameLogic sempre rodava no retrato.

Então, um problema simples, de fato.

questionAnswers(2)

yourAnswerToTheQuestion