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. iOS 获取已安装 的APP

      -(void)getAppPlist { Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace ...

    2. vmware产品框架-计算中心,5.1更新等

      概述:SRM,5.1新特性,vCenter Operations的介绍等 5.1改进参见:http://wenku.baidu.com/view/26530362a98271fe910ef961.ht ...

    3. JSP与Servlet之间的关系事例说明

      Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器.Servlet 运行在 Servlet 容器中, ...

    4. JAVA正确的四舍五入方法

      在JDK版本为1.8的情况运行下面的代码,会发现很神奇的情况(见运行结果). 看如下代码: package com.longge.mytest; import java.math.BigDecimal ...

    5. JAVA8 Lambda初体验

      import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.u ...

    6. mysql可视化工具

      比较mysql manager lite 和phpmyadmin: 1.phpmyadmin有中文界面, 可以快速入门,但友好性远没有SQL Manager Lite强大 2.SQL Manager ...

    7. linux 上配置tomcat、mysql 开机启动

      1.tomcat 开机启动 方法一.修改系统文件 (已经尝试,可以) 1.修改/etc/rc.d/rc.local vi /etc/rc.d/rc.local 2.添加下面两行脚本,记住是两行,仅仅第 ...

    8. Inno Setup入门(八)——有选择性的安装文件

      这主要使用[Components]段实现,一个演示的代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName=" ...

    9. 转:TCP/IP协议栈的基本工作原理

      转载自:http://jasonccie.blog.51cto.com/2143955/422966 TCP/IP是互联网的核心协议,也是大多数网络应用的核心协议.就前面一段时间面试中问到的TCP/I ...

    10. Qt5中表格处理大数据量

      在Qt中如果是普通项目,GUI处理展现的数据量不大,一般用QTableWidget,QTreeWidget这样的控件就满足了,但是如果数据量行数达到了几万行,那么Widget的展示性能就偏差了. Qt ...