RoboGuice是应用于Android开发中的DI(依赖注入)框架,基于Google 自己的Guice库.如果你曾接触过Spring框架(Java开发中三大框架之一,现在甚至比J2EE都流行)或Guice框架,你就应该知道这种开发模式的便捷之处了。


先来看一下典型Android中的Activity代码:

class AndroidWay extends Activity {       TextView name;       ImageView thumbnail;       LocationManager loc;       Drawable icon;       String myName;       public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);          name      = (TextView) findViewById(R.id.name);           thumbnail = (ImageView) findViewById(R.id.thumbnail);           loc       = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);           icon      = getResources().getDrawable(R.drawable.icon);           myName    = getString(R.string.app_name);           name.setText( "Hello, " + myName );       }   } 

这段代码共19行。如果你从onCreate读起的话,你会发现超过5行的代码是在进行死板无脑的初始化,然后才能看到这唯一一行有意义的代码name.setText().而且越是复杂的Activity,这种冗余的初始化代码越多。

下面再来看一下使用RoboGuice实现同样功能的代码吧:

class RoboWay extends RoboActivity {       @InjectView(R.id.name)             TextView name;       @InjectView(R.id.thumbnail)        ImageView thumbnail;       @InjectResource(R.drawable.icon)   Drawable icon;       @InjectResource(R.string.app_name) String myName;       @Inject                            LocationManager loc;       public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);          name.setText( "Hello, " + myName );       }   } 
在这个例子中,onCreate()方法一览无余,所有模板式的初始化被分离开,只留下程序中真正的逻辑模块。你需要一个系统服务么?注入一个。你需要一个View或者Resource么?也注入一个。RoboGuice 帮你实现这些细节。

RoboGuice 的目的就是让你的代码更关注于应用,而不是初始化、维护生命周期等工作。

文档的简单介绍当然是不足够满足大家的,只是对RoboGuice有了浅浅的了解,学习更多,可以看它所提供的例子,项目源码here

(前段时间经同事推荐接触了Afinal,才对Android开发的依赖注入有了一定了解,因此准备学习一下,后又发现actionbarSherlock包中的AstroboyMasterConsole使用的roboguice库和afinal中的DI很像,因此拿来跟大家分享,有兴趣的朋友可以跟我交流)


更多相关文章

  1. Android(安卓)contentResolver 进行query 条件为where in时出错
  2. 使用Kotlin Android(安卓)Extensions
  3. Android核心程序之SystemUI - (一)开篇
  4. Android(安卓)MVP模式 谷歌官方代码解读
  5. 第一个android 程序的学习心得
  6. Android(安卓)代码中设置EditText只输入数字、字母
  7. Android(安卓)依赖注入:Dagger 实例讲解(Demo下载)
  8. xe5 android 调用照相机获取拍的照片
  9. 类似Lazy Android的插件,根据layout的xml文件自动生成findViewByI

随机推荐

  1. Android实用工具类-GrallyAndPhotoUtils
  2. Android异常捕获篇(下)---retrofit实现文件
  3. Android(安卓)Studio精彩案例(三)《模仿
  4. Android实用视图动画及工具系列之三:表情
  5. 摩托罗拉咬定Android不放松2011-01-17 14
  6. 轻听变色之谜-如何改变Android应用的主题
  7. 【设计模式与Android】迭代器模式——容
  8. Android(安卓)App驱动Arduino通过蓝牙控
  9. android中常见的内存溢出和解决办法
  10. [置顶] android下调试声卡驱动之wm8960介