Android RoboGuice開源框架、Butter Knife開源框架淺析
阿新 • • 發佈:2019-01-11
Google Guice on Android(RoboGuice)
今天介紹一下Google的這個開源框架RoboGuice, 它的作用跟之前講過的Dagger框架幾乎是一樣的,只是Dagger比它的功能更強大一些。Dagger通過專注於一種簡化的功能集以一種不同的方式達到了更好的效能。有人認為RoboGuice節約了大量的時間。較少的程式碼意味著較少的錯誤,較少的樣板程式碼意味著可以把更多的時間放到應用的核心邏輯上。所以這就是為什麼我們要使用這些開源框架來開發的原因。 下面我們來說說RoboGuice的使用:Views Injection:
locManager = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);的方法了,而是運用@Inject註解來實現,如:
@Inject
LocationManager locManager;
POJO object Injection: 注入一個簡單JAVA物件(POJO)也是用註解@Inject, 如: @Inject Student student;
事實上很多人都認為RoboGuice的效率很低,所以其實很少人願意用這個,而更多人傾向於用AA (Android Annotation)。
當然RoboGuice中還有一些其他的註解: 如: @ContentView(R.layout.layout_main) 代替 setContentView(R.layout.layout_main); @ContextSingleton 來設計一個單例的類。(在dagger中其實都有) 如果網友有興趣,再去深入研究它的Java Doc(http://www.imobilebbs.com/download/android/roboguice/javadoc/)
Butter Knife
這個框架跟RoboGuice框架的使用方法機會一樣,順帶稍微記錄一下。 例子:class ExampleActivity extends Activity { @InjectView(R.id.user) EditText username; @InjectView(R.id.pass) EditText password; @OnClick(R.id.submit) void submit() { // TODO call server... } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.inject(this); // TODO Use "injected" views... } }
Gradle中的配置:
compile 'com.jakewharton:butterknife:5.1.1'