2011-12-01 11 views
6

So che Android usa il risveglio per mantenere in esecuzione o lo schermo della cpu. È ovvio che il blocco dello schermo attivo impedisce al timer attivo dell'utente di spegnere lo schermo dopo un periodo di inattività dell'utente.Quando Android interromperà la sua CPU senza la sveglia?

Ma mi chiedo esattamente quando avrà effetto la serratura della cpu.

1.Se creo un nuovo thread e continuo a svuotare la cpu in background senza alcun segnale di attivazione, lo schermo non si fermerà. Si fermerà e quando si fermerà?

2.Che cos'è un thread pianificato con Timer.schedule()?

3. Questo porta a un'altra domanda, se tengo una lunga connessione socket in un servizio, che è bloccata su socket.read(). Devo acquisire un blocco di attivazione per assicurarmi che il servizio si attivi quando il socket riceve un modulo dati remoto?

Grazie.

+0

E cosa succederà se creo un thread nel servizio di Android con thread standard java, quindi si chiama wait (timeout) sul thread, verrà sempre attivato al momento giusto? – lyu

risposta

5

risposte a tutte le vostre domande sub-

  1. Android dorme quando non wake-lock è attiva. Non importa quali processi e thread sono in esecuzione, continuerà a dormire. Ciò significa che se il tuo thread o qualche altro processo non ha attivato un wake lock, il thread non verrà eseguito e quindi non scaricherà alcuna batteria. Il thread sarà reso attivo solo quando alcuni altri processi acquisiscono un wakelock.

  2. Lo stesso è applicabile a Timer.schedule(). Supponiamo che tu scriva un Timer che viene eseguito ogni secondo ma senza alcun wake-lock e che Android va in sleep per 10 secondi. Quando si sveglia p all'undicesimo secondo, identifica che il tuo timer è scaduto 10 volte, semplicemente scarterà le istanze9 e lo eseguirà solo una volta. Se si desidera un timer molto affidabile, è necessario ottenere un wake lock o un allarme AlarmTimer.

  3. Sì.

0

quello che ho imparato da diverse funzionalità relative al Wake-Lock, sistema Android non dorme mai, se si dorme non sarà possibile ottenere SMS, chiamata cioè Android non verrà eseguito solo compito livello di sistema operativo quando va in sonno.
Wake-lock è un meccanismo in cui qualsiasi applicazione può richiedere al sistema di rimanere acceso per lui. L'applicazione può eseguire operazioni sullo sfondo nonostante l'utente non si muova per avviare tale applicazione.

Per 1 & 2 Akshar ha spiegato correttamente. 3. Per eseguire qualsiasi operazione nell'applicazione mentre il sistema è in stato di sospensione (solo l'attività a livello di OS sta eseguendo), è necessario prima richiedere il wake-lock dal sistema e solo l'applicazione può eseguire le sue operazioni. Dopo aver completato le operazioni, è necessario rilasciare il blocco della sveglia in modo che il sistema possa passare alla gestione delle attività a livello di sistema operativo.

Problemi correlati