Eu tenho uma das minhas atividades que eu gostaria de impedir de rodar porque estou iniciando um AsyncTask, e a rotação da tela faz com que seja reiniciado.
Existe uma maneira de dizer a essa atividade "NÃO GIRAR A Tela, mesmo que o usuário esteja sacudindo o telefone como um louco"?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
Respostas:
Adicionar
ou
para o
<activity>
(s) elemento (s) no manifesto e pronto.fonte
Você pode seguir a lógica abaixo para evitar auto tela girar , enquanto o seu
AsyncTask
está em execução:getRequestedOrientation()
.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR)
.AsyncTask
.AsyncTask
restauração, restaure o status de orientação anterior usandosetRequestedOrientation(oldOrientation)
.Observe que existem várias maneiras de acessar as propriedades
Activity
(executadas no thread da interface do usuário) dentro de umAsyncTask
. Você pode implementar seuAsyncTask
como uma classe interna ou pode usar uma mensagemHandler
que cutuca suaActiviy
classe.fonte
No seu arquivo de manifesto, para cada atividade que você deseja bloquear a rotação da tela, adicione: se você deseja bloqueá-lo no modo horizontal:
ou se você deseja travá-lo no modo vertical:
fonte
A maneira mais fácil de encontrar isso foi colocar
no onCreate, logo após
tão...
fonte
Em vez de entrar no AndroidManifest, você pode fazer o seguinte:
A única desvantagem aqui é que ela requer o nível 18 da API ou superior. Então, basicamente, esta é a ponta da lança.
fonte
Activity.java
AndroidManifest.xml
fonte
O seguinte atributo na ACTIVITY no AndroidManifest.xml é tudo o que você precisa:
Portanto, o nó de atividade completo seria:
fonte
Adicionar:
fonte
Adicione o seguinte ao seu AndroidManifest.xml
[app> src> main> AndroidManifest.xml]
Exemplo:
fonte
Se você estiver usando o Android Developer Tools (ADT) e o Eclipse, poderá acessar o AndroidManifest.xml -> guia Aplicativo -> descer e selecionar sua atividade. Por fim, selecione sua orientação preferida. Você pode selecionar uma das muitas opções.
fonte
Você precisa adicionar o seguinte código no arquivo manifest.xml. A atividade para a qual não deve girar, nessa atividade, adicione este elemento
Então não vai rodar.
fonte
Você pode tentar dessa maneira
fonte
Use o AsyncTaskLoader para manter seus dados seguros, mesmo que a atividade seja alterada, em vez de usar o AsyncTask, que é a melhor maneira de criar aplicativos do que impedir a rotação da tela.
fonte
Impedir a rotação da tela, basta adicionar esta linha a seguir em seus manifestos.
Isso funciona para mim.
fonte
O usuário
"portrait"
no seu arquivo AndroidManifest.xml pode parecer uma boa solução. Mas força alguns dispositivos (que funcionam melhor na paisagem) a entrar em retrato, sem obter a orientação adequada. Na versão mais recente do Android, você receberá um erro. Então, minha sugestão é melhor usar"nosensor"
.fonte