2016-07-31 12 views
1

Welchen Vorteil hat das Erstellen einer separaten Klasse für den Listener ODER Gibt es welche? Der folgende Code ist effizienter und warum? Wann sollte ich eine separate Klasse erstellen?Erstellen einer separaten Klasse für den Listener

separate Klasse für TextWatcher

mEditText.addTextChangedListener(mNumberWatcher); 
TextWatcher mNumberWatcher = new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void afterTextChanged(Editable editable) { 


     } 
    }; 

keine separate Klasse

mEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

     } 
    }); 
+0

Verwenden Sie die separate Klasse, um die Lesbarkeit des Codes zu verbessern, und Sie können diese Instanz auch für einen anderen Listener verwenden. – SadeghAlavizadeh

+0

@Virgoir Wenn ich den Listener-Code nicht mehrmals verwende, sollte ich dann eine separate Klasse verwenden? –

+0

Nein, es gibt keine Performance-Lecks. – SadeghAlavizadeh

Antwort

1

Sie sollten für Hörer separate Klasse verwenden, wenn es gleiche Zuhörer mehrmals in unserem Code verwenden muss, in vielen nicht. von Klassen.

+0

Wenn ich nicht verwenden Hörer mehrmals, dann sollte ich separate Klasse verwenden? Wird es Auswirkungen auf die Leistung? –

+0

Wenn Sie es nicht mehrmals verwenden, müssen Sie keine separate Klasse erstellen. Es wird kein Leistungsproblem damit geben. –

0

Sie sollten entweder eine separate Klasse oder eine innere Statik erstellen, die Ihrem Designmuster entspricht. Normale innere Klassen oder Anonymous Instanziierungen sind in der Lage, Speicherleck zu verursachen, da sie Referenz der Hauptklasse enthalten und GC nicht erlauben, es zu sammeln, und Sie sollten vermeiden, sie zu verwenden.

Verwandte Themen