В Android; лучше ли использовать OnClickListener или использовать андроид: onClick?
Будет ли производительность работать лучше с помощью onClick? Если я использую onClick, то я не должен установить android: id (также избегать нового View.OnClickListener), вообще ли это улучшает производительность? Или это тот же эффект, что и findViewById за кулисами?
Эта страница предоставляет оба метода в качестве опции, но мало рекомендаций для любого преимущества.
http://developer.android.com/reference/android/widget/Button.html
Вот сообщение в блоге, где они считают onClick "более легким" и "улучшенным" для приложений после 1.6;
http://android-developers.blogspot.com/2009/10/ui-framework-changes-in-android-16.html
Эта новая функция уменьшает количества Java и XML, которые вы должны напишите, оставив вам больше времени на сосредоточьтесь на своем приложении.
Ответы
Ответ 1
Я считаю, что включение android:onClick
было очень плохой идеей.
- Вы связываете презентацию с логикой
- Если вы не используете плагин, который его поддерживает, вам нужно будет запомнить рефакторинг XML файла, если вы решите изменить имя метода
- Просто не выясняется связь между кнопкой в вашем xml и методом в вашей активности, который реагирует на события кликов, если вы явно не видите это в вашем файле Java. С помощью подхода
android:onClick
вы даже можете забыть, что у вас есть кнопка в макете или метод, обрабатывающий его событие onClick
.
Я бы посоветовал вам придерживаться определения OnClickListener
программным путем и держать строгое разделение проблем, как указал Кори Санволд в своем комментарии.
Ответ 2
Вместо этого вы можете использовать onTouchListener. Я нашел, что это быстрее, особенно если вы хотите, чтобы действие произошло при нажатии, а не в выпуске.
Ответ 3
Я пытаюсь подумать о том, как проверить это. Но я считаю, что между ними нет разницы в производительности, они просто разные интерфейсы для одного и того же.
Ответ 4
Я использую android:onClick
, когда мне просто нужно, чтобы мой Button
можно было щелкнуть.
Если мне нужно сделать что-то еще в Button
, например включить/отключить его, я бы использовал setOnClickListener()
, как сказал mgv.
Также помните, что android:onClick
не работает в Android 1.5.