Alguém pode me ajudar a conhecer o Bundle savedInstanceState
em onCreate(Bundle savedInstanceState)
Eu sou novato no Android. Eu tento entender isso em developer.android.com. Mas eu não sou capaz de entender. Alguém pode simplificá-lo?
Alguém pode me ajudar a conhecer o Bundle savedInstanceState
em onCreate(Bundle savedInstanceState)
Eu sou novato no Android. Eu tento entender isso em developer.android.com. Mas eu não sou capaz de entender. Alguém pode simplificá-lo?
Respostas:
Se você salvar o estado do aplicativo em um pacote configurável (normalmente dados dinâmicos e não persistentes onSaveInstanceState
), ele poderá ser repassado para onCreate
se a atividade precisar ser recriada (por exemplo, alteração de orientação) para que você não perca isso antes. em formação. Se nenhum dado foi fornecido, savedInstanceState
é nulo.
... você deve usar o método onPause () para gravar quaisquer dados persistentes (como edições do usuário) no armazenamento. Além disso, o método onSaveInstanceState (Bundle) é chamado antes de colocar a atividade em um estado em segundo plano, permitindo salvar qualquer estado dinâmico da instância em sua atividade no determinado Bundle, para ser recebido posteriormente em onCreate (Bundle) se a atividade precisa ser recriado. Consulte a seção Ciclo de vida do processo para obter mais informações sobre como o ciclo de vida de um processo está vinculado às atividades que ele está hospedando. Observe que é importante salvar dados persistentes em onPause () em vez de onSaveInstanceState (Bundle) porque o último não faz parte dos retornos de chamada do ciclo de vida, portanto, não será chamado em todas as situações, conforme descrito em sua documentação.
onCreate(Bundle savedInstanceState)
você receberá o Bundle
nulo quando a atividade começar pela primeira vez e será usada quando a orientação da atividade for alterada .......
http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
O Android oferece outra maneira elegante de conseguir isso. Para conseguir isso, precisamos substituir um método chamado onSaveInstanceState()
. A plataforma Android permite que os usuários salvem qualquer estado da instância. O estado da instância pode ser salvo no Bundle. O pacote é passado como argumento para o método onSaveInstanceState.
podemos carregar o estado da instância salva do pacote passado como argumento para o onCreate
método Também podemos carregar o estado da instância salva no onRestoreInstanceState
método Mas deixarei isso para os leitores descobrirem.
savedInstanceState
será não- null
se onSavedInstanceState()
foi chamado anteriormente. mudanças de orientação são apenas um exemplo em que isso pode ocorrer.
Bundle
argumento onCreate(Bundle)
será non- null
if e somente se o método Activity
tiver onSaveInstanceState
sido chamado anteriormente. Isso acontece durante as alterações de orientação ... e também ocorre quando a atividade volta após ser interrompida pelo sistema operacional e quando você aciona qualquer outra alteração de interesse no seu dispositivo.
Como Dhruv Gairola respondeu, você pode salvar o estado do aplicativo usando o Bundle savedInstanceState. Estou tentando dar um exemplo muito simples que novos alunos como eu podem entender facilmente.
Suponha que você tenha um fragmento simples com um TextView e um botão. Cada vez que você clica no botão, o texto muda. Agora, altere a orientação do seu dispositivo / emulador e observe que você perdeu os dados (significa os dados alterados após clicar em você conseguiu) e o fragmento é iniciado pela primeira vez novamente. Usando o Bundle savedInstanceState, podemos nos livrar disso. Se você der uma olhada no ciclo de vida do fragmento. No fragmento Lifecylce, você verá que um método "onSaveInstanceState" é chamado quando o fragmento está prestes a ser destruído.
Portanto, podemos salvar o estado, o valor do texto alterado nesse pacote, como este
int counter = 0;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value",counter);
}
Depois de fazer a orientação, o método "onCreate" será chamado, certo? para que possamos fazer isso
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
//it is the first time the fragment is being called
counter = 0;
}else{
//not the first time so we will check SavedInstanceState bundle
counter = savedInstanceState.getInt("value",0); //here zero is the default value
}
}
Agora, você não perderá seu valor após a orientação. O valor modificado sempre será exibido.
Função onCreate (Bundle savedInstanceState) no Android:
1) Quando uma Atividade é chamada ou iniciada pela primeira vez, o método onCreate (Bundle savedInstanceState) é responsável por criar a atividade.
2) Sempre que a orientação (ou seja, da horizontal para a vertical ou vertical para horizontal) da atividade for alterada ou quando uma Atividade for encerrada com força por qualquer Sistema Operacional, o saveInstanceState, ou seja, o objeto da Classe de Pacote salvará o estado de uma Atividade.
3) Depois que a Orientação mudou, o onCreate (Bundle savedInstanceState) chamará e recriará a atividade e carregará todos os dados de savedInstanceState.
4) Basicamente, a classe Bundle é usada para armazenar os dados da atividade sempre que a condição acima ocorrer no aplicativo.
5) onCreate () não é necessário para aplicativos. Mas o motivo pelo qual é usado no aplicativo é porque esse método é o melhor lugar para colocar o código de inicialização.
6) Você também pode colocar seu código de inicialização em onStart () ou onResume () e, quando o aplicativo for carregado primeiro, funcionará da mesma forma que em onCreate ().
onCreate(Bundle)
é chamado quando a atividade é iniciada pela primeira vez. Você pode usá-lo para executar uma inicialização única, como a criação da interface do usuário. onCreate()
usa um parâmetro que é nulo ou algumas informações de estado salvas anteriormente pelo onSaveInstanceState
.