Google Guice on Android(RoboGuice)

今天介绍一下Google的这个开源框架RoboGuice, 它的作用跟之前讲过的Dagger框架差点儿是一样的,仅仅是Dagger比它的功能更强大一些。

Dagger通过专注于一种简化的功能集以一种不同的方式达到了更好的性能。有人觉得RoboGuice节约了大量的时间。较少的代码意味着较少的错误。较少的样板代码意味着能够把很多其它的时间放到应用的核心逻辑上。所以这就是为什么我们要使用这些开源框架来开发的原因。

     以下我们来说说RoboGuice的使用:
  • Views Injection: 我们要想取得一个xml文件里的某个控件对象时,不再採用findViewById(R.id...)这样的方式了,而是用@InjectViews注解来实现, 如: @InjectView(R.id.textView1) TextView textView1; //这样我们就得到了这个TextView对象实体                                                                 
  • Resources Injection: 相同也提供了资源的注入方式,也不再是传统的getResources().getDrawable(R.id.ic_launcher)这样的方式, 而是用 @InjectResources注解来做, 如: @InjectResource(R.id.ic_launcher) Drawable icLauncher;                                                                          
  • System services Injection: 获取一些系统级服务对象, 不会再沿用原来的
    locManager = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);的方法了,而是运用@Inject注解来实现,如:
    @Inject LocationManager locManager;
  • POJO object Injection: 注入一个简单JAVA对象(POJO)也是用注解@Inject, 如: @Inject Student student;

  • 事实上非常多人都觉得RoboGuice的效率非常低,所以事实上非常少人愿意用这个,而很多其它人倾向于用AA (Android Annotation)。
    当然RoboGuice中另一些其它的注解:
    如:
    @ContentView(R.layout.layout_main) 取代 setContentView(R.layout.layout_main);
    @ContextSingleton 来设计一个单例的类。(在dagger中事实上都有)
    假设网友有兴趣。再去深入研究它的Java Doc(http://www.imobilebbs.com/download/android/roboguice/javadoc/)

    Butter Knife

    这个框架跟RoboGuice框架的用法机会一样。顺带略微记录一下。
    样例:
    class ExampleActivity extends Activity {
    @InjectView(R.id.user) EditText username;
    @InjectView(R.id.pass) EditText password; @OnClick(R.id.submit) void submit() {
    // TODO call server...
    } @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.inject(this);
    // TODO Use "injected" views...
    }
    }

    Gradle中的配置:
    compile 'com.jakewharton:butterknife:5.1.1'

    Android RoboGuice开源框架、Butter Knife开源框架浅析的更多相关文章

    1. [轉]Android Libraries 介紹 - Butter knife

      原文地址 Butter Knife 簡介 Butter Knife - Field and method binding for Android views.助你簡化程式碼,方便閱讀. 使用方法 開發 ...

    2. Android图片加载与缓存开源框架:Android Glide

      <Android图片加载与缓存开源框架:Android Glide> Android Glide是一个开源的图片加载和缓存处理的第三方框架.和Android的Picasso库类似,个人感觉 ...

    3. android值得珍藏的6个开源框架技术

      1.volley  项目地址 https://github.com/smanikandan14/Volley-demo JSON,图像等的异步下载: 网络请求的排序(scheduling) 网络请求的 ...

    4. 几款开源的hybird移动app框架分析

      几款开源的Hybrid移动app框架分析 Ionic Onsen UI 与 ionic 相比 jQuery Mobile Mobile Angular UI 结论 很多移动开发者喜欢使用原生代码开发, ...

    5. 开源战棋 SLG 游戏框架设计思考(一)简介和游戏引擎

      战棋 SLG 游戏 SLG(Simulation Game)游戏是模拟游戏的简称.战棋类的SLG有两种:一种是 War Game 中的兵棋推演分支,常见的游戏有战争艺术3(TOAW3 — The Op ...

    6. Butter Knife:一个安卓视图注入框架

      Butter Knife:一个安卓视图注入框架 2014年5月8日 星期四 14:52 官网: http://jakewharton.github.io/butterknife/ GitHub地址: ...

    7. 《Andorid开源》greenDao 数据库orm框架

         一 前言:以前没用框架写Andorid的Sqlite的时候就是用SQLiteDatabase ,SQLiteOpenHelper ,SQL语句等一些东西,特别在写SQL语句来进行 数据库操作的时 ...

    8. THINKPHP框架的优秀开源系统推荐

      THINKPHP框架的优秀开源系统推荐 众所周知,国内众多优秀的开源框架,ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性.并且拥有众多的原创功能 ...

    9. .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目

      系列目录     [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...

    随机推荐

    1. SHELL函数处理

      SHELL函数调用分为两种: 第一种方式,有点像C语言调用函数的风格,直接把函数的执行结果复制给变量!不过,这个赋值过程和C语言的函数赋值是不一样的! C语言中,函数调用,是将函数的返回值返回给被调函 ...

    2. tornado url配置

      Note tornado是支持虚拟主机的,在同一端口上根据域名区分app http://www.tornadoweb.org/en/stable/web.html#application-config ...

    3. python object对象

      动态语言的对象属性 既然都是动态语言,自然python和熟知的JavaScript很像,建一个空对象用来存放所有的数据,看看js: var data = {}; data.name = 'CooMar ...

    4. 解决 nfs挂载错误wrong fs type, bad option, bad superblock

      yum install nfs-utils mount -t nfs 192.168.1.153:/taimei /taimei

    5. Android学习笔记六:六大布局

      六大界面布局方式包括: 线性布局(LinearLayout).帧布局(FrameLayout).表格布局(TableLayout).相对布局(RelativeLayout).绝对布局(Absolute ...

    6. C/C++中extern关键字详解(转)

      1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

    7. SpringBoot之配置google kaptcha

      项目中引入POM: <dependency> <groupId>com.google.code.kaptcha</groupId> <artifactId&g ...

    8. MSVC下使用Boost的自动链接

      简述 好久没有用过boost库了,以前用也是在linux下,需要哪个部分就添加哪个部分到Makefile中. 最近要在Windows下使用,主要是mongocxx库依赖它,不想自己去编译它了,就直接在 ...

    9. Jenkins部署Web项目到远程tomcat(通过jenkins插件)

      之前讲到的是如何构建一个项目,并且将代码进行编译.打包,那么打包完成最后的结果就需要发布到应用服务器,将项目部署成功.在之前的项目中我们采用的shell脚本来部署,下面讲解通过Jenkins部署web ...

    10. ios中Pldatabase的用法(2)

      @implementation AppGlobal static NSString* strHostName; static NSString* strVersion; static PLSqlite ...