RoboGuice使用

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、下载导入工程

  1. 下载 RoboGuice guice-2.0-no_aop.jar (not guice-3.0).
  2. 创建一个Android项目, 使用1.5以上的平台版本(api lever 3 和 SDK version 3 以上)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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章