这篇文章主要介绍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
或 加入安卓开发交流群:安卓帮595856941
相关链接:
下一篇: