Android代码注入框架RoboGuice

Android代码注入框架RoboGuice

概述

RoboGuice 2可以让我们更方便、快捷地编写android代码。在写android代码时,我们在使用getIntent().getExtras()可能会忘记判空,findViewById()必须强制转换成TextView很别扭?RobotGuice 2可以帮我们省掉这些步骤。

RoboGuice 2可以注入到View,Resource,System Service或者其他任何对象中,我们不必在关心这些细节。

使用RoboGuice 2可以精简我们的代码,这样会减少bug数量,也使程序更加易读。在编码中,我们可以把精力更多地放在业务逻辑上。

使用方法

RobotGuice使用google自己的Guice,让安卓支持依赖注入,类似于Spring。

传统的android代码如下:

    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()方法,得略过上面的变量初始化区域,其实onCreate方法就一样代码name.setText(),代码看起来很臃肿。

下面是使用RoboGuice的代码:

    @ContentView(R.layout.main)
    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); 
            name.setText( "Hello, " + myName ); 
        } 
    } 

这个例子中,onCreate()方法就简洁多了,所有初始化代码都被移除,只剩下我们的业务逻辑代码。需要SystemServce?注入即可。需要View或者Resource?注入即可,RoboGuice会帮我们实现那些细节。

RoboGuice的目标是让我们的代码真正关乎于app,而不是维护着一堆堆的初始化、生命周期控制代码等。

更多信息https://github.com/roboguice/roboguice/tree/master/astroboy)

版权声明

本站文章、图片、视频等(除转载外),均采用知识共享署名 4.0 国际许可协议(CC BY-NC-SA 4.0),转载请注明出处、非商业性使用、并且以相同协议共享。

© 空空博客,本文链接:https://www.yeetrack.com/?p=982