AndroidAnnnotations注入架構使用之第三方框架組成RoboGuice(十三)
(一).前言:
前面我們已經對於AndroidAnnotations架構的線程處理做了講解,今天我們開始具體學習一下第三方框架組成。
(二).RoboGuice整合
2.1.簡介說明
自AndroidAnnotations1.0起,AndroidAnnotations已經完成整合了RoboGuice1.1.1。
自AndroidAnnotations3.1起,發布的RoboGuice1.0版本已經從RoboGuice2.0版本中移除了。
自AndroidAnnotations3.3起,從發布的RoboGuice3.0版本開始,該更新已經被支援。現在RoboGuice的最新版本是3.0。
2.2.整合RoboGuice和AndroidAnnotations
- 整合AndroidAnnotations架構到項目中(具體方法見:【FastDev4Android架構開發】AndroidAnnnotations注入架構介紹和Android Studios基本配置(七)
- 整合RoboGuice架構到項目中(具體方法見:RoboGuice使用詳解)
- 修改我們的Activity,現在不需要該Activity繼承RoboActivity了,只要對該Activity使用@RoboGuice註解即可。(原來使用RoboGuice是需要Activity繼承RoboActivity的)。
- 現在讓我們來看一下使用的例子
@EActivity(R.layout.main)@RoboGuice({AstroListener.class,AnotherListener.class})public classAstroGirl extends Activity { @ViewById EditText edit; @Inject GreetingService greetingService; @Click void button() { String name =edit.getText().toString(); greetingService.greet(name); }} public classAstroListener { @Inject Context context; public voiddoSomethingOnResume(@Observes OnResumeEvent onResume) { Toast.makeText(context,Activity has been resumed, Toast.LENGTH_LONG).show(); }}2.3.RoboGuice優點
RoboGuice對於Android應用程式有GoogleGuice架構的支援,這意味著我們可以從依賴注入獲得更加的優勢,高內聚,低耦合。
2.4.AndroidAnnotations優點
- 在Android編譯的時候進行注入組件(沒有效能的影響)
- 我們不需要在繼承RoboActivity類了,這意味中我們可以整合任何類了,哪怕這些類不支援RoboGuice。這樣我們就可以更多思考如何擴充我們的基類。
- 支援@Click,@Background,@UiThread,@ItemSelect等等註解。
2.5.@EBean中使用RoboGuice
自AndroidAnnotations2.4起
假設我們現在有一個@EBean註解的組件,現在我們想用RoboGuice來注入一些組件。使用@EActivity註解的Activity允許使用RoboGuice注入。不過現在RoboGuice現在僅支援Activity。從AndroidAnnotations官方發布的訊息是:現在他們沒有花很多精力在RoboGuice上面,因為如果要全面支援RoboGuice,那麼現在項目需要改動很多地方了。
但是這也不意味著我們不能在@EBean註解的類中使用RoboGuice,你只需要手動進行Guice注入,就和RoboActivity達到一樣的效果啦。使用執行個體如下:
@EBeanpublic class MyBean{ @App MyRoboApplication application; @Inject SomeClass myRoboGuiceDependency; @AfterInject void injectRoboGuiceDependencies() { application.getInjector().injectMembers(this); } }
到此位置關於AndroidAnnotations第三方框架組成之RoboGuice整合已經全部講解完成了。