开发者社区> 问答> 正文

对OSChina的android客户端的获取属性信息的效率质疑:报错

在AppContext类中

/**
* 获取登录信息
* @return
*/
public User getLoginInfo() {        
    User lu = new User();       
    lu.setUid(StringUtils.toInt(getProperty("user.uid"), 0));
    lu.setName(getProperty("user.name"));
    lu.setFace(getProperty("user.face"));
    /* ohter code */
    return lu;
}

追踪getProperty()方法的定义,可以找到相关两个方法,如下:

public String get(String key) {
    Properties props = get();
    return (props != null) ? props.getProperty(key) : null;
}

public Properties get() {
    FileInputStream fis = null;
    Properties props = new Properties();
    try {
        File dirConf = mContext.getDir(APP_CONFIG, Context.MODE_PRIVATE);
        fis = new FileInputStream(dirConf.getPath() + File.separator + APP_CONFIG);
        props.load(fis);
    } 
            /* other code */
    return props;
}

不难发现,每次获取属性集中的某个属性,都要通过打开一次属性文件,读取props,即将所有属性都读出来。换句话说,如果要获取10个属性,这里就要打开10次属性文件,试问这样的IO效率是否他低了,有没有更好的解决办法?

展开
收起
kun坤 2020-06-07 20:58:43 429 0
1 条回答
写回答
取消 提交回答
  • 说实话当时在开发这个客户端时,@迷途d书童 是现学现卖,待优化的地方还很多。

    大家有更好的做法可以在 github 上提交 pull request

    ######呵呵 那我争取做一次建设性的修改###### 嗯,我也有这种疑问呀,还好我弄的客户端IO次数不多
    2020-06-07 20:58:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载