Watch Star Fork

android开发个人库 / AndBaseAndroidApache-2.0

AndBase是一个简单的开发基本库,支持MVP模式,网络请求,以及一些常用的工具类和自定义组件。
克隆/下载
cocolove2 最后提交于 2018-02-10 11:35 更新 README.md
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
2018-02-10 11:23
2017-05-16 15:34
Loading...
README.md 6.49 KB

Download

简介

library-andbase是一个快速开发的基础库,内置:网络请求,MVP模式支持,常用工具类,常用的自定义view等工具。

集成方式

compile 'com.cocolove2.library:andasse:{version}'

demo示例

  • 展示MVP的使用
  • 网络请求相关功能post get 文件上传,文件下载

使用文档

一.基本类

  • AndBaseActivity所有activity的基类,内部提供通用的方法

  • AndBaseFragment所有Fragment的基类,支持懒加载

//注意: firstFragment 显示出来时布局还没有初始化完,所以第一个
//fragment的lazyLoad方法没有调用 可以在第一个fragment布局初始化成功后手动调用
//
public abstract void lazyLoad();
  • ActivityContaineractivity栈的管理

二.MVP模式支持

关键类有AndBaseMVPActivity,AndBaseMVPFragment,AndBasePresenterIAndBaseMVPView; 支持处理activity生命周期结束,请求未销毁造成的内存泄漏。详细使用参考Demo中HttpTestActivity

三.网络请求

网络请求使用retrofit2+okhttp3+rxjava2主流开发二次封装

  • 特性
  1. 支持异步和同步网络请求响应结果支持ResponseBody和实现IResponseResult接口的对象
  2. 继承retrofit2+okhttp3+rxjava2所以功能
  3. 支持接口请求异常重试主要用于token失效重刷token,再次请求
  4. 支持异常统一处理
  5. 支持MVP模式
  6. 支持文件同步/异步下载(支持进度条)
  7. 支持文件同步/异步上传(支持进度条)
  8. 支持批量上传(支持进度条)
  9. 支持websocket 断开重连

备注:

  1. 文件上传下载独立使用okhttp,不支持异常重试,异常统一处理;回调在子线程中
  2. 网络请求异常重试时,retryWhenException使用限制:
1.响应结果实现{@link IResponseResult}接口时必回调该方法<br>

2.响应结果为{@link ResponseBody}时,返回数据为json且包含{@link #getErrCodeKey()}关键字才会回调该方法
  • 使用方式
  1. 创建类ApiHelper 继承 ABaseApi<ApiService>,其中ApiService是接口协议 参考Demo中的类ApiHelper

  2. 基本网络请求,详细使用参考Demo中HttpTestPresenter

//MVP模式
public class HttpTestPresenter extends BasePresenter<IHttpView> {

    public void getBaidu() {
        Disposable disposable = ApiHelper.getInstance().sendRequest(new ABaseApi.OnObservableListener<ResponseBody>() {
            @Override
            public Observable<ResponseBody> onObservable() {
                return ApiHelper.getInstance().getApiService().getBaidu();
            }
        }, new OnHttpListener<ResponseBody>() {
            @Override
            public void onSuccess(ResponseBody response) {
                if (isViewAttached()) {
                    try {
                        getView().onBaiduResult(response.string(), 0, "请求成功");
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            @Override
            public void onFailure(int code, String msg) {
                if (isViewAttached()) {
                    getView().onBaiduResult("", code, msg);
                }
            }
        });

        addCompositeDisposable(disposable);
    }
}
  1. websocket的使用 ,实例代码如下
  mWsManager = new WsManager.Builder().client(new OkHttpClient().newBuilder()
                .retryOnConnectionFailure(true)
                .pingInterval(10, TimeUnit.SECONDS)
                .connectTimeout(15, TimeUnit.SECONDS)
                .build())
                .needReconnect(true)
                .wsUrl(mWsUrl)
                .build();
        mWsManager.setWsStatusListener(wsStatusListener);
        mWsManager.startConnect();
        

    private WsStatusListener wsStatusListener = new WsStatusListener() {
        @Override
        public void onOpen(Response response) {
        }

        /**
         * 处理推送过来的消息
         * @param text 消息包
         */
        @Override
        public void onMessage(String text) {
        }
 /**
     * @param retryCount 重试次数
     * @return true 继续重连;false 停止重连,并重置次数
     */
        @Override
        public boolean onReconnect(int retryCount) {
            KLog.e(TAG, "========重连中==============>" + retryCount);
            return true;
        }

        @Override
        public void onClosing(int code, String reason) {
            super.onClosing(code, reason);
            KLog.e(TAG, "========关闭中==============>" + reason);
        }

        @Override
        public void onClosed(int code, String reason) {
            super.onClosed(code, reason);
            KLog.e(TAG, "========关闭==============>" + reason);
        }

        @Override
        public void onFailure(Throwable t, Response response) {
            super.onFailure(t, response);
        }
    };
    
    
    
     /**
         * 关闭websocket
         */
        private void closeSocket() {
            if (mWsManager != null) {
                mWsManager.stopConnect();
                mWsManager = null;
            }
        }

四.轻量级缓存管理

  • MulitipleCaches缓存管理类,支持 内存缓存(bitmap/String),sd卡缓存(最大100M),SharedPreferences缓存

四.工具类

  • 日志输出帮助类,支持输出json,xml,file日志KLog;
  • 图片压缩处理,参考ImageUtil;
  • 软键盘显示隐藏,以及高度的获取,参考KeyBoardUtil;
  • 网络判断,以及网络信息获取,参考NetworkUtil;
  • 加密解密EncryptUtil
  • 文件信息处理帮助类FileUtil;
  • 屏幕相关辅助类ScreenUtils
  • 缓存数据清理DataCleanManager
  • 状态栏字体颜色StatusBarUtil
  • 系统类型 SystemUtil
  • 常用正则表达式RegexUtils

项目点评 ( 0 )

你可以在登录后,对此项目发表评论

6_float_left_people 6_float_left_close