2013-03-11 12 views
6

Sto imparando Android e sono bloccato a questa affermazione. da google:Cosa significa zero in Handler.sendEmptyMessage (0)

Invia un messaggio contenente solo il valore.

Returns

restituisce true se il messaggio è stato inserito correttamente nel al messaggio coda di . Restituisce false in caso di errore, in genere perché il looper che sta elaborando la coda dei messaggi è in uscita.

Qualcuno mi spiega per favore cosa farà il Messaggio che contiene zero. Grazie

+0

che è, come dice il documento, messaggio. Che cosa – njzk2

risposta

14

Significa il valore what. what è fondamentalmente un numero intero che consente al destinatario di identificare i messaggi che riceve.

La funzione handleMessage assomiglia a questo

public void handleMessage (Message msg) 

si sta passato un oggetto Message e si può controllare il campo pubblico what di capire che cosa il messaggio è circa. (msg.what)

Es.

inviare due tipi di messaggi, con what valore 1 for success e 0 for failure

così la funzione handleMessage sarebbe simile a questa

public void handleMessage (Message msg) { 
    switch (msg.what) { 
     case 1: 
      //success handling 
      break; 

     case 0: 
      //failure handling 
      break; 
    } 
} 

Ora potete avere sendEmptyMessage(0) per il successo e sendEmptyMessage(1) per il fallimento.

Ricordate che non dovete inviare un messaggio vuoto, è possibile inviare un oggetto messaggio con più dati collegato ad esso troppo

ad esempio per inviare un messaggio con un testo in caso di successo si può fare

Message.obtain(mHandler, 0, "Success text") 

e allo stesso modo per il fallimento

Ora come da ciò che i mezzi a zero, è solo l'invio di un messaggio vuoto e 0 potrebbe essere sostituito da qualsiasi valore. L'idea è che in questo caso hai un solo tipo di messaggi e il Gestore lo capisce. Quindi non ha bisogno di controllare che tipo di messaggio ha ricevuto, ma ha solo bisogno di ricevere un messaggio. Quindi sendEmptyMessage(AnyInteger) funzionerebbe bene. 0 è solo per convenzione

+0

dovrebbero mettere la tua spiegazione nella loro documentazione, davvero utile! Ma perché lo chiamano 'emptyMessage' quando in effetti è un' oneIntMessage'? – winklerrr