Realizado

Correção de serviço no Android

Publicado em 25 de Outubro de 2016 dias na TI e Programação

Sobre este projeto

Aberto

Prezados,

Desenvolvi um app para Android que tem um serviço em 2o plano que dipara um GET para meu servidor a cada 45 segundos. Ele funciona bem nos Androids 4.X e 5.X. Ele
dispara a rotina a cada 45 segundos.


O problema é que esse serviço não funciona bem no Android 6. Enquanto o usuário está mexendo no celular, ele funciona bem. Mas quando o usuário para de mexer
no celular, o serviço parece que adormece.
A rotina ao invés de disparar a cada 45 segundos, passa 5 minutos para disparar. O que inviabiliza o funcionamento do app.

Vejam o print Tela1.jpg em anexo. A tela mostra que houve um intervalo grande de 5 min (entre 21:15h e 21:20h) na chamada do serviço, poi o celular estava parado em cima da mesa.
No momento que passo a mexer no aparelho, o serviço normaliza e passa a ser chamado mais vezes. De 21:21h em diante ele normalizou. É Como se o celular ficasse em stand by.


Abaixo vou mostrar como desenvolvi o serviço:

No AndroidManifest.xml tenho:
<receiver
  android:name="com.analisesistemas.taxiweb.android.alarm.MyAlarmReceiver"
  android:process=":remote" >
</receiver>
<service
  android:name="com.analisesistemas.taxiweb.denicar.MyTestService"
  android:exported="false" />


Em anexo, envio as classes:
MyAlarmReceiver.java e MyTestService.java

No método onCreate() da minha activity principal, tenho:

        Intent intent = new Intent(getApplicationContext(), MyAlarmReceiver.class);
        
        // Create a PendingIntent to be triggered when the alarm goes off
        final PendingIntent pIntent = PendingIntent.getBroadcast(this, MyAlarmReceiver.REQUEST_CODE,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);
        
        // Setup periodic alarm every 5 seconds
        long firstMillis = System.currentTimeMillis(); // alarm is set right away
        
        AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
        
        // First parameter is the type: ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC_WAKEUP
        // Interval can be INTERVAL_FIFTEEN_MINUTES, INTERVAL_HALF_HOUR, INTERVAL_HOUR, INTERVAL_DAY
        alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, firstMillis,
                35000, pIntent); //35 segundos
                

Como falei antes, a rotina do serviço em 2o plano funciona bem para os Androids 4.X e 5.X. Sei que houve evolução desse tipo de implementação para o Android 6.

O que preciso ? Preciso de uma nova implementação de serviço (background) que seja EFICAZ também no Android 6. Minha lógica de negócio vai se manter, vou pegar apenas a nova forma de implementar o serviço que o freelancer me enviar.

Categoria TI e Programação
Subcategoria Programação de Apps para Android, iOS e outros
Qual é o alcance do projeto? Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Experiência nesse tipo de projeto Sim (Eu já gerenciei esse tipo de projeto)
Plataformas exigidas Android

Prazo de Entrega: Não estabelecido

Habilidades necessárias

Outro projetos publicados por T. L. M.