Usando a classe de aplicativo
Dependendo do que você está fazendo em sua inicialização, você pode considerar criar uma nova classe que estenda Application
e mova seu código de inicialização para um onCreate
método substituído dentro dessa classe.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}
o onCreate
classe na aplicação é chamada somente quando o aplicativo inteiro é criado; portanto, a atividade é reiniciada com alterações na orientação ou na visibilidade do teclado não a acionará.
É uma boa prática expor a instância desta classe como um singleton e expor as variáveis de aplicativo que você está inicializando usando getters e setters.
NOTA: Você precisará especificar o nome da sua nova classe Application no manifesto para que ela seja registrada e usada:
<application
android:name="com.you.yourapp.MyApplicationClass"
Reagindo a alterações na configuração [UPDATE: isso foi preterido desde a API 13; veja a alternativa recomendada ]
Como alternativa adicional, você pode fazer com que seu aplicativo escute eventos que causariam uma reinicialização - como alterações na orientação e na visibilidade do teclado - e lide com eles na sua Atividade.
Comece adicionando o android:configChanges
nó ao nó de manifesto da sua atividade
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
ou para Android 3.2 (API nível 13) e mais recente :
<activity android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
Em seguida, na Atividade, substitua o onConfigurationChanged
método e chame setContentView
para forçar o layout da GUI a ser refazer na nova orientação.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}