文档章节

[翻译]RoboGuice使用示例

yolinfeng
 yolinfeng
发布于 2015/06/06 22:09
字数 441
阅读 10
收藏 0

简单示例

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

本文转载自:http://www.cnblogs.com/xiongbo/archive/2011/05/31/2063355.html

yolinfeng
粉丝 12
博文 196
码字总数 11946
作品 0
珠海
架构师
私信 提问
如何成为一个偷懒又高效的Android开发人员

我敢肯定你对这个标题肯定心存疑惑,但事实就是如此,这个标题完全适合Android开发人员。据我所知, Android程序员不情愿写 findViewById()、点击事件监听等重复率较高的代码。那我们如何才能...

拉偶有所依
2015/02/06
116
0
使用RoboGuice @InjectFrament 时报错

我在Activity里面使用RoboGuice的@InjectFragment来初始化我自定义的Fragment,但运行出错了,代码如下: public class CrimeActivity extends RoboFragmentActivity { private static final......

张源兆
2014/08/31
690
1
android 的Guice RoboGuice

今天看一个是实现模糊图片的项目StackBlur的时候,看到类似依赖注入的写法,觉得有点好奇,翻开osc,果然有,原来叫RoboGuice,于是乎我去把几个包下下来试试了 其实很简单,把guice-3.0-no_...

铂金小狼
2013/09/23
547
0
xUtils是否支持类似于RoboGuice框架中配置依赖关系的功能?

最近才接触一些开源框架。感觉RoboGuice框架配置依赖关系的能力十分强大,当然还没有具体使用,只是从理论上感觉以这种方式解除依赖之后的代码能够更好的进行单元测试和自动化测试。今天了解...

桃园小七
2014/06/04
207
0
依赖注入

1.依赖 如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。例如下面类 Human 中用到一个 Father 对象,我们就说类 Human 对类 Father 有一个依赖。 仔细看这段代码...

壮壮521
2015/06/16
5
0

没有更多内容

加载失败,请刷新页面

加载更多

32位与64位Linux系统下各类型长度对比

64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂);可以访问大型数据库。本文介绍的是64位下C语言开发程序注意事项。 1. 32 位和 64 位C数据类型...

mskk
16分钟前
4
0
Vue 实现点击空白处隐藏某节点(三种方式:指令、普通、遮罩)

在项目中往往会有这样的需求: 弹出框(或Popover)在 show 后,点击空白处可以将其 hide。 针对此需求,整理了三种实现方式,大家按实际情况选择。 当然,我们做项目肯定会用到 UI 框架,常...

张兴华ZHero
23分钟前
5
0
SpringBoot激活profiles你知道几种方式?

多环境是最常见的配置隔离方式之一,可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景,在SpringBoot内支持了多种配置隔离的方式,可以激活单个或者多个配置文件。 激活Profi...

恒宇少年
24分钟前
6
0
PDF修改文字的方法有哪些?怎么修改PDF文件中的文字

PDF修改文字一直以来都是一个难以解决的问题,很多的办公族在办公的时候会有修改PDF文件中的文字的需要,可是PDF文件一般是不能进行编辑和修改的,难道就没有什么办法解决这个问题了嘛?不要...

趣味办公社
27分钟前
3
0
企业组织中采用服务网格的挑战

作者:Christian Posta 译者:罗广明 原文:https://blog.christianposta.com/challenges-of-adopting-service-mesh-in-enterprise-organizations/ 编者按 本文作者介绍了企业组织采用服务网...

jimmysong
37分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部