android+one框架,androidone: One框架能帮您带来什么? One框架分为两个项目,OneCore为核心工程,androidOne为演示项目,依赖oneCore One整个框架为M...

一个牛逼哄哄的Android框架One

##One框架能帮您带来什么?

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

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

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

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

##异步模块

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

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

支持多并发、取消操作

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

##HTTP请求模块

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

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

##DownloadManager资源下载模块

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

/**

* [下载器管理类,支持并发、暂停、继续、删除任务操作以及断点续传]

*

DownloadManager downloadMgr = DownloadManager.getInstance();

downloadMgr.setDownLoadCallback(new DownLoadCallback(){

@Override

public void onLoading(String url, int bytesWritten, int totalSize) {

super.onLoading(url, bytesWritten, totalSize);

}

@Override

public void onSuccess(String url) {

super.onSuccess(url);

}

@Override

public void onFailure(String url, String strMsg) {

super.onFailure(url, strMsg);

}

});

//添加下载任务

downloadMgr.addHandler(url);

*

**/

##BluetoothManager蓝牙处理模块

/**

* [蓝牙管理类]

*

*/

BluetoothManager bluetoothManager = BluetoothManager.getInstance(new BluetoothCallBack(){

@Override

public void onStateChange(int bluetoothState, String message) {

switch(bluetoothState){

//蓝牙不可用

case BluetoothService.STATE_UNAVAILABLE:

NToast.shortToast(mContext, "蓝牙不可用");

break;

//蓝牙未连接

case BluetoothService.STATE_NONE:

NToast.shortToast(mContext, "蓝牙未连接");

break;

//蓝牙空闲

case BluetoothService.STATE_LISTEN:

break;

//蓝牙正连接

case BluetoothService.STATE_CONNECTING:

NToast.shortToast(mContext, "蓝牙正连接");

break;

//蓝牙已连接, 当如果连接上了,message就是蓝牙的名称

case BluetoothService.STATE_CONNECTED:

NToast.shortToast(mContext, "蓝牙已连接");

mBluetoothState = true;

break;

}

}

@Override

public void onResult(int requsetCode, String data) {

//回调结果在页面显示

}

});

//发送蓝牙请求

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

* @throws HttpException

*/

public AdResponse getAdList() throws HttpException {

AdResponse response = null;

RequestParams params = getRequestParams();

params.put("method", "fmms.getAdvertisementList");

params.put("data", "{}");

//根据请求得到唯一的缓存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)){

//一句话解析成对象

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()){

return response;

}

}

return response;

}

##BroadcastManager广播管理

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

/**

* [BroadcastManager使用示例]

*

//在任何地方发送广播

BroadcastManager.getInstance(mContext).sendBroadcast(FindOrderActivity.ACTION_RECEIVE_MESSAGE);

//页面在oncreate中初始化广播

BroadcastManager.getInstance(mContext).addAction(ACTION_RECEIVE_MESSAGE, new BroadcastReceiver(){

@Override

public 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对象等代码,拷过来直接使用即可。

/**

* 数据库示例

*/

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 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());

}

}

//delete

if(!list.isEmpty()){

dao.delete(list.get(0));

}

}

##注解模块

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

##支付模块

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

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

String PARTNER = "2088XXXXXXXXXXXX";

String SELLER = "demo@yahoo.cn";

String RSA_PRIVATE = "私钥";

PayUtils payutils = new PayUtils(activity, PARTNER, SELLER, RSA_PRIVATE, "服务器回调订单地址[异步处理]");

payutils.setPayListener(new PayListener() {

@Override

public void onPayResult(int state, String message) {

}

});

try {

payutils.pay("测试商品", "测试商品详情", "0.01", "唯一订单号,服务器生成");

} catch (Exception e) {

e.printStackTrace();

}

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

PayUtils1 payutils= new PayUtils1(BespeakActivity.this, new PayListener() {

@Override

public void onPayResult(int state, String message) {

switch (state) {

case PayUtils1.PAY_SUC_CODE:

MessageDialog dialog = new MessageDialog(mContext, getString(R.string.bespeak_order_suc));

dialog.setConfirmListener(new OnClickListener() {

@Override

public void onClick(View v) {

BespeakActivity.this.finish();

}

});

dialog.show();

break;

case PayUtils1.PAY_DOING_CODE:

case PayUtils1.PAY_GOODS_CODE:

case PayUtils1.PAY_INIT_CODE:

case PayUtils1.PAY_FAIL_CODE:

NToast.shortToast(mContext, message);

break;

}

}

});

payutils.pay(res.getData().getUrl());

微信支付示例

PayReq payReq = res.getData().getPayReq();

payReq.packageValue = "Sign=WXPay";

IWXAPI msgApi = WXAPIFactory.createWXAPI(this, null);

msgApi.registerApp(Constants.WEIXIN_APP_ID);

msgApi.sendReq(payReq);

##图片下载模块

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

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

##日志

NLog日志输出类

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

#is debug mode, if debug is true that log is open, if debug is false that log is close.

debug=true

##教程

##结语

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

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

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

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

QQ群:195104825

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值