[置顶] Android中的DI(依赖注入)框架--RoboGuice
16lz
2021-01-26
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很像,因此拿来跟大家分享,有兴趣的朋友可以跟我交流)
更多相关文章
- Android(安卓)contentResolver 进行query 条件为where in时出错
- 使用Kotlin Android(安卓)Extensions
- Android核心程序之SystemUI - (一)开篇
- Android(安卓)MVP模式 谷歌官方代码解读
- 第一个android 程序的学习心得
- Android(安卓)代码中设置EditText只输入数字、字母
- Android(安卓)依赖注入:Dagger 实例讲解(Demo下载)
- xe5 android 调用照相机获取拍的照片
- 类似Lazy Android的插件,根据layout的xml文件自动生成findViewByI