OkHttp 会针对 gzip 的头进行自动判断是否解压
RecycleView+EditText
RecycleView item包含EditText。通过给EditText添加addTextChangedListener监听从而完成修改数据的时候会造成修改数据混乱。原因是 RecycleView的复用机制。解决办法在给EditText添加监听前判断该EditText是否已经存在监听,若存在则删除重新添加。
代码:
//判断是否添加监听
if(editLongText.getTag() instanceof TextWatcher){ editLongText.removeTextChangedListener((TextWatcher) editLongText.getTag());
}
//添加监听
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(Integer.parseInt(holder.itemView.getTag().toString()) == position) {
}
}
};
editLongText.addTextChangedListener(textWatcher);
editLongText.setTag(textWatcher);
// 模拟点击事件
performClick();
RecycleView+CheckBox
RecycleView中包含CheckBox,通过点击CheckBox再调用notifyDataSetChanged来刷新RecycleView列表数据,如果notifyDataSetChanged的调用在onBindViewHolder方法内,会报IllegalStateException Cannot call this method while RecyclerView is computing a layout or scrolling 错误
原因是onBindViewHolder本身就是用来刷新item数据的,在该方法内调用notifyDataSetChanged会造成onBindViewHolder频繁调用。
解决方法:
1.把notifyDataSetChanged放在onBindViewHolder外调用。参考
stackoverflow
2.使用handler,等RecyclerView完成layout()再调用notifyDataSetChanged
Fragment + EditText
在onCreateView中为EditText赋值,会造成赋值失败,显示的值可能是上一次添加fragment的值,解决方法把复制代码放在onResume()中执行。
高德地图
MapView添加动画 setAnimation 后出现穿透现象,显示了前一个界面上的东西。使用TextureMapView替代即可。
原因:MapView是一个SurfaceView控件,会出现穿透现象。
RecycleView 多次设置分割线
addItemDecoration 多次调用会撑大item的高度,分割线会离底部越来越远
gradle升级后生成不出apk
升级到gradle3.0后,生成签名apk
在3.0前,点击 locate 进入文件夹能看得到生成的apk文件,3.0开始会在该文件下生成release的文件夹,apk会在该文件夹内,并且会生成一个关于apk信息的json文件
未完待续