2016-07-18 103 views
6

mio AppWidgetProvider (che è, naturalmente, una BroadcastReceiver) è registrato per ricevere CONNECTIVITY_CHANGE, in modo che io possa aggiornare i widget non appena viene ripristinata rete (anche se solo se richiesto, vale a dire se un precedente mancato aggiornamento a causa della mancanza di connettività).Android N: si tratta di mancanza di CONNECTIVITY_CHANGE

Ma come stabilito here, questo non sarà più possibile in Android N. Il suggerimento è quello di utilizzare JobScheduler, che consente di specificare che il lavoro deve essere eseguito solo quando è collegato a una rete per mezzo del metodo .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).

Tuttavia, non riesco a vedere come possa essere utilizzato per replicare il comportamento desiderato. Mi sembra che il metodo .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) causerà il lavoro non eseguito a tutti se non c'è nessuna rete al momento in cui è pianificato il lavoro, e sarà non perché il lavoro attenda pazientemente finché non c'è una rete e quindi eseguire (che è quello che mi serve).

Quindi, come mantenere il comportamento di cui ho bisogno, con Android N?

risposta

0

Sto utilizzando Job Scheduler e non dipende dal fatto che la rete sia disponibile o meno durante la pianificazione del lavoro. Fornisce determinate condizioni e quando tali condizioni sono soddisfatte, il lavoro è pianificato. È possibile impostare un lavoro ripetitivo e anche specificare il divario temporale minimo tra i lavori. Ad esempio ogni volta che collego il mio telefono a ricarica PlayStore avvia l'aggiornamento delle app in quanto il lavoro ha un vincolo di addebito.

Se si pianifica un lavoro e le condizioni non sono soddisfatte, si pianificherà quando la rete è disponibile. Prova a disconnettere la rete e aprire il profilo di qualcuno su Facebook. Ti verrà chiesto di caricare il profilo sulla disponibilità della rete. Ora, connettiti alla rete e riceverai la notifica una volta caricato il profilo.

+0

Se lo desideri, puoi anche utilizzare il dispatcher di Firebase. È compatibile con le versioni precedenti. – Embydextrous

+0

Inoltre è possibile mantenere i lavori attraverso il riavvio del dispositivo. – Embydextrous

0

tenta di aggiungere google ping per il cambiamento della rete che vi aiuterà per cambiamento della rete e per tutte le cause che ho lo stesso problema quando stavo sviluppando con i servizi di socket. Quindi potrebbe anche aiutarti.