LiveData é uma classe que observa e notifica mudanças de dados, respeitando ao mesmo tempo, o ciclo de vida de outros objetos, como Activities e Fragments.
Como usar:
Adicionando Dependências:
No Gradle, adicionar as seguintes dependências:
dependencies{
implementation "android.arch.lifecycle:extensions:1:1:0"
annotationProcessor "android.arch.lifecycle:compiler:1.1.0"
}
Adicionando em um DAO
Vamos pegar o DAO feito no post sobre Room e vamos fazer o seguinte: como nós precisamos saber se houve alguma mudança na lista de todos os nomes, então vamos adicionar, mudando o retorno da função com LiveData (linha 04). Obviamente, qualquer referência a essa função deve ser mudada também. Segue o código modificado:
01. @Dao
02. public interface NameDao{
03. @Query("SELECT * FROM name ORDER BY priority")
04. LiveData<List<NameEntry>> loadAllNames();
05. @Insert
06. void insertName(NameEntry nameEntry);
07. @Update(onConflict=OnConflictStrategy.REPLACE)
08. void updateName(NameEntry nameEntry);
09. @Delete
10. void deleteName(NameEntry nameEntry);
11. @Query("SELECT * FROM name WHERE id=:id")
12. NameEntry loadNameById(int id);
13. }
Adicionando um Observable
Agora, vamos adicionar um Observer ao LiveData para ser notificado. Supondo que temos o seguinte método (ver abaixo) em uma Activity para pegar a lista de nomes no banco de dados:
Adicionando um Observable
Agora, vamos adicionar um Observer ao LiveData para ser notificado. Supondo que temos o seguinte método (ver abaixo) em uma Activity para pegar a lista de nomes no banco de dados:
01. public class ActivityName extends Activity{
02. private void getAllNames(){
03. final LiveData<List<NameEntry>> names = bd.namesDAO().loadAllNames();
04. names.observe(this, new Observer<List<NameEntry>>(){
05. @Override
06. public void onChange(@Nullable List<NameEntry> namesEntries){
07. //Recebendo os dados atualizados do LiveData
08. }
09. });
10. }
11.}
O método acima agora só precisa ser executado uma vez (geralmente no onCreate), e qualquer mudança que ocorrer no banco de dados agora, o método onChange (linha 05-08) do objeto Observer que criamos na linha 4.
Nenhum comentário:
Postar um comentário