2012-09-26 19 views
13

In Android abbiamo 2 modi per impostare un evento onclick per un buttom (o qualsiasi altra vista credo):che uno è migliore performance Wise: setOnClickListener VS Android: onclick = "onClick"

Scenario uno (a livello di codice):

Button b = (Button) findViewById(R.id.mybutton); 
b.setOnClickListener(this); 

Scenario due (nel file XML):

<Button android:onClick="handler" /> 

È il re qualsiasi penalizzazione delle prestazioni per farlo in XML o programmaticamente o è lo stesso?

+0

Non sono un esperto in alcun modo, ma direi che il modo a livello di programmazione è migliore in termini di prestazioni ... in pratica è lo stesso, ma nel modo XML si aggiunge un passo, penso, quello in cui l'XML viene analizzato. ma potrei sbagliarmi, sto solo speculando. – Fustigador

+0

Non penso che faccia una differenza significativa. Se stai incontrando problemi di prestazioni che non è il modo di risolverli. Immagino che se stai usando tanti pulsanti per fare la differenza, il vero problema è il tuo layout. – IchBinKeinBaum

risposta

1

Entrambe sono le stesse in termini di prestazioni. Xml è pre-analizzato in codice binario durante la compilazione. quindi non c'è overhead in Xml.

0

L'unico modo per sapere è attraverso i test unitari. Dipende totalmente da come è stato gestito sotto ... Se non sto indovinando, dichiararlo in xml potrebbe essere un po 'più lento dal momento che l'xml deve essere analizzato e quindi il metodo dovrebbe essere chiamato .. Ancora non si può essere sicuri, è una scelta puramente progettista del SO Android

+0

Potrebbe essere corretto, ma il preparsing viene eseguito una sola volta al tempo di compule. Quando l'app è pubblicata come APK, è già un codice binario. –