Domanda Il Wi-Fi o la CPU possono andare in stop quando lo schermo è acceso?


Ci sono WakeLocks e WifiLocks su Android - ma ho bisogno di questi se il mio schermo non si spegne mai?

Sto usando connessioni persistenti (ad esempio WebSockets) per decine di minuti o persino ore. Il mio schermo sarà sempre acceso per evitare che il dispositivo perda le connessioni (supponendo che la connessione rimanga disponibile e il server sia a posto)?

Per mantenere lo schermo attivo, utilizzo il modo standard:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Cosa dicono i documenti:

Per evitare di scaricare la batteria, un dispositivo Android lasciato inattivo si addormenta rapidamente.

(https://developer.android.com/training/scheduling/wakelock.html)

Normalmente la radio Wi-Fi può spegnersi quando l'utente non utilizza il dispositivo da un po 'di tempo.

(http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html)

Questo significa che ...

la radio Wi-Fi o la CPU possono andare in modalità di sospensione o spegnersi quando l'utente non interagisce con il dispositivo per un periodo più lungo (anche se lo schermo è ancora acceso)?

E, più in particolare, può svolgere un'attività in background (ad es. IntentService) Connessione dati Wi-Fi o mobile andare a dormire quando c'è ancora un Activity che mantiene lo schermo acceso?


21
2017-12-11 07:43


origine


risposte:


Il Wi-Fi o la CPU possono andare in stop quando lo schermo è acceso?

No.

Ci sono WakeLock e WifiLock su Android - ma ho bisogno di questi se il mio schermo non si spegne mai?

Non sono del tutto chiaro in che modo lo schermo non si spegne mai. Alla fine della giornata, AFAIK, a WakeLock è sempre coinvolto Se tu bisogno del WakeLock o se quello WakeLock è gestito da classi quadro (ad es. android:keepScreenOn) o il sistema operativo (ad esempio, l'opzione Impostazioni per mantenere lo schermo acceso), dipenderà da ciò che stai facendo.

Non ho mai visto un dispositivo Android spegnere WiFi mentre lo schermo è acceso (e non alla schermata di blocco). Non riesco a escludere la possibilità che il Wi-Fi possa essere spento a causa delle basse condizioni della batteria nella modalità di risparmio energetico di alcuni produttori.

Il mio schermo sarà sempre acceso per evitare che il dispositivo perda le connessioni (supponendo che la connessione rimanga disponibile e il server sia a posto)?

Lo definirei più come "mantenere lo schermo attivo aiuterà". O, meglio, lasciare che il dispositivo entri in modalità di sospensione normalmente interromperà le tue connessioni WiFi.

Per mantenere lo schermo attivo, utilizzo il metodo standard: getWindow (). AddFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Il che significa che stai usando un WakeLock. Succede solo che è uno che è gestito per te, e dal momento che non si può rovinare tutto, non è necessario il WAKE_LOCK autorizzazione.

la radio Wi-Fi o la CPU possono andare in modalità di sospensione o spegnersi quando l'utente non interagisce con il dispositivo per un periodo più lungo (anche se lo schermo è ancora acceso)?

Per un dispositivo normale, no. Non posso escludere che alcuni produttori facciano una sorta di e-ink che potrebbe avere quel comportamento.

E, più nello specifico, la connessione Wi-Fi o mobile di una attività in background (ad esempio IntentService) può andare in stop quando c'è ancora un'attività che mantiene lo schermo acceso?

Non dovrebbe. In particolare, la connessione dati mobile mai va a dormire.


Detto questo, l'affidabilità di ciò che stai facendo succhia se non si tratta di un ambiente completamente controllato. Stai facendo molte ipotesi:

  • Una sorta di fonte di energia permanente

  • Nessuno scherza con il dispositivo per spostare la tua attività sullo sfondo o il pulsante INDIETRO fuori di esso

  • Nessuno scherzare con la rete WiFi, in generale o affannarsi con le impostazioni sul dispositivo (ad esempio, metterlo in modalità aereo)

  • Eccetera.

Se si tratta di una sorta di monitor per processi industriali o dispositivo in-kiosk, le probabilità che tu controlli queste cose alla perfezione è decente, ma non eccezionale. Si ottiene molto al di là di questo, e le probabilità di queste cose di rallentare rapidamente.


Hai qualche referenza?

In un mondo ideale, tutto ciò sarebbe perfettamente documentato, ci sarebbe pace tra tutti i popoli, e Hayley Atwell penserebbe che io sia un tipo decente.

Questo non è un mondo ideale.

Questa roba non è solo in gran parte non documentata, ma dipende esclusivamente dai produttori di dispositivi. Ecco perché se questo non è un molto ambiente controllato, mentre sei libero di provare a ottenere questo tipo di comportamento, il mondo reale è molto disordinato e non dovresti assumere che puoi mantenere una connessione aperta indefinitamente.


6
2017-12-19 01:07



Beh, la cpu non entrerà nel sonno profondo se lo schermo è acceso. Lo schermo di mantenimento della bandiera è un modo più intelligente di mantenere lo schermo acceso anziché i blocchi della sveglia per risparmiare la durata della batteria. passare attraverso il seguente link e leggere in quello leggi il commento di Hackborns

https://groups.google.com/forum/#!searchin/android-developers/flag_keep_screen_on$20wake$20locks/android-developers/Tg7_sUL8Ec4/sI6ayb5yzigJ

Wifi ha la sua opzione di politica del sonno nel sistema -> wifi-> anticipo. In questo caso, se è sempre attivo, non entrerà in modalità sospensione.


1
2017-12-15 17:58