Ciclo de Vida e Otimização de Fragments no Android

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação. Você receberá um email de confirmação. Somente depois de confirmar é que poderei lhe enviar o conteúdo exclusivo por email.

Email inválido.
Blog /Android /Ciclo de Vida e Otimização de Fragments no Android

Ciclo de Vida e Otimização de Fragments no Android

Vinícius Thiengo27/01/2014
(3376) (9) (25) (1)
Go-ahead
"Se você está planejando em fazer alguma coisa diferente, você será criticado por causa disso. Tenha fé de que o que você está fazendo é o certo e bloqueie qualquer negatividade."
Herb Kelleher
Código limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas598
Comprar Livro
Conteúdo Exclusivo
Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Opa! Blz?

Nesse vídeo dou continuidade ao vídeo anterior sobre Fragments no Android, porém agora falando do ciclo de vida do Fragment e suas correpondências no ciclo de vida da Activity host. Abordo também o conceito de otimização utilizando os métodos onSaveInstanceState() e setRetainInstance(). Só lembrando que otimizar o acesso ao conteúdo de sua APP Android não é "luxo" e sim obrigação, pois para o Android aniquilar os processos de sua APP devido ao alto uo de memória é apenas um "pulo" e isso é fácil de acontecer.

Fique atento a importância de entender tanto o ciclo de vida da Activity quanto do Fragment, isso pode ser um baita diferencial na hora de programar sua APP. Mas enfim, vou evitar mais delongas e deixar vc assistir ao vídeo.

Se você não conhece os assuntos LogCat e Ciclo de Vida de uma Activity, segue link dos posts que fiz falando sobre esses:

Entendendo e Utilizando o a Classe Log Com o LogCat no Android

Ciclo de Vida de Uma Atividade no Android

O link para download do projeto se encontra logo abaixo no post.

Página da classe Fragment no site oficial do Android

Segue imagem esquema do ciclo de vida do Fragment em paralelo com o ciclo de vida de uma Activity:

Ciclo de Vida e Otimização de Fragments no Android

Vlw

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Relacionado

AlarmManager no Android, Sua APP Executando Em Tempos DefinidosAlarmManager no Android, Sua APP Executando Em Tempos DefinidosAndroid
AsyncTask no Android, Acesso a Thread Principal de Forma OtimizadaAsyncTask no Android, Acesso a Thread Principal de Forma OtimizadaAndroid
Construindo View Personalizada no AndroidConstruindo View Personalizada no AndroidAndroid
Fragments no Android, Trabalhando com Múltiplas ActivitiesFragments no Android, Trabalhando com Múltiplas ActivitiesAndroid

Compartilhar

Comentários Facebook (3)

Comentários Blog (6)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
24/04/2017
Fala thiengo, blz?

Vou tentar resumir, mas é o seguinte...

Meu app abre na tela MainActivity, uma activity com alguns imagebuttons.

Ao clicar em algum deles é verificado se tem usuario logado via shared preferences. Se ele estiver vazio o user é direcionado pra um fragment.

Neste fragment tem um layout de login, ate ai blz. Coloquei um botao pra fechar via intent, com um finish();

O problema é : quando é utilizado a tecla de navegacao do android pra voltar o app fecha. Como se estivesse na MainActivity.

Tem alguma ideia pra otimizar, ou resolver esse problema?

Acredito que seja no ciclo de vida de cada um.



Vlw, abraco.
Responder
Vinícius Thiengo (0) (0)
27/04/2017
Tiago, tudo bem?

Nesse caso realmente o App ainda está na MainActivity. Pois pelo que eu entendi você somente alterou o Fragment que está sendo apresentado.

Caso queira dar ao usuário a oportunidade de voltar ao Fragment anterior ao Fragment de Login, coloque o Fragment de Login em uma pilha de Fragments utilizando o método addToBackStack():

Fragment loginFragment = new LoginFragment();
// getSupportFragmentManager().beginTransaction() - caso esteja com a lib de suporte
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, loginFragment);
transaction.addToBackStack(?pilha_fragments");
transaction.commit();

Assim quando usuário pressionar o back do device ele voltará para a Fragment anterior. Abraço.
Responder
27/04/2017
Mas ai que ta, só o login é um fragment, a Mainactivity nao.
Responder
Vinícius Thiengo (0) (0)
27/04/2017
Ok, entendi errado.

O que deu a entender foi que havia ao menos dois fragments e a MainActivity sendo a entidade host deles.

Nesse caso, se quiser deixar o usuário sair com o clique em sair, terá de sobrescrever o método onBackPressed() na MainActivity e não invocar a versão super dele: super.onBackPressed().

Abraço.
Responder
Fabiano (1) (0)
07/06/2015
Boa noite thiengo,

Como eu utilizo o setOnclickListener  na classe fragment?


        Button sair = (Button) getView().findViewById(R.id.btClear);


        sair.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //finish();
            }
        });
Responder
Vinícius Thiengo (0) (0)
08/06/2015
Fala Fabiano, blz?
Se seu button R.id.btClear estiver dentro do layout da Activity, então o que está fazendo está correto, porém se ele estiver dentro do layout do Fragment, então vc deve utilizar a view que foi inflada com o layout do fragment, tipo: view.findViewById(R.id.btClear); Abraço
Responder