Dagger와 ButterKnife Android의 차이점
누구든지 Dagger 와 Butterknife 의 차이점을 지적 할 수 있습니까 ? Butterknife는 뷰 주입 라이브러리이고 Dagger는 종속성 주입 라이브러리라는 것을 알고 있습니다. 그러나 온라인 문서는 나에게 약간의 오버 헤드처럼 보입니다. Butterknife 문서에 따르면 비 활동 주입도 할 수 있는데, Dagger가하는 일은 무엇입니까? 아니면 내가 뭔가를 오해 했나요?
ButterKnife는 뷰 주입만을 대상으로합니다. 비 활동 주입은 단순히 뷰를 주입 할 수있는 자체 뷰 루트를 제공 할 수 있음을 의미합니다 (예 : 수동으로 부풀린 뷰 등). Dagger는 조금 더 복잡합니다. 그것은 당신이 지정한 한 당신이 원하는 것을 주입 할 수 있습니다 Module
-그 종속성을 만족시키는 클래스 (또는 생성자 주입을 사용할 수 있습니다).
결론적으로, ButterKnife는 뷰 생성을위한 모든 표준 코드를 피하는 데 도움이된다고 말할 수 있습니다 (일명 (TextView)findViewById(R.id.some_text_view);
. 더 이상은 없습니다. 내부적으로는 여전히 지루한 코드를 모두 수행합니다. 따라서 실제로 주입이 아닙니다 ..
또한 Jake Wharton이 멋진 libs의 개발자 중 한 명이라는 점도 언급 할 가치가 있습니다. :)
다음은 몇 가지 유용한 링크입니다.
Devoxx에 대한 Dagger 프레젠테이션 (Jake Wharton)
유용한 ButterKnife 링크가 많지 않습니다. 하지만 정말 간단하고 간단합니다.
다음은 Buterknife 문서에 대한 링크입니다. 매우 간단합니다. 그러나 문서에 나와 있지 않지만 Butter Knife의 디자인이 암시하는 것은 사용자 지정 뷰에서도 Butter Knife를 사용할 수 있다는 것입니다. "this"를 "context"또는 "getContext"로 바꾸면 범위를 결정할 수 있습니다.
링크 : http://jakewharton.github.io/butterknife/
내 프로젝트의 목록보기를 위해 Butter Knife, parcelable 및 easyAdapter를 결합합니다. 이유는 상용구가 적고 더 빠르고 깔끔한 택배가 가능하기 때문입니다. 따라서 ListView가 많은 경우이 방법을 권장합니다.
연결:
https://github.com/johncarl81/parceler
https://github.com/ribot/easy-adapter
차이점은 매우 간단합니다. 버터 나이프 는 단검 과 같고 날카롭지 않습니다.
문서에서 지적한대로.
@JakeWharton의 의견에 부분적으로 답변합니다.
TL; DR : 그들은 서로를 보완합니다. 뷰를 삽입하려면 Butterknife를 사용하고 나머지는 Dagger를 사용하십시오.
Dagger를 사용하여 뷰를 삽입하려고하면 매우 나쁜 시간을 보낼 것입니다. :) Butter Knife를 주입이 아닌 바인딩 뷰 수단으로 생각하십시오. 모든 RoboGuice 변환 자들이 Dagger의 "뷰 인젝션"부족에 대해 불평했기 때문에 나는 그것을 인젝션이라고 불렀습니다. 실제로 주사가 아닙니다. 답변에서 언급했듯이, 그것은 단지 상용구를 줄이는 방법 일뿐입니다. 후드 아래에서 원하는 것처럼 findViewById를 호출하고 있습니다!
ButterKnife는 클릭 리스너 등록을 단순화하고 findViewById()
호출에서 제공하는 상용구를 줄이기 위해 만들어졌습니다 .
Dagger 및 Dagger2는 범용 종속성 주입 시스템입니다.
Guice 및 MVVM의 텍스트를 무시하고 Dependency Injection
및 The Android Way
. 이것은 Dagger가 수행하고 단순화하려는 의미에 거의 대답합니다.
https://spring.io/blog/2011/08/26/clean-code-in-android-applications
참고 URL : https://stackoverflow.com/questions/20821148/difference-between-dagger-and-butterknife-android
'Development Tip' 카테고리의 다른 글
"Hello, World!"는 무엇입니까? (0) | 2020.11.21 |
---|---|
속성 라우팅 및 상속 (0) | 2020.11.21 |
명부 (0) | 2020.11.21 |
Xcode 7의 기존 프로젝트에 단위 및 UI 테스트 추가 (0) | 2020.11.21 |
java.util.ArrayList에 해당하는 Scala (0) | 2020.11.20 |