使用 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 会自动为您进行样板初始化。