[better practice系列]Android中自定义全局变量、常量并采用高效的维护管理(一)
来源:互联网 发布:海量数据存储 与读取 编辑:程序博客网 时间:2024/05/21 16:16
这个系列是better practice,没有胆量叫best practice。再实现一些事情的时候,我们总会有很多方法,但并不见得是多好的方法,这个系列就是整理一些我在Android应用编程中遇到的或者想到的比较好的实践方式。
关于title,Android中定义各种作用域的常量变量并不是值得说道的事情,本篇的主要目的是立足软件维护层面讲一讲如何定义能够做到便于维护。至于(一),可能有(二),不能肯定。
正文:
一.应用级别的全局变量
有些变量(or 常量,后文默认变量 = 变量(or 常量))在整个应用中用到,换个顺口的说法,我们需要application的成员变量。可能此时你已经想起了一个古老的说法:“Android应用真正的入口是application,一个应用就是一个application,一个应用有且仅有一个application实例。”同样你对以下这段代码很熟悉。
<span style="font-size:18px;"><application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > ... </application></span>同样你也会对Activity中的一个方法感到熟悉:getApplication();
是的,你没有猜错,你可以在manifest文件中定义程序的入口,也就是该Application类实例是默认的,还是你自定义的,熟悉缺省自然是默认的。
正如同声明一个Activity一样:
<span style="font-size:18px;"> android:name="com.example.test.MyApplication"</span>我们实现该类并在其中定义一个变量
<span style="font-size:18px;">public class MyApplication extends Application{private String str = "this is a test string";public String getStr() {return str;}public void setStr(String str) {this.str = str;}}</span>而想要获取它(或修改它)则如下:
<span style="font-size:18px;">MyApplication application = (MyApplication) getApplication();Log.d(TAG, "var is:"+application.getStr());</span>
这样要比定义一个类并拼命的使用static要舒服得多。
二.使用接口定义广泛应用的常量
其本质上和使用类来定义不会有太大的差别,好处可能就是能够“被实现”再使用时少写一些字,在定义数据库字段、默认值、网络请求的key等等时很爽。
此处注意,使用接口定义和使用“常量类”维护时差别不大,但绝对不要hardcode或者哪个类需要用到我就在哪个类定义,非常的不便于维护。
public interface IUrlManager {public String DOMAIN = "XXXXXXXXXXX";public String _V3_TESTDOMAIN = "XXXXXXXXX";interface CheckToken {public String DOMAIN = IUrlManager.DOMAIN;public String FUNCTION = "XXXXXX";public String USERNAME = "XXXXX";public String ACCESS_TOKEN = "XXXXXXX";public String ACCESS_ID = "XXXXXXX";}interface LoginUrl {public String DOMAIN = IUrlManager.DOMAIN;public String LOGIN_CHECK = "XXXXX";public String APPKEY = "XXXXXXXXX";public String KEY_USERNAME = "username";public String KEY_PASSWORD = "password";public String KEY_APPKEY = "appkey";}interface CheckUpdate {/** * URL:访问地址,post方式 */public String URL = "XXXXXXXXXXX";public String KEY_SYS = "sys";public String VALUE_SYS = "XXXXXXXXX";/** * key_currentversion:当前版本 */public String KEY_CURRENTVERSION = "ver";/** * key_sid:软件标识 */public String KEY_SID = "sid";/** * value_sid:固定sid */public String VALUE_SID = "XXXXXXXXXXXXX";}}
例如上面的一个例子,这是我从项目中截取出的一段,我删去了关键信息和本来的注释。可以看到,这样管理web-api相关的常量会很方便,即使是在更换测试环境、临时添加测试接口等情况下,依旧很灵活,如果结合interface的extends,可以更加的灵活多变。
今天就先写这么多。
- [better practice系列]Android中自定义全局变量、常量并采用高效的维护管理(一)
- [better practice系列]Android中更舒服的使用log
- [better practice系列]Android处理好activity正确情况下的生命周期和意外情况下的生命周期
- Android中采用线程池进行线程的管理
- 位图管理、图片下载缓存、管理图片内存(一) 高效展示图片系列概述
- AD管理维护与排错工具系列一:DcDiag
- Android填坑之旅(第八篇)Android中高效的跟踪Bug管理平台
- Android项目中Activity生命周期高效的管理方式
- android基础之onSaveInstanceState用法(一)保存容易被回收的自定义类的静态全局变量
- VC++中全局变量、全局常量、全局结构体的定义
- VC++中全局变量、全局常量、全局结构体的定义
- Android自定义控件系列二:自定义开关按钮(一)
- Android自定义控件系列二:自定义开关按钮(一)
- Android自定义控件系列二:自定义开关按钮(一)
- Android自定义控件系列二:自定义开关按钮(一)
- Android中全局变量的定义
- android中全局变量的运用
- PHP 类中定义常量,并对常量的使用方法(转帖)
- day08
- java中static final与final的不同
- CF 349 C. Dominoes 贪心吧
- 根文件系统/etc下 inittab
- 在eclipse中配置Hibernate
- [better practice系列]Android中自定义全局变量、常量并采用高效的维护管理(一)
- TreeSet详解
- ccf 送货
- OpenCV入门:简单图像处理实例——平滑滤波
- 两次BFS-简单搜索练习3
- SQL SERVER 2008 利用发布订阅方式实现数据库同步
- 链表及其简单操作
- iOS开发-给服务器发送JSON数据
- HTML插入Flash的全兼容完美解决方案-SWFObject