Come vengono trattati gli oggetti in una classe interiore anonima?

3

Per esempio prendi questo ...

entryText.addTextChangedListener(new TextWatcher() {

    TextView wordCount = (TextView) findViewById(R.id.wordCount);
    TextView charCount = (TextView) findViewById(R.id.charCount);

    @Override
    public synchronized void afterTextChanged(Editable s) {
        wordCount.setText("W: " + String.valueOf(ChosenFile.countWords(entryText.getText().toString())));
        charCount.setText("C: " + Integer.toString(entryText.getText().length()));
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
    }
});

Sono create nuove istanze di viste di testo wordCount e CharCount ogni volta che viene richiamato il listener? Sarebbe meglio renderli globali?

Come viene gestita la memoria? Diciamo che vengono create nuove istanze, in che modo influisce sulla memoria?

    
posta Captain Save A Hoe 11.01.2016 - 00:43
fonte

1 risposta

3

Le variabili wordCount e charCount vengono create e inizializzate solo quando l'oggetto TextWatcher viene creato e aggiunto come listener. Nessuna nuova istanza viene creata ogni volta che il testo cambia.

    
risposta data 11.01.2016 - 03:39
fonte

Leggi altre domande sui tag