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.
Prazo de Entrega: Não estabelecido