1、Robo guice的介绍
RoboGuice 使得进行Android开发更加方便,使得开发变得更加简单也更有乐趣。当你调用getIntent().getExtras()是不是经常检查是否为null?RoboGuice可以帮助你。想想调用findViewById()并映射到TextView确实有必要么?RoboGuice也可以帮你。
RoboGuice 可以帮助解决这类的判断工作。你再也不用记住,是通过调用bindService获取一个用户service,调用getSystemService获取一个系统service。注入你的view、service、或者其他对象,然后让RoboGuice来处理剩下的事宜。
RoboGuice 精简了你的应用代码。更少的代码意味着bug也会更少。也使得阅读代码更加容易,不在纠缠于Android平台的各种特性,而是关注于应用实际的业务逻辑。
没什么很难的,你所需要做的仅仅是配置RoboGuice。
http://code.google.com/p/roboguice/
2、简单示例说明
RoboGuice 使用谷歌自己的Guice库,给Android带来了简单和易用的依赖注入。如果你使用过Spring或Guice的话,你可能已经知道这种编程方式是多么的便捷。
为了给大家一个直观的映像,下面我们来一起来看看一个典型的示例:
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 的目的是让你的代码关注于应用,而不是初始化、维护生命周期等工作。
访问 Installation 页面刻意看到更多的配置RoboGuice应用的细节。
补充示例
如果你还想看看 RoboGuice 可以实现哪些功能,可以去访问 Astroboy example 的示例目录
http://code.google.com/p/roboguice/wiki/SimpleExample
3、下载导入工程
- 下载 RoboGuice 和 guice-2.0-no_aop.jar (not guice-3.0).
- 创建一个Android项目, 使用1.5以上的平台版本(api lever 3 和 SDK version 3 以上)3.
- 给Android项目增加两个jar
- Eclipse : Project > Properties > Java Build Path > Libraries > Add External JARs
- IntelliJ: File -> Project Structure -> Modules ->Your App -> Dependencies -> Add -> Single Entry Module...
4、第一个RoboGuice应用!
创建一个新类 继承 RoboApplication,暂且叫其MyApplication。
在AndroidManifest.xml中修改应用的android:name属性设置新建的Application。例如:
<application android:name="com.mycompany.myproject.MyApplication" ... >
创建一个配置模块类继承AbstractAndroidModule(我们暂且叫其MyModule)。实现configure()方法来添加绑定。访问configuring Modules 可以看到更多有关Google Guice的内容。
覆盖自定义Application中的RoboApplication.addApplicationModules(List<Module>)方法,并添加自定义Module示例到list中。例如:
public class MyApplication extends RoboApplication { protected void addApplicationModules(List<Module> modules) { modules.add(new MyModule()); } }
通过继承RoboActivity新建你自己的Activity。
你已经开始使用RoboGuice,如果想看更多的示例,可以访问 example 。
http://code.google.com/p/roboguice/wiki/Installation
说明下:这些都是官网的翻译,有些地方已经不能用了,roboguice2.0没有RoboApplication类了,直接继承Application就行了,而且必须自定义MyApplication才能用哦,这个是我在实际操作中遇到的问题,感觉这个框架还是挺好的,提高了编码的效率和减少bug的几率,代码也比较整齐好看,嘿嘿,不错!
转载自:http://www.cnblogs.com/xiongbo/archive/2011/05/30/2063350.html