Completed

Correção de serviço no Android

Published on the October 25, 2016 in IT & Programming

About this project

Open

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.

Category IT & Programming
Subcategory Apps programming. Android, iOS and others
What is the scope of the project? Small change or bug
Is this a project or a position? Project
I currently have I have specifications
Required availability As needed
Experience in this type of projects Yes (I have managed this kind of project before)
Required platforms Android

Delivery term: Not specified

Skills needed

Other projects posted by T. L. M.