1.Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class android.webkit.WebView
出现这个问题,表示你的代码并没有错,可能是因为手机刷机把系统的WebView刷没了,或者文件损伤。
详细原因可查看如下文章:
https://blog.csdn.net/weixin_40929353/article/details/80523696
https://stackoverflow.com/questions/31732169/error-inflating-class-android-webkit-webview-happens-sporadically-in-production
2.android.os.BadParcelableException: ClassNotFoundException when unmarshalling报错
发生错误的原因:实体中使用了List,然后实现Parcelable 序列化
public class Bean implements Parcelable {
private String name;
private List<String> studyList;
.......
}
解决办法:将List改成ArrayList即可 -> private ArrayList<String> studyList;
3.Android Studio 在打包过程中出现OOM
Execution failed for task 'app:transformClassesWithDexForRelease'.
com.adnroid.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:GC overhead limit exceeded.
以上就是异常信息,造成异常的原因是Android studio分配的内存不够,解决办法如下:
- 在主module的build.gradle中android闭包添加如下代码
dexOptions {
javaMaxHeapSize "6g"
}
- 在项目的gradle.properties中添加如下代码:
org.gradle.daemon=true # 开启Gradle守护进程
org.gradle.jvmargs=-Xms2048m -Xmx6656m
Xms2048m初始的java内存堆大小2048M; -Xmx6144m最大的java内存堆大小
这样就行了!!!
有人问:6g、6656m能不能自己更改,明确告诉你,可以的!但是注意一个问题,-Xmx不能少于javaMaxHeapSize设定的值。
4.java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.AppBarLayoutBaseBehavior$BaseDragCallback)' on a null object reference
开发中有功能需要使用CoordinatorLayout+AppBarLayout+TabLayout+ViewPager+RecyclerView ,但是发现有时刷新后没法正常滑动,只能在viewpager中才能上下滑动,在appbarlayout中无法滑动,查找资料后找到解决方法:
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) layoutParams.getBehavior();
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
@Override
public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
return true;
}
});
但是发现在onCreate中调用后报空指针异常:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.AppBarLayoutBaseBehavior$BaseDragCallback)' on a null object reference
之后发现在外面包一层runnable就ok了:
appBarLayout.post(new Runnable() {
@Override
public void run() {
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) layoutParams.getBehavior();
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
@Override
public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
return true;
}
});
}
});
问题解决了,个人留作备注 ,如果有更好的方法,大家一起学习