android应用开发项目中用到的框架(库)以及简单的使用和遇到的坑,持续更新...
废话不多说直接开始,适合新手刚做项目的时候看,大神请多指教!
一、数据库
1.LitePal
这是郭霖大神写的开源框架,我也是一直在用
github地址:项目源码地址
参考教程:LitePal数据库全部使用教程
引用依赖
compile 'org.litepal.android:java:3.0.0'
开发中常用的技术点
- saveOrUpdate:保存或更新数据,当数据不存在时保存数据,当数据存在时更新数据,示例:
saveOrUpdate("s_id = ?", LitePalUtils.S_ID_USER)
开发中遇到的坑
- 首先一定要在main文件夹下创建assets文件夹,然后创建litepal.xml然后输入下图的代码,很多时候都是引入库后没有这一步导致项目一直报错
- 虽然有了上面这个文件了但是有时候还是一直报错,那么就要看下注册表的路径是否正确了,有时候你修改了实体类的名称或者路径但是在这里没有该的话也是会一直报错的,我再这个坑走了N遍了,哈哈
- 有时候如果实体类的字段更改了也是要在这边升级版本号的,直接当前版本号+1即可,如果不升级版本号的话更改的内容是不会生效的而且还会出现找不到数据表或数据表字段的错误
二、EventBus
EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发
Gihub地址是:EventBus。
参考教程:教程
它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。
EventBus3.0有四种线程模型,分别是:
- POSTING:默认,表示事件处理函数的线程跟发布事件的线程在同一个线程。
- MAIN:表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作。
- BACKGROUND:表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程。
- ASYNC:表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作
引入依赖
compile 'org.greenrobot:eventbus:3.0.0'
开发中常用的技术点
- 开发中我们一般都会定义一个事件的封装对象,如下所示:
//EventBus实体类
public class EventBusModel {
private int type; //消息类型
private Object object; //消息内容
public EventBusModel() {
}
public EventBusModel(int type, Object object) {
setType(type);
setObject(object);
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
@Override
public String toString() {
return getType() + "-->" + getObject();
}
开发中遇到的坑
- 每次当我们写完订阅的代码运行程序的时候都会报错
订阅
EventBus.getDefault().register(this);
取消订阅
EventBus.getDefault().unregister(this);
报错
java.lang.RuntimeException
详细的报错信息就不在这贴了,这里主要的原因就是没有写一个公开的方法,如下所示:
@Subscribe(threadMode = ThreadMode.MAIN)
public void eventBus(EventBusModel model) {
String txt = "message: " + model.toString;
Log.d(TAG,txt);
}
写上如上代码就不会报错了
注:threadMode = ThreadMode.MAIN根据不同场景变换
三、RecyclerView
引入依赖
compile 'com.android.support:recyclerview-v7:26.0.0'
1.超级万能适配器 BaseRecyclerViewAdapter
github地址:源码
引入依赖
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
2.分组悬浮 GroupedRecyclerViewAdapter
github地址:源码
参考教程:教程
引入依赖
compile 'com.github.donkingliang:GroupedRecyclerViewAdapter:1.3.7'
四、图片加载框架
1.Glide
五、多级树形列表 MultilevelTreeList
六、图表 MPAndroidChartFix
七、略缩图放大缩小 imgepreviewlibrary