Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

O meu emulador android não esta atualizado automatico quando eu crio aluno no site

Estou enviando o meu codigo que eu fiz na aulas:

EventBus eventBus = EventBus.getDefault();
        eventBus.register(this);


@Subscribe(threadMode = ThreadMode.MAIN)
    public void atualizaListaAlunoEvent(AtualizaListaAlunoEvent event){
        carregaLista();
    }

E também estou enviando o codigo que eu fiz na aula passada:

public class AgendaInstanceIDService extends FirebaseInstanceIdService {

    @Override
    public void onTokenRefresh() {
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d("token firebase", "Refreshed token: " + refreshedToken);

        // If you want to send messages to this application instance or
        // manage this apps subscriptions on the server side, send the
        // Instance ID token to your app server.
        enviaTokenParaServidor(refreshedToken);
    }

    private void enviaTokenParaServidor(final String token) {

        Call<Void> call = new RetrofitInicializador().getDispositivoService().enviaToken(token);

        call.enqueue(new Callback<Void>() {

            @Override
            public void onResponse(Call<Void> call, Response<Void> response) {
                Log.i("token enviado", token);
            }

            @Override
            public void onFailure(Call<Void> call, Throwable t) {
                Log.e("token falhou", t.getMessage());
            }
        });
    }
}
private void converteParaAluno(Map<String, String> mensagem) {

        String chaveDeAcesso = "alunoSync";

        if(mensagem.containsKey(chaveDeAcesso)){
            String json = mensagem.get(chaveDeAcesso);
            ObjectMapper mapper = new ObjectMapper();

            try {
                AlunoSync alunoSync = mapper.readValue(json, AlunoSync.class);
                AlunoDAO alunoDAO = new AlunoDAO(this);
                alunoDAO.sincroniza(alunoSync.getAlunos());
                alunoDAO.close();

                EventBus eventBus = EventBus.getDefault();
                eventBus.post(new AtualizaListaAlunoEvent());
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

E não tem nenhuma mensagem de erro no android-studio.

5 respostas

Oi Guilherme, tudo bem?

Pode enviar o código que recebe a mensagem do Firebase? No caso do AgendaMessagingService, pois é ele que recebe a mensagem do Firebase.

[]s

Aqui o código AgendaMessagingService:

public class AgendaMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        Map<String, String> mensagem = remoteMessage.getData();
        Log.i("mensagem recabida", String.valueOf((mensagem)));

        converteParaAluno(mensagem);

    }

    private void converteParaAluno(Map<String, String> mensagem) {

        String chaveDeAcesso = "alunoSync";

        if(mensagem.containsKey(chaveDeAcesso)){
            String json = mensagem.get(chaveDeAcesso);
            ObjectMapper mapper = new ObjectMapper();

            try {
                AlunoSync alunoSync = mapper.readValue(json, AlunoSync.class);
                AlunoDAO alunoDAO = new AlunoDAO(this);
                alunoDAO.sincroniza(alunoSync.getAlunos());
                alunoDAO.close();

                EventBus eventBus = EventBus.getDefault();
                eventBus.post(new AtualizaListaAlunoEvent());
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

}

Gui,

Olhando o código tudo parece correto, não vejo algo suspeito a princípio... Quando acontece esse tipo de situação é comum colocarmos logs e verificar pontos do código que estão sendo executados ou não...

A minha sugestão para adicionar tais logs seriam.

  • classe AgendaMessagingService:
    eventBus.post(new AtualizaListaAlunoEvent());
  • No método atualizaListaAlunoEvent dentro da activity de lista de alunos. Deixe logo no começo desse método.

Esse log não precisa de uma mensagem específica, deixe apenas uma mensagem que é fácil de identificar. Em seguida, rode a aplicação e me fala quais logs são chamados e os que não são chamados, dessa forma é mais fácil de identificar o ponto no qual está tendo problema

solução!

Bom dia,

Poderia me ajudar como eu criar um log para a class AtualizaListaAlunoEvent, porque eu criei log e não apareceu o erro do minitoramento do android studio:

public class AtualizaListaAlunoEvent {

    private static final String msg = "Erro do AtualizaListaAlunoEvent";

    public void onCreate(Bundle savedInstanceState) {

        Log.e("Mensagem de erro", msg);

    }
}

Também coloquei log na class ListaAlunosActivity e no metodo atualizaListaAlunoEvent:

@Subscribe(threadMode = ThreadMode.MAIN)
    public void atualizaListaAlunoEvent(AtualizaListaAlunoEvent event){

        Log.e("Mensagem de erro: ", msg);

        carregaLista();
    }

E também não apareceu nada no monitoramendo do android-studio

Já resolve o problema delete mais um vez o arquivo database, ai deu certo, por algum motivo ele não atualizava o aplicativo