android 开发过程中的BUG集合

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 studyList;
.......
}
解决办法:将List改成ArrayList即可 -> private ArrayList 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;
        } 
    }); 
  }
});

问题解决了,个人留作备注 ,如果有更好的方法,大家一起学习

你可能感兴趣的:(android 开发过程中的BUG集合)