美文网首页日志系统
Android极速开发框架One,只需59秒即可!

Android极速开发框架One,只需59秒即可!

作者: 韩x寒 | 来源:发表于2016-09-14 14:46 被阅读788次

    One整个框架为MVC模式搭建,基于android framework为核心,集成Android世界中的主流技术选型, 以Pragmatic风格的Android应用参考示例,是android项目最佳实践的总结与演示。 以“复杂的世界里,一个就够了”为理念,励志帮助Android开发人员快速搭建一个简单高效的android开发框架。

    One框架能帮您带来什么?

    One框架分为两个项目,OneCore为核心工程,androidOne为演示项目,依赖oneCore

    One整个框架为MVC模式搭建,基于android framework为核心,集成Android世界中的主流技术选型

    以Pragmatic风格的Android应用参考示例,是android项目最佳实践的总结与演示

    以“复杂的世界里,一个就够了”为理念,励志帮助Android开发人员快速搭建一个简单高效的android开发框架!

    异步模块

    封装EventBus类,将异步框架单独抽出来,任何耗时操作(不仅仅是网络请求)都可以放到异步模块里

    与网络模块分离实现,可以直接写单元测试类测试接口,让接口调试更方便

    支持多并发、取消操作

    多个请求,一个回调接口处理,让页面代码更简洁

    建议一般在BaseActivity、BaseFragment中实现

    实现参考类AsyncTaskManager.java

    使用参考类BaseActivity.java

    使用参考类BaseFragment.java

    HTTP请求模块

    采用第三方AsyncHttpClient方案,支持http、https方式,支持get、post、put、delete方法,支持GZIP、File格式,支持Retry、Cacel策略,堪称完美!

    改造实现SyncHttpClient,支持同步,并支持RESTFUL风格,调接口时可直接单元测试

    实现参考类SyncHttpClient.java

    DownloadManager资源下载模块

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

    /*** [下载器管理类,支持并发、暂停、继续、删除任务操作以及断点续传]*DownloadManager downloadMgr = DownloadManager.getInstance();downloadMgr.setDownLoadCallback(new DownLoadCallback(){@Overridepublic void onLoading(String url, int bytesWritten, int totalSize) {super.onLoading(url, bytesWritten, totalSize);}@Overridepublic void onSuccess(String url) {super.onSuccess(url);}@Overridepublic void onFailure(String url, String strMsg) {super.onFailure(url, strMsg);}});//添加下载任务downloadMgr.addHandler(url);***/

    BluetoothManager蓝牙处理模块

    /*** [蓝牙管理类]**/BluetoothManager bluetoothManager=BluetoothManager.getInstance(newBluetoothCallBack(){        @OverridepublicvoidonStateChange(intbluetoothState,Stringmessage) {switch(bluetoothState){//蓝牙不可用caseBluetoothService.STATE_UNAVAILABLE:NToast.shortToast(mContext,"蓝牙不可用");break;//蓝牙未连接caseBluetoothService.STATE_NONE:NToast.shortToast(mContext,"蓝牙未连接");break;//蓝牙空闲caseBluetoothService.STATE_LISTEN:break;//蓝牙正连接caseBluetoothService.STATE_CONNECTING:NToast.shortToast(mContext,"蓝牙正连接");break;//蓝牙已连接, 当如果连接上了,message就是蓝牙的名称caseBluetoothService.STATE_CONNECTED:NToast.shortToast(mContext,"蓝牙已连接");                    mBluetoothState=true;break;            }        }        @OverridepublicvoidonResult(intrequsetCode,Stringdata) {//回调结果在页面显示}    });//发送蓝牙请求bluetoothManager.request(SEND_INL_CODE, charStr);//断开bluetoothManager.stop();

    Common模块

    页面堆栈管理ActivityPageManager

    各种自定义dialog

    支持hybrid开发

    各种工具类

    各种动画效果

    SharedPreferences管理

    支持直接put、get对象。

    LruCache管理

    封装LruCache,只缓存CACHE_SIZE大小的数量,超过CACHE_SIZE自动释放前面的对象,建议页面间传参使用。

    Exception系统异常处理

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

    Parse解析管理

    支持XML、JSON、JSOAP解析

    一行代码轻松转JAVA对象

    采用fastjson实现java、json互转

    采用xstream实现Java、xml互转,支持注解解析

    自主封装,支持soapObject转Java对象

    CacheManager缓存管理

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

    /*** 缓存使用示例**@return*@throwsHttpException*/publicAdResponsegetAdList() throws HttpException {        AdResponse response=null;        RequestParams params=getRequestParams();params.put("method","fmms.getAdvertisementList");params.put("data","{}");//根据请求得到唯一的缓存KeyStringkey=getCacheKey(AdResponse.class.getSimpleName());//读取缓存if(CacheManager.isInvalidCache(key,INVALID_TIME_1DAY)){            response=CacheManager.readObject(key);if(response!=null&&response.isSuccess()){returnresponse;            }        }Stringresult=httpManager.post(mContext,Constants.DOMAIN,getSignParams(params), ContentType);if(!TextUtils.isEmpty(result)){//一句话解析成对象response=jsonToBean(result,AdResponse.class);if(response!=null&&response.isSuccess()){//获取数据成功,写入缓存CacheManager.writeObject(response, key);            }        }//最后都没有数据,还是从缓存中取if(response==null){            response=CacheManager.readObject(key);if(response!=null&&response.isSuccess()){returnresponse;            }        }returnresponse;    }

    BroadcastManager广播管理

    为了发送广播更加方便,自主封装了BroadcastManager,方便好用。

    /*** [BroadcastManager使用示例]*//在任何地方发送广播BroadcastManager.getInstance(mContext).sendBroadcast(FindOrderActivity.ACTION_RECEIVE_MESSAGE);//页面在oncreate中初始化广播BroadcastManager.getInstance(mContext).addAction(ACTION_RECEIVE_MESSAGE, new BroadcastReceiver(){@Overridepublic void onReceive(Context arg0, Intent intent) {String command = intent.getAction();if(!TextUtils.isEmpty(command)){if((ACTION_RECEIVE_MESSAGE).equals(command)){//获取json结果String json = intent.getStringExtra("result");//做你该做的事情}}}});//页面在ondestory销毁广播BroadcastManager.getInstance(mContext).destroy(ACTION_RECEIVE_MESSAGE);***/

    DB模块

    采用GreenDao详见ORM方案,直接实现Java Object的CURD方法就可以操作数据库,非常好用,极力推荐。

    实现DBManager,连获取Dao的代码都不用写了,不管通过DaoGenerator生成的对象如何变化,通过DBManager可以让你拿到任何Dao对象,从而实现数据库操作。

    DaoGenerator工程自动生成model、dao、session对象等代码,拷过来直接使用即可。

    /*** 数据库示例*/publicvoidtestDB(){        NoteDao dao=DBManager.getInstance(getContext()).getDaoSession().getNoteDao();//addfor(int i=0; i<=4; i++){            Note bean=newNote();bean.setComment("comment");bean.setDate(newDate());bean.setText("text");dao.insert(bean);        }//udpateListlist=dao.loadAll();if(!list.isEmpty()){            Note bean=list.get(2);bean.setComment("comment_comment");dao.update(bean);        }//queryif(!list.isEmpty()){for(Note note:list){NLog.e("testDemo",note.getComment());            }        }//deleteif(!list.isEmpty()){dao.delete(list.get(0));        }    }

    注解模块

    集成butterknife详见注解框架,一个No Magic的Android注入框架,用过的人都说好,极力推荐。

    支付模块

    集成支付宝支付和微信支付

    支付宝示例:客户端封装参数,调用支付宝

    StringPARTNER="2088XXXXXXXXXXXX";StringSELLER="demo@yahoo.cn";StringRSA_PRIVATE="私钥";    PayUtils payutils=newPayUtils(activity,PARTNER,SELLER,RSA_PRIVATE,"服务器回调订单地址[异步处理]");payutils.setPayListener(newPayListener() {        @OverridepublicvoidonPayResult(intstate,Stringmessage) {        }    });try{payutils.pay("测试商品","测试商品详情","0.01","唯一订单号,服务器生成");    }catch(Exception e) {e.printStackTrace();    }

    支付宝示例:服务器封装所有的参数,返回url直接调用支付宝

    PayUtils1 payutils=newPayUtils1(BespeakActivity.this,newPayListener() {        @OverridepublicvoidonPayResult(intstate,Stringmessage) {switch(state) {casePayUtils1.PAY_SUC_CODE:                    MessageDialog dialog=newMessageDialog(mContext,getString(R.string.bespeak_order_suc));dialog.setConfirmListener(newOnClickListener() {                        @OverridepublicvoidonClick(Viewv) {BespeakActivity.this.finish();                        }                    });dialog.show();break;casePayUtils1.PAY_DOING_CODE:casePayUtils1.PAY_GOODS_CODE:casePayUtils1.PAY_INIT_CODE:casePayUtils1.PAY_FAIL_CODE:NToast.shortToast(mContext, message);break;            }        }    });payutils.pay(res.getData().getUrl());

    微信支付示例

    PayReq payReq=res.getData().getPayReq();payReq.packageValue="Sign=WXPay";IWXAPImsgApi=WXAPIFactory.createWXAPI(this,null);msgApi.registerApp(Constants.WEIXIN_APP_ID);msgApi.sendReq(payReq);

    图片下载模块

    采用Fresco解决方案,有关使用情况请参见Fresco详见

    内存管理、图片的渐进式呈现、Gif图和WebP格式强大的特性让你不能自拔!特性详见

    日志

    NLog日志输出类

    config.properties文件(assets文件夹下)配置日志开关

    #is debug mode,ifdebug istruethat log is open,ifdebug isfalsethat log is close.debug=true

    教程

    优酷视频教程地址,非常感谢融云阿明的辛苦录制!

    PPT手把手教程地址

    常用网址推荐

    Android开发技术周报

    http://www.androiddevtools.cn/

    android-studio中文站

    android-开源项目

    结语

    看到这里,估计您和您的小伙伴们都惊呆了吧!赶快动手试试吧!

    具体使用请参考androidOne演示工程。

    我改变不了这个世界!这个世界也休想将我改变!

    如果任何问题或者建议,欢迎沟通。

    QQ群:195104825

    AndroidOne GitHub地址:https://github.com/devinhu/androidone

    相关文章

      网友评论

        本文标题:Android极速开发框架One,只需59秒即可!

        本文链接:https://www.haomeiwen.com/subject/wvpvettx.html