2016-12-15 3 views
0

Я пытаюсь реализовать поведение OnClick в представлении моего приложения. Поскольку я новичок в андроиде и буду знать, пройдет ли это при реализации интерфейса View.OnClickListener, будет лучше выбирать или использовать setOnclickListener Анонимный класс для виджета. Что касается меня, то я считаю, что передача этого может привести к тому, что весь вид активности и его дочерние элементы будут виден конкретному виджету, поэтому они будут потреблять больше памяти и, следовательно, избежать утечки памяти, что является наилучшим подходом.setOnclickListener vs Activity реализует View.OnClickListener

+0

Лучший вариант - реализовать View.OnClickListener. это уменьшит некоторые строки кода и легко удерживает все события кликов в одном блоке. – Nas

+0

@ Нас, я знаю это, но я интересуюсь потреблением памяти. –

+0

Вероятно, это уменьшит объем памяти (объем) в вашем размере файла, однако оба они будут относиться к одному и тому же классу и будут работать одинаково, поэтому он выделяет одинаковый объем памяти (ОЗУ). – Nas

ответ

1

Фактически, когда мы реализуем OnClickListener, потому что у нас есть более одного или двух элементов щелчка. как если у меня есть 10 кнопок в одном макете и я пишу каждый клик слушатель как:

button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    button2setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 

не очень хорошая практика программирования вот почему мы внедряем OnClickListener и написать все клики слушателей в OnClick(). , так что вам будет легко сделать какие-либо изменения в будущем.

else, если у вас есть одна кнопка, вы можете использовать setOnClickListener().

Разница между этими двумя не слишком велика. Его все о хорошей практике кодирования в Android. :)

+0

Все в порядке, но я думаю, что реализация интерфейса, а затем передача с использованием этого означает, что мы создаем целую ссылку на конкретный виджет, чтобы, возможно, дублировать все накладные расходы памяти, связанные с активностью. в то время как при прохождении интерфейса как анонимного класса мы просто передаем конкретный интерфейс, а не активность. –

0

Вы также можете использовать

android:onClick = "ButtonOne" 

атрибут в XML file.its легко !!

+0

Я не прошу, что легко, я просто думаю об этом в другой перспективе, это управление памятью. –

+0

AFAIK все три подхода используют почти ту же память. Вопрос, который следует учитывать, - это хорошая практика кодирования. Это зависит от ситуаций. реализация View.OnClickListener и использование android: onClick = "ButtonOne" предпочтительнее, чем использование setOnClickListner для каждой кнопки, на мой взгляд. –