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

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog. Você receberá um email de confirmação. Somente depois de confirma-lo é que poderei lhe enviar os conteúdos exclusivos.

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
(3674) (7) (25) (1)
Go-ahead
"Na falta de um foco externo, a mente se volta para dentro de si mesma e cria problemas para resolver, mesmo que os problemas são indefinidos ou sem importância. Se você encontrar um foco, uma meta ambiciosa que parece impossível e força-o a crescer, essas dúvidas desaparecem."
Tim Ferriss
Treinamento Oficial
Android: Prototipagem Profissional de Aplicativos
Black Week
CursoAndroid: Prototipagem Profissional de Aplicativos
CategoriaAndroid
InstrutorVinícius Thiengo
NívelTodos os níveis
Vídeo aulas+ 124
PlataformaUdemy
Acessar Curso
Receitas Android
Capa do livro Receitas Para Desenvolvedores Android
TítuloReceitas Para Desenvolvedores Android
CategoriaDesenvolvimento Android
AutorVinícius Thiengo
Edição
Ano2017
Capítulos20
Páginas934
Acessar Livro
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
Acessar Livro
Conteúdo Exclusivo
Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
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, e com prioridade, os conteúdos Android exclusivos do Blog.
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 (1)

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