支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索

博主:初学MPEG

初学MPEG 本博客-采用Python的web框架Django与Mysql数据库,致力于对Python、Django的了解 与研究
Django技术QQ群:XXXXXXX
Python技术QQ群:XXXXXXX

分类

关键字

本站最新博文

友情链接  

[转]Android RoboGuice 1.1 使用指南(1):概述

类别:Android 状态:游客可见,可回,会员可关联(没审核) 阅读:3816 评论:0 时间:五月 11, 2014, 10:18 a.m.
关键字:Android RoboGuice

 来源:http://www.imobilebbs.com/wordpress/archives/2480

在开发应用时一个基本原则是模块化,并且近最大可能性地降低模块之间的耦合性。在Java平台上Spring Framework 以及.Net 平台 CAB ,SCSF 和Prism (WPF,Silverlight)中都有对Dependency injection的支持。

Dependency injection 大大降低了类之间的依赖性,可以通过annotation (Java)或是SeviceDepdendcy (.Net) 描述类之间的依赖性,避免了直接调用类似的构造函数或是使用Factory来参加所需的类,从而降低类或模块之间的耦合性,以提高代码重用并增强代码的可维护性。

Google Guice提供了Java平台上一个轻量级的 Dependency injection 框架,并可以支持开发Android应用。本指南将使用Android平台来说明Google Guice的用法。

简单的来说:Guice 降低了Java代码中使用 new 和 Factory函数的调用。可以把Guice 的@Inject 看作 new 的一个替代品。使用Guice可能还需要写一些Factory方法,但你的代码不会依赖这些Factory方法来创建实例。 使用Guice 修改代码,单元测试已经代码重用变得更容易。

RoboGuice 为Android平台上基于Google Guice开发的一个库,可以大大简化Android应用开发的代码和一些繁琐重复的代码。比如代码中可能需要大量使用findViewById在XML中查找一个View,并将其强制转换到所需类型,onCreate 中可能有大量的类似代码。RoboGuice 允许使用annotation 的方式来描述id于View之间的关系,其余的工作由roboGuice库来完成。比如:

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)
        }

}

如果使用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);
    }
}

只需使用@InjectView 来描述 view 和Id之间的关系,RoboGuice 自动完成余下的工作,代码简洁易读。在介绍完Google Guice ,再接着介绍RoboGuice 在Android平台上使用方法。

操作:

Please Login (or Sign Up) to leave a comment