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






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