[Android教程] Android 牛逼哄哄的快速开发框架AndroidOne,秒杀最火的Xutils

来源:互联网 发布:adobeacrobat9pro mac 编辑:程序博客网 时间:2024/05/17 11:58
一个牛逼哄哄的Android框架One
github地址https://github.com/devinhu/androidone
One框架能帮您带来什么?
  • One框架分为两个项目,OneCore为核心工程,http://www.kmnk03.com/hxpfk/qcd/392.htmlandroidOne为演示项目,依赖oneCore
  • One整个框架为MVC模式搭建,基于android framework为核心,集成Android世界中的主流技术选型
  • 以Pragmatic风格的Android应用参考示例,是android项目最佳实践的总结与演示
  • 以“复杂的世界里,一个就够了”为理念,励志帮助android开发人员快速搭建一个简单高效的android开发框架!

异步模块
  • 封装EventBus类,将异步框架单独抽出来,任何耗时操作(不仅仅是网络请求)都可以放到异步模块里
  • 与网络模块分离实现,可以直接写单元测试类测试接口,让接口调试更方便
  • 支持多并发、http://www.kmnk03.com/hxpfk/qcd/393.html取消操作
  • 多个请求,一个回调接口处理,让页面代码更简洁
  • 建议一般在BaseActivity、BaseFragment中实现

    • 实现参考类 AsyncTaskManager.java
    • 使用参考类 BaseActivity.java
    • 使用参考类 BaseFragment.java

HTTP请求模块
  • 采用第三方AsyncHttpClient方案,支持http、https方式,支持get、post、put、delete方法,支持GZIP、File格式,支持Retry、Cacel策略,堪称完美!
  • 改造实现SyncHttpClient,http://www.kmnk03.com/hxpfk/qcd/394.html支持同步,并支持RESTFUL风格,调接口时可直接单元测试

    • 实现参考类 SyncHttpClient.java

DownloadManager资源下载模块
  • 改造实现BreakpointHttpResponseHandler支持多并发、多文件上传、断点续传、暂停、继续、删除下载任务

Common模块
  • 页面堆栈管理ActivityPageManager
  • 各种自定义dialog
  • 支持hybrid开发
  • 各种工具类
  • 各种动画效果

SharedPreferences管理
  • 支持直接put、get对象。

LruCache管理
  • 封装LruCache,http://www.kmnk03.com/hxpfk/qcd/395.html只缓存CACHE_SIZE大小的数量,超过CACHE_SIZE自动释放前面的对象,建议页面间传参使用。

系统异常处理
  • Bugtags是新一代的、专为移动测试而生的缺陷发现及管理工具。移动App集成Bugtags SDK后,测试人员就可以直接在App里所见即所得的提交 bug,SDK会自动截屏、收集App运行时数据,如:设备信息,控制台数据,用户的操作步骤等,团队人员在Bugtags云端高效的跟踪及管理bug。

解析管理
  • 支持XML、JSON、JSOAP解析
  • 一行代码轻松转JAVA对象

    • 采用fastjson实现java、json互转
    • 采用xstream实现Java、xml互转,支持注解解析
    • 自主封装,支持soapObject转http://www.kmnk03.com/hxpfk/qcd/396.htmlJava对象

CacheManager缓存管理
  • 磁盘缓存,缓存对象需实现序列化接口,提供读取、失效,清除方法。一般用于对接口数据的缓存。

   /**     
   * 缓存使用示例     
   *      
   * @return     
   * @throws HttpException     
   */
    public AdResponse getAdList() throws HttpException {
        AdResponse response = null;

        RequestParams params = getRequestParams();        
        params.put("method", "fmms.getAdvertisementList");        
        params.put("data", "{}");   http://www.kmnk03.com/hxpfk/qcd/397.html
             
        //根据请求得到唯一的缓存Key
        String key = getCacheKey(AdResponse.class.getSimpleName());        
        //读取缓存
        if(CacheManager.isInvalidCache(key, INVALID_TIME_1DAY)){
            response = CacheManager.readObject(key);            
            if(response != null && response.isSuccess()){                 
            return response;
            }
        }        
        String result = httpManager.post(mContext, Constants.DOMAIN, getSignParams(params), ContentType);        
        if(!TextUtils.isEmpty(result)){ http://www.kmnk03.com/hxpfk/qcd/398.html           
            //一句话解析成对象
            response = jsonToBean(result, AdResponse.class);            
            if(response != null && response.isSuccess()){                 
            //获取数据成功,写入缓存
                CacheManager.writeObject(response, key);
            }
        }   
             
        //最后都没有数据,还是从缓存中取
        if(response == null){http://www.kmnk03.com/hxpfk/qcd/399.html
            response = CacheManager.readObject(key);            
            if(response != null && response.isSuccess()){                
            return response;
            }
        }   
             
        return response;
    }
BroadcastManager广播管理
  • 为了发送广播更加方便,自主封装了BroadcastManager,方便好用。

DB模块
  • 采用GreenDaoORM方案,直接实现Java Object的CURD方法就可以操作数据库,非常好用,极力推荐。
  • 实现DBManager,连获取Dao的代码都不用写了,不管通过DaoGenerator生成的对象如何变化,通过DBManager可以让你拿到任何Dao对象,从而实现数据库操作。http://www.kmnk03.com/hxpfk/qcd/400.html
  • DaoGenerator工程自动生成model、dao、session对象等代码,拷过来直接使用即可。

    /**     
    * 数据库示例     
    */
    public void testDB(){

        NoteDao dao = DBManager.getInstance(getContext()).getDaoSession().getNoteDao();        
        //add
        for(int i=0; i<=4; i++){
            Note bean = new Note();            
            bean.setComment("comment");            
            bean.setDate(new Date());            
            bean.setText("text");            
            dao.insert(bean);
        }       
         
        //udpate
        List<Note> list = dao.loadAll();        
        if(!list.isEmpty()){
            Note bean = list.get(2);            
            bean.setComment("comment_comment");            
            dao.update(bean);
        }       
         
        //query
        if(!list.isEmpty()){            
        for(Note note : list){                
            NLog.e("testDemo", note.getComment());
            }
        }     
           http://www.kmnk03.com/hxpfk/qcd/401.html
        //delete
        if(!list.isEmpty()){            
            dao.delete(list.get(0));
        }
    }
注解模块
  • 集成butterknife注解框架,一个No Magic的Android注入框架,用过的人都说好,极力推荐。

支付模块
  • 集成支付宝支付和微信支付

图片下载模块
  • 采用universal-image-loader解决方案,有关使用情况请参见universal-image-loader
  • 为了提供用户体验,建议在listview或者gridview在滑动的时候不加载图片

refreshlistview.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), true, true));
视频教程
  • 优酷地址http://v.youku.com/v_show/id_XMTQwNTU3NjI4NA==.html?qq-pf-to=pcqq.c2c
  • 非常感谢融云阿明的辛苦录制!

结语
  • 看到这里,估计您和您的小伙伴们都惊呆了吧!赶快动手试试吧!
  • 具体使用请参考androidOne演示工程。
  • 我改变不了这个世界!这个世界也休想将我改变!
  • 如果任何问题或者建议,欢迎沟通。
  • QQ群:195104825
  • kmnk03.com
    www.kmnk03.c0m
0 0
原创粉丝点击