Intereting Posts
SharedPreferences не будет сохранять / загружать в PreferenceActivity Рябь на форме с прозрачным фоном Фрагменты в фрагментах вкладки «Панель действий»? Щелчок по элементу программно в RecyclerView <Uses-permission android: name = "android.permission.SEND_SMS" /> PopupWindow над виртуальной клавиатурой Java.lang.RuntimeException: Невозможно создать экземпляр активности ComponentInfo / ClassNotFoundException Обработка баз данных перестала работать на Android 2.2.1 (Desire HD 1.72.405.3) Каковы случаи, когда я НЕ должен использовать FragmentManager's executePendingTransactions () (в основном потоке)? Java.lang.RuntimeException: Не удалось прочитать дескрипторы файла входного канала из посылки Просмотр в ScrollView не соответствует родительскому элементу Как я могу вызвать действие com.google.android.gms.actions.SEARCH_ACTION Google Now для тестирования? Android: Как получить идентификатор родительского представления? Привязка данных android с использованием логического оператора «&&» Добавление фрагментов в макет

Разница между кинжалом и ButterKnife Android

Может ли кто-нибудь указать на разницу между кинжалом и бабочкой? Я знаю, что Butterknife представляет собой библиотеку инъекций для просмотра, а кинжал – библиотека инъекций зависимости. Но документация в Интернете кажется немного накладными для меня. Согласно документации Butterknife, вы также можете делать инъекции без активности, что и делает кинжал? Или я что-то не понял?

http://square.github.io/dagger/

http://jakewharton.github.io/butterknife/

Solutions Collecting From Web of "Разница между кинжалом и ButterKnife Android"

ButterKnife предназначен только для введения взглядов. Неинъекционная инъекция просто означает, что вы можете предоставить свой собственный корень вида для ввода представлений (например, с помощью раздутых вручную видов и т. Д.). Кинжал немного сложнее. Он может вводить все, что угодно, если вы указали Module class, который удовлетворяет этим зависимостям (в качестве альтернативы вы можете использовать инъекцию конструктора).

В качестве нижней строки – я бы сказал, что ButterKnife помогает вам избежать всего этого шаблона кода для создания представлений (aka (TextView)findViewById(R.id.some_text_view); . Ничего больше. Под капотом он все еще выполняет весь этот скучный код. Это не настоящая инъекция.

Также стоит упомянуть, что Джейк Уортон является одним из разработчиков как для этих классных библиотек 🙂

Вот несколько полезных ссылок:

Проект образца кинжала на GitHub

Представление кинжала на Devoxx (Джейк Уортон)

Видеовстречи с кинжалом с помощью Dagger

Не так много полезных ссылок ButterKnife. Это действительно просто и прямо вперед, хотя, надеюсь, вам не нужны никакие

Вот ссылка на документацию Buterknife. Это очень просто. Однако, что документация не говорит, но дизайн Butter Knife подразумевает, что вы также можете использовать Butter Knife в пользовательских представлениях. Просто замените «this» на «context» или «getContext», чтобы определить область действия.

Ссылка: http://jakewharton.github.io/butterknife/

Я совмещаю Butter Knife, parcelable и easyAdapter для просмотра списка в моем проекте. Причина менее условная и с более быстрым и чистым пакетированием. Поэтому, если у вас много ListViews, я рекомендую этот подход.

Ссылки:

https://github.com/johncarl81/parceler

https://github.com/ribot/easy-adapter

Разница довольно проста: масляный нож похож на кинжал, только бесконечно менее резкий.
Как указано в документации.

@ JakeWharton отвечает на него частично в комментарии:

TL; DR: Они дополняют друг друга. Используйте Butterknife для инъекций видов, Кинжал для остальных.

Если вы используете Кинжал, чтобы попытаться ввести представления, у вас будет очень плохое время. Попытайтесь вспомнить Butter Knife как средство привязки взглядов, а не инъекции. Я только назвал это инъекцией, потому что все новообращенные RoboGuice жаловались на отсутствие «инъекции зрения» с Кинжалом. На самом деле это не инъекция. Как упоминается в ответах, это всего лишь способ уменьшить шаблон. Под капотом это просто вызов findViewById, как и вы!

ButterKnife был сделан, чтобы упростить регистрацию прослушивателей кликов и уменьшить шаблон, предоставленный вызовами findViewById() .

Кинжал и кинжал2 – системы впрыскивания общего назначения.

Игнорируйте текст в Guice и MVVM и прочитайте « Dependency Injection и The Android Way . Это в значительной степени отвечает тому, что Кинжал должен делать и упрощать.

https://spring.io/blog/2011/08/26/clean-code-in-android-applications