跳至正文

使用 RoboGuice 更轻松地进行 Android 开发

使用 RoboGuice 更轻松地进行 Android 开发

RoboGuice 是一个必备的框架,它为 Android 带来了依赖注入的简单性和易用性Guice是一个用于 Java 平台的轻量级依赖注入框架。依赖注入是一种设计模式,其核心原则是将行为与依赖解析分开

它允许删除“硬编码”依赖项,并可以在编译或运行时更改它们。这使您的代码更易于编写、更改、单元测试在其他上下文中重用您的代码不再是样板代码,而是更多的业务逻辑。

使用 RoboGuice,您可以将所有这些带到 Android。RoboGuice 允许您使用自己的基类以及您自己的基本方法或功能。这使得 RoboGuice与大多数库兼容,并允许您通过各种注入(如视图注入、资源注入、系统服务注入等)剥离几乎所有平台样板。

简单来说,在您的 Android 项目中使用 RoboGuice 意味着编写更少的代码、处理更少的错误以及更少的头痛

如何安装 RoboGuice

通过将以下行添加到应用程序模块的 gradle 构建文件的“依赖项”部分,可以轻松地将 RoboGuice 安装在基于 Gradle 的项目中:

1
2
3
4
project.dependencies {
     compile 'org.roboguice:roboguice:3.+'
     provided 'org.roboguice:roboblender:3.+'
 }

如何使用机器人向导

如果您遵循以下基本规则,RoboGuice 很容易使用:

1.从适当的 RoboGuice 基类(如 RoboActivity、RoboFragment、RoboService、RoboListActivity、RoboActionBarActivity 等)扩展您的类。

2.使用 RoboGuice 提供的不同注解注入视图、资源或服务,如“ @InjectView ”、“@InjectResource ”、“@Inject ”等。

就是这样。很简单,不是吗?如果您熟悉Java Annotations,您会感觉更自在。

没有 RoboGuice 与 RoboGuice

让我们通过这个小例子来比较一下 RoboGuice 如何减轻您的工作量并提高您的工作效率。假设我们有一个“activity_main.xml”布局文件,其中包含下面列出的所有视图。

注意:添加注释是为了提高代码的可理解性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class NoRoboGuice extends Activity {
  // views
  TextView name;
  ImageView thumbnail;
   
  // services
  LocationManager loc;
   
  // resources
  Drawable icon;
  String myName;
 
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     
    setContentView(R.layout.activity_main); // sets the layout
     
    name      = (TextView) findViewById(R.id.name); // boilerplate initialization
    thumbnail = (ImageView) findViewById(R.id.thumbnail);  // boilerplate initialization
     
    loc       = (LocationManager) getSystemService(Activity.LOCATION_SERVICE); // boilerplate initialization
     
    icon      = getResources().getDrawable(R.drawable.icon); // boilerplate initialization
    myName    = getString(R.string.app_name); // boilerplate initialization
     
    name.setText( "Hello, " + myName ); // actual code
  }
}

这是 RoboGuice 的样子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@ContentView(R.layout.activity_main) // sets the layout
class RoboGuice extends RoboActivity {
  // views
  @InjectView(R.id.name)             TextView name;
  @InjectView(R.id.thumbnail)        ImageView thumbnail;
   
  // resources
  @InjectResource(R.drawable.icon)   Drawable icon;
  @InjectResource(R.string.app_name) String myName;
   
  // services
  @Inject                            LocationManager loc;
 
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     
    name.setText( "Hello, " + myName ); // actual code
  }
}

RoboGuice不仅减少了代码,而且有助于提高源代码的可读性和可理解性。它消除了应用程序开发中的猜测,您的应用程序代码不再充斥着 Android 平台的机制。

这一优势在调试或更新应用程序非常有帮助,因为您可以轻松阅读和更改源代码。您不再需要在样板初始化代码之间搜索实际代码,因为现在只存在实际代码,而 RoboGuice 会自动为您进行样板初始化。

标签: