Modo corretto per ricevere dati di massa da un server in Android?

0

Ok, per spiegare che ho un server in Java che riceve dati da un programma C ++ su cui non ho alcun controllo. Quindi i dati vengono trasferiti su TCP / IP e il server Java lo riceve. Il volume dei dati in arrivo è enorme e arriva ad un ritmo molto veloce, immagina un terminale che stampa un sacco di linee molto velocemente .. Non ho bisogno di prenderlo tutto, per quanto posso sarebbe bello ..

Ora devo inviare i dati a un dispositivo Android e visualizzarli. Non ho idea di quale sia l'approccio migliore per questo.

Attualmente eseguo il ping del server dal mio dispositivo Android ogni 50 ms utilizzando un executor. Quindi uso un gestore per visualizzare i dati. Ho già postato una domanda con il codice qui: domanda correlata .

Ovviamente l'app Android dovrà eseguire il ping mentre l'app è in esecuzione, quindi non posso evitare lo scenario while(true) .

Ho letto circa 100000000 modi per fare concorrenza in Android, e non so cosa scegliere per questo.

  • Ho provato semplice Threads , erano difficili da gestire.
  • Ora sto eseguendo un ExecutorService
  • Ho letto anche su ScheduledExecutorService , ma hanno bisogno di un po 'di tempo durata giusta? La mia app può essere in esecuzione per 5 ore o 5 minuti o 5 anni.
  • Ho letto anche su HandlerThreads, ma non sono sicuro che siano ideali per questo scenario.

Qualsiasi aiuto sarebbe fantastico.

    
posta Trt Trt 27.06.2018 - 14:05
fonte

1 risposta

0

Non posso dire di meglio ma dal mio POV è necessario utilizzare la notifica push. Quindi, la logica sarà la registrazione del dispositivo con il server quando l'utente effettua il login e annulla la registrazione al logout dell'utente. Ora quando si hanno nuovi dati sul Server, il server invierà una notifica al dispositivo e dopo aver ricevuto la notifica, dal dispositivo Android è possibile inviare la richiesta al server per il download dei dati. Sul lato server, è possibile implementare la logica in base alla quale dovrebbe esserci almeno x ms o una differenza di tempo di secondi tra due notifiche. Ciò ti aiuterà ad evitare di inviare richieste troppo frequentemente e migliorare il risparmio della batteria. L'invio di una richiesta al server ogni 50 ms scaricherà sicuramente la batteria del dispositivo. Nell'approccio menzionato, è sufficiente scaricare i dati quando sono disponibili nuovi dati; quindi, in ogni caso, il tuo server non ha ricevuto nuovi dati dopo l'ultimo download, non dovrai inviare richieste di download dal dispositivo.

Per la notifica push, puoi utilizzare FCM .

    
risposta data 28.06.2018 - 12:35
fonte

Leggi altre domande sui tag