安卓框架搭建(三)Base类的封装及工具类合集

这篇文章主要介绍bese类相关的封装

首先是 BaseApplication的封装,主要是初始化一些项目第三方公共的部分 

先来个最基本的吧 剩下的依照自己的需求增加即可

public class BaseApplication extends Application {
    private static BaseApplication instance;
    private static Context appContext;

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        instance = this;
        appContext = instance.getApplicationContext();
        //初始化X内核
        initX5Webview();

        //初始化工具类
        YcUtils.init(this);

    }
    private void initX5Webview() {
        //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

            @Override
            public void onViewInitFinished(boolean arg0) {
                // TODO Auto-generated method stub
                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                Log.d("app", " onViewInitFinished is " + arg0);
            }

            @Override
            public void onCoreInitFinished() {
                // TODO Auto-generated method stub
            }
        };
        //x5内核初始化接口
        QbSdk.initX5Environment(getApplicationContext(), cb);
    }
    public static synchronized BaseApplication getInstance() {
        return instance;
    }

    public static Context getAppContext() {
        return appContext;
    }
}

baseActivuty的封装 ,  这里只做简单的封装, 难度一点一点的增加 , 一面后续增加mvp模式后 , 代码量增加 容易看蒙圈

public abstract class BaseActivity extends AppCompatActivity{
    protected Context mContext;
    private Unbinder mUnbinder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(initLayoutInflater());
        mUnbinder = ButterKnife.bind(this);
        mContext = this;
        initView();
        initData();
    }

    protected <T> T findId(int id) {
        T view = (T) findViewById(id);
        return view;
    }
    protected abstract int initLayoutInflater(); //初始化布局

    public abstract void initView();

    public abstract void initData();

    @Override
    protected void onDestroy() {
        if (mUnbinder != null)
            mUnbinder.unbind();
        super.onDestroy();
    }
}

要在app中初始化 application

在公共类库中增加工具类库 包括一些安卓开发常用的工具类

可在github中下载YcAndroidUtils源码进行修改或增加

  api deps.YcAndroidUtils
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
        maven {url "https://dl.bintray.com/910442999/YcAndroidUtils"}
    }

如果无法下载  在根目录中增加上面的下载地址即可

/在application 中初始化一下工具类
  YcUtils.init(this);

注意 :在多模块开发的时候如果在公共的模块中引入YcAndroidUtils工具类时,如果要用到 

YcGlideUtils工具类的时候 如果加载图片报错,那么查看一下该工具类下的 glide 是否能找到下载的库(报错),

可在用该库的模块中加入glide的库

glide                      : 'com.github.bumptech.glide:glide:4.7.1',
glideCompiler              : 'com.github.bumptech.glide:compiler:4.7.1',

原因应该是跟studio3.0 将apt修改为annotationProcessor有关, 即使像之前说的将改工具类中的glide库implementation修改为api的形式也不行, 只能重新在导入一下glide库, 如果有其他方案的小伙伴欢迎留言技术分享一波

以上就是多模块架构base类的封装及工具类 的全部详解 

如有不了解的 可以去github下载源码 本章节内容为分支3

github源码地址,本章节见dev3分支

或 加入安卓开发交流群:安卓帮595856941

 

相关链接:

下一篇:

安卓框架搭建(四)mvp架构及封装

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值