Sto costruendo un'applicazione Android, che fa uso di un ricevitore broadcast manifest per sapere quando il dispositivo è collegato. Penso che l'API JobScheduler di Android 5.0 sarebbe un modo molto migliore per farlo, ma ho una domanda: è possibile utilizzare questa API o una simile su versioni precedenti di Android? Se non è possibile, quale sarebbe l'opzione migliore per farlo (invece di un ricevitore broadcast manifest)?API 5.0 JobScheduler per Android su versioni precedenti?
risposta
Firebase JobDispatcher è stato introdotto.
Sostituisce la vecchia libreria GCM Network Manager.
penso che Android 5.0 JobScheduler API sarebbe un modo molto migliore di fare questo
Beh, questo dipende da quello che "questo" è. Sapere semplicemente quando il dispositivo è collegato è inutile a meno che non si abbia intenzione di fare qualcosa con quella informazione, e non sappiamo cosa avete in mente.
Ricordare che lo JobScheduler
non ti dà necessariamente il controllo quando il dispositivo è collegato. Piuttosto, usa questo fatto, oltre al tuo JobInfo
e ad altri fattori ambientali, per determinare quando dare il controllo.
è possibile utilizzare questa API o una simile su versioni precedenti di Android?
Non esiste un backport di JobScheduler
fornito da Android SDK in questo momento. Mentre qualcuno probabilmente scriverà un backport a un certo punto, non sono a conoscenza di uno disponibile come open source al momento.
Se non è possibile, quale sarebbe l'opzione migliore per farlo (invece di un ricevitore broadcast manifest)?
Di nuovo, dipende da cosa "questo" è veramente. Ad esempio, se si sta tentando di dire "Voglio ottenere il controllo ogni tanto, ma solo se il dispositivo è collegato", è possibile utilizzare AlarmManager
, quindi verificare se il dispositivo è collegato prima di continuare il lavoro.
Aggiornamento:
Firebase JobDispatcher è stato introdotto in sostituzione di seguito.
Aggiornamento:
In Play Services 7.5 GCM Network Manager è stato introdotto.
Questa è l'approssimazione più vicina per un backport dell'API di JobSchedulers.
Evant utente su Github sta creando un Compat version of the JobScheduler API.
Al momento del distacco non è pronto per la produzione, ma è degno di nota
Un'altra opzione è questa libreria: https://github.com/evernote/android-job
Esso utilizza il JobScheduler
e GcmNetworkManager
se possibile. In caso contrario, fallbacks allo AlarmManager
.Gestisce anche diversi livelli API con il AlarmManager
correttamente. Questo blog post offre una panoramica.
(PS:. Io sono il principale sviluppatore che ha lavorato a questa libreria in Evernote E 'utile per i nostri progetti, è per questo che ho voluto condividere qui pure)
ottimo lavoro uomo, adoro questa libreria. Sfortunatamente non c'è molta documentazione a riguardo e non sono sicuro di non essere sicuro della configurazione del lavoro. – Nativ
In realtà, non dovresti preoccuparti troppo della configurazione. La documentazione su Github spiega tutto ciò che è necessario. Anche creare un vero lavoro non è difficile. Crea la tua classe di lavoro e pianificala con il Builder, che fornisce alcuni parametri facili da usare. – vRallev
sono imbattuto in questa biblioteca, non provate, ma sembra buona per ciò che si vuole: https://github.com/airk000/Trigger
Evernote Android-lavoro potrebbe essere una soluzione migliore però :)
- 1. Cordova: schermo bianco persiste su Android 5.0 (e versioni successive)
- 2. Best practice per compatibilità con le versioni precedenti delle API
- 3. Android L: compatibilità con versioni Android precedenti
- 4. Come ottenere setVideoScalingMode per le versioni precedenti di Android
- 5. Problema di accesso asmack su Android 5.0 e versioni successive
- 6. tabStripEnabled per TabWidget nelle API precedenti
- 7. Visualizzazione calendario per Android GingerBread e versioni precedenti (API <11)
- 8. Progettazione API che garantisce la compatibilità con le versioni precedenti
- 9. Android JobScheduler funziona sempre per 1 minuto
- 10. alternativa per AudioManager.setRingerMode() in Android 5.0 (API 21)
- 11. Imposta il tema Holo nelle versioni precedenti di Android?
- 12. Rileva versioni precedenti di IE
- 13. elevazione su Android 5.0 (Lollipop) non funziona
- 14. Android JobScheduler esecuzione più volte
- 15. Possiamo utilizzare Intent.EXTRA_ALLOW_MULTIPLE per versioni precedenti dei livelli di API Android utilizzando la libreria di supporto Android?
- 16. Installare le versioni precedenti di R su ubuntu
- 17. Selezione batch di action bar Android per versioni precedenti alla 3.0
- 18. API HighCharts per versioni deprecate
- 19. Pianificazione dei processi con JobScheduler in Android
- 20. AndroidKeystore su 4.1 API
- 21. Come rimuovere le versioni precedenti di Xcode
- 22. È possibile scaricare versioni precedenti notturne?
- 23. Test con le versioni precedenti di Firefox
- 24. Come rendere InstallShield disinstallare le versioni precedenti?
- 25. Compilare per versioni precedenti di Mac OS X
- 26. Nascondere il titolo di un ActionBar non funziona su versioni precedenti di Android (utilizzando ActionBarSherlock)
- 27. .lib e .dll Compatibilità con versioni precedenti
- 28. Come ottenere versioni precedenti di pacchetti usando MSYS2?
- 29. Android JobScheduler onStartJob chiamato più volte
- 30. Esiste un archivio per versioni precedenti di Chrome Extensions?
Grazie! Voglio semplicemente fare un po 'di lavoro mentre il telefono è in carica, per ridurre il consumo della batteria. Il lavoro è fatto all'interno di IntentService – fergaral
@ user3194230: Questo sembra sicuramente un buon uso di 'JobScheduler' (anche se per questo dovresti passare a' JobService'). Puoi forse [usare 'ACTION_POWER_CONNECTED'] (http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_CONNECTED) nel frattempo, però - Avevo dimenticato di quella trasmissione quando ho scritto la mia risposta . – CommonsWare
Sì. In questo momento sto usando un BroadcastReceiver manifest che ascolta la trasmissione ACTION_POWER_CONNECTED. Sul mio Nexus 5 con Android 4.4.4 funziona come previsto, ma non ho potuto farlo funzionare sul Samsung Galaxy S del mio amico (con Android 2.3.6). Ho provato ad ascoltare la trasmissione ACTION_BATTERY_CHANGED e funziona sia nel mio telefono che in quello di un mio amico, ma questa trasmissione richiede che la mia app sia sempre in esecuzione – fergaral