iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 常见bug汇总及解决方案
  • 920
分享到

Android 常见bug汇总及解决方案

2024-04-02 19:04:59 920人浏览 泡泡鱼
摘要

目录1、关于使用OkHttp运行时出现的错误2、图片轮播控件com.youth.banner使用Glide异步加载图片时发生的崩溃3、接入容联七陌客服系统,进入客服界面时闪退问题4、

作为开发人员,平时总会遇到各种各样的问题,之前都没有收集bug的习惯,遇到相同的问题总会有种莫名的熟悉感,或许把问题都汇总,方便查找,也可以给大家踩踩坑,后面会陆续更新补充!

1、关于使用OkHttp运行时出现的错误

报错如下:


Static interface methods are only supported starting with Android N (--min-api 24): 
okhttp3.Request okhttp3.Authenticator.lambda$static$0(okhttp3.Route, okhttp3.Response)

大概意思就是静态接口方法只从Android N开始使用。

解决方案:

因为静态接口需要在Java 8 下才支持使用,所以我们要使用静态接口,就需要在app的build.gradle文件中配置声明,使用Java 8编译。

所以需要加入以下代码来声明:


 compileOptions {

  sourceCompatibility JavaVersion.VERSION_1_8

  targetCompatibility JavaVersion.VERSION_1_8

 }

修改如下图所示:

添加完成以后,同步一下,然后重新运行项目就可以啦。

2、图片轮播控件com.youth.banner使用Glide异步加载图片时发生的崩溃

错误信息:


java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity
 at com.b.a.e.m.b(RequestManagerRetriever.java:311)
 at com.b.a.e.m.a(RequestManagerRetriever.java:130)
 at com.b.a.e.m.a(RequestManagerRetriever.java:114)
 at com.b.a.d.c(Glide.java:697)
    at com.company.h5.c.ag$b.a(MainFragment.java:1079)
 at com.company.h5.c.ag$b.displayImage(MainFragment.java:1063)
 at com.youth.banner.Banner.setImageList(Banner.java:354)
    at com.youth.banner.Banner.start(Banner.java:262)

根据错误信息找到发生闪退的代码位置:


 //自定义的图片加载器
 private class ImgLoader extends ImageLoader {
  @Override
  public void displayImage(Context context, Object path, ImageView imageView) {  
  RoundedCorners roundedCorners = new RoundedCorners(20);
   RequestOptions options = new RequestOptions().bitmapTransfORM(roundedCorners);
   //报错地方
   Glide.with(context).load((String) path).apply(options).into(imageView);
  }
    }

跟踪日志进入Glide调用的地方发现,出现在


RequestManagerRetriever.assertNotDestroyed()

方法中:


 @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
 private static void assertNotDestroyed(Activity activity) {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && activity.isDestroyed()) {
   throw new IllegalArgumentException("You cannot start a load for a destroyed activity");
  }
    }

这个错误是使用Glide异步加载图片的时候,Activity已经Destroyed

解决方案:

1、在使用Glide加载图片前,先进行Activity是否Destroy的判断:


 
 public static boolean isDestroy(Activity Mactivity) {
  if (mActivity== null || mActivity.isFinishing() || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mActivity.isDestroyed())) {
   return true;
  } else {
   return false;
  }
    }

2、在错误的位置进行替换:


 //自定义的图片加载器
 private class ImgLoader extends ImageLoader {
  @Override
  public void displayImage(Context context, Object path, ImageView imageView) { 
   //添加判断 
   if(!isDestroy((Activity)context)){
    RoundedCorners roundedCorners = new RoundedCorners(20);
    RequestOptions options = new RequestOptions().bitmapTransform(roundedCorners);
    Glide.with(context).load((String) path).apply(options).into(imageView);
   }
  }
    }

这样就解决啦。

3、接入容联七陌客服系统,进入客服界面时闪退问题

错误信息:

图片看起来不清晰,看报错代码:


java.lang.NoSuchMethodError: No virtual method into (Landroid/widget/ImageView;)Lcom/bumptech/glide/request/target/Target; in class Lcom/a/a/i; or its super classes (declaration of 'com.a.a.i' appears in/data/app/com.sami91sami.h5-1/base.apk)

我们可以根据报错,跳到报错的地方:

该报错的意思就是:没有 


into(Landroid/widget/ImageView)

的方法,代码能编译通过,说明项目中肯定是添加依赖了,那怎么还会报这个错误呢?还没添加依赖之前,项目中也是使用的Glide进行图片的加载,会不会是项目中的Glide与容联Demo中的Glide有冲突呢。

我们可以根据报错的地方into方法,点进入看源码

可以看到容联Demo使用的Glide版本是3.7.0。

再来看看项目中Glide使用的版本:

可以看到项目中使用的Glide版本是4.5.0。

这时就想到真的很大概率是两者的Glide版本有冲突了。

果然将容联Demo中的Glide版本改成4.5.0之后,编译运行进入客服界面后,没有报错了,完美解决。

4、android 7.0系统解决拍照的问题

报错信息:


# main(1)
android.os.FileUriExposedException
file:///storage/emulated/0/xiangmu/3462884.jpg exposed beyond app through ClipData.Item.getUri()

android.os.StrictMode.onFileUriExposed(StrictMode.java:1816)
android.net.Uri.checkFileUriExposed(Uri.java:2350)

解决方法如下:

1.在相对应的页面中,写如下的方法:


private void initPhotoError(){
  // android 7.0系统解决拍照的问题
  StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
  StrictMode.setVmPolicy(builder.build());
  builder.detectFileUriExposure();
    }

2.在onCreate中调用上述的方法。

5、使用RecyclerView滑动闪退问题

错误信息:

图片看起来不清晰,看报错代码:


IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter

看这个代码,只是并没有报到我们自己的代码里面来,在底层就崩溃了,在app层面并没有,弹出一个框,说应用程序已奔溃,而是直接就没了,用户感觉很奇怪。这种异常并不是很容易出现,而是偶尔出现,我的也是在后台奔溃日志中,发现了这种异常,我们自己都不知道什么地方报错的。

解决方案如下:

1、创建一个类LinearLayoutManagerWrapper

继承LinearLayoutManager,重写onLayoutChildren方法


public class WrapContentLinearLayoutManager extends LinearLayoutManager {
 public WrapContentLinearLayoutManager(Context context) {
  super(context); 
 } 

 public WrapContentLinearLayoutManager(Context context, int orientation, boolean reverseLayout) { 
  super(context, orientation, reverseLayout); 
 } 

 public WrapContentLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
  super(context, attrs, defStyleAttr, defStyleRes); 
 } 

 @Override 
 public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
  try { 
   super.onLayoutChildren(recycler, state); 
  } catch (IndexOutOfBoundsException e) { 
   e.printStackTrace(); 
  } 
 } 
} 

2、设置RecyclerView的布局管理为

WrapContentLinearLayoutManager对象


mRecyclerView.setLayoutManager(new WrapContentLinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));

其实这也不是什么解决方案,只是把这个异常捕获了,不让他奔溃了,这个问题的终极解决方案还是得让Google去修复。

以上就是Android 常见bug汇总及解决方案的详细内容,更多关于Android 常见BUG及解决的资料请关注编程网其它相关文章!

--结束END--

本文标题: Android 常见bug汇总及解决方案

本文链接: https://www.lsjlt.com/news/122300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 常见bug汇总及解决方案
    目录1、关于使用OkHttp运行时出现的错误2、图片轮播控件com.youth.banner使用Glide异步加载图片时发生的崩溃3、接入容联七陌客服系统,进入客服界面时闪退问题4、...
    99+
    2024-04-02
  • Oracle常见问题解决方案汇总
    1、Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务 数据库服务器崩了,而且尝试重启服务和重启机器都解决不了问题 打开cmd窗口 C:\Users\hxt&g...
    99+
    2024-04-02
  • MySQL常见优化方案汇总
    目录思考sql优化的几个地方,我把他做了个分类,方便理解key_len计算方式简单介绍一、优化点1:字段优化覆盖索引尽量用二、优化点2:where优化1.尽量全值匹配2.最...
    99+
    2024-04-02
  • Python:常见反爬策略及应对方案汇总
    2019常见反爬策略及应对方案大汇总了。如果你对反爬虫的策略和手段还掌握的不很全面,进来学就对了!一切都是刚刚好,一切都不晚!...
    99+
    2023-06-02
  • win8中IE10 Metro版常见问题及解决方法汇总
    如何在IE10中使用收藏夹 在 Windows 8 Consumer Preview 中使用IE收藏夹与使用之前版本的传统收藏夹不同。您可以将网站锁定至开始屏幕,或使用“新建选项卡”打开锁定的站点...
    99+
    2023-06-03
    win8 IE10 Metro 解决 问题 方法
  • Vue常见报错以及解决方案实例总结
    目录前言一、报错结构二、常见问题总结及解决方法Mixed spaces and tabs Element is missing end tagTypeError: Cann...
    99+
    2024-04-02
  • 电脑常见故障及处理方法汇总
    1. 电脑无法启动或死机:- 检查电源线是否插好并通电。- 检查电源适配器是否正常工作。- 检查电脑内存条是否插好。- 清洁电脑内部...
    99+
    2023-09-07
    电脑
  • 总结常见的PHP加密解决方案
    随着互联网的不断发展和深入,网站变得越来越普及。同时,由于信息安全的重要性日益增加,越来越多的网站采用了加密技术来确保数据的安全性。PHP作为一种广泛使用的服务器端脚本语言,也不例外。本文将介绍一些PHP加密解决方案,以帮助您保护网站的信息...
    99+
    2023-05-14
  • Java程序常见异常及处理汇总
    Java程序中常见的异常包括:1. NullPointerException(空指针异常):当尝试访问一个空对象的方法或属性时抛出。...
    99+
    2023-08-16
    Java
  • 【总结】sublime写PHP遇到的常见问题及解决方案
    Sublime Text是一款功能丰富的文本编辑器,它被广泛使用来编写各种编程语言的代码。然而,一些PHP开发者有时遇到了一些问题,他们发现Sublime Text可能对PHP不太管用。这令人感到困惑:为什么这个备受喜爱的编辑器在处理PHP...
    99+
    2023-05-14
    php sublime
  • 有哪些IE6常见bug解决方法
    这篇文章主要讲解了“有哪些IE6常见bug解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些IE6常见bug解决方法”吧! ...
    99+
    2024-04-02
  • 常见的 Python 错误及其解决方案
    此文整理了一些常见的 Python 错误及其解决方案。 1、SyntaxError: invalid syntax 说明:无效的语法是最常见的错误之一,通常是由于编写代码时违反了 Python 的语...
    99+
    2023-08-31
    python 开发语言
  • 【总结分享】常见php变量命名错误及其解决方案
    PHP是一种非常流行的编程语言,随着网站和应用程序的需求不断增加,对于PHP开发人员仍然是非常重要的。其中一个重要的概念是变量,它是将值存储在程序中的一种方式。变量在PHP中的使用非常广泛,但是在变量名称上的错误语法可能会导致程序失败或产生...
    99+
    2023-05-14
    php
  • mybatis plus 常见问题Invalid bound statement (not found)解决方法汇总
    mybatis plus 常见问题Invalid bound statement (not found)解决方法汇总 一、问题描述 出现 Invalid bound statement (not ...
    99+
    2023-09-17
    java spring boot
  • Android常见面试题总结以及答案解析(2023年新版)
    缘起 对于Android的学习,很多⼈可能学了之后,不知道⾃⼰处于哪个阶段,也不到究竟要学到哪个程度,验证⾃⼰学得如何最好的⾯试,就是尝试去⾯试,⽽⾯试⽆⾮就是问你⼀些⾯试题。 而我之前也有整理过一些...
    99+
    2023-10-01
    android
  • PHPcms整合问题解决方案汇总
    标题:PHPcms整合问题解决方案汇总,需要具体代码示例 在网站开发中,PHPcms是一个常用的内容管理系统,但在实际整合过程中会遇到各种问题。本文将汇总常见的PHPcms整合问题,并...
    99+
    2024-03-14
    解决方案 php cms
  • 开发微信小程序之HTTPS报错常见问题汇总及解决方法
    开发微信小程序之HTTPS报错常见问题汇总及解决方法今年年初,微信小程序正式上线,在微信的光芒照射下,微信小程序已经广为人知。从而越来越多的开发人员投身与微信小程序的开发工作中。在开发的过程中,总会碰到各种各样的情况。其中由于微信小程序要求...
    99+
    2023-06-04
  • PHP常见中高面试题汇总(附答案)
    一、 PHP部分 PHP如何实现静态化 PHP的静态化分为:纯静态和伪静态。其中纯静态又分为:局部纯静态和全部纯静态。 PHP伪静态:利用Apache mod_rewrite实现URL重写的方法; PHP纯静态,就是生成HTML文件...
    99+
    2023-08-31
    php 开发语言 redis Powered by 金山文档
  • Python异常之常见的Bug类型解决方法
    目录一、粗心导致的语法错误SyntaxError1、input输入报错2、循环语句报错3、赋值报错二、知识不熟练导致的错误Bug1、索引越界问题 IndexError2、append...
    99+
    2024-04-02
  • Oracle NVL函数常见问题及解决方案
    Oracle NVL函数常见问题及解决方案 Oracle数据库是广泛使用的关系型数据库系统,在数据处理过程中经常需要处理空值的情况。为了应对空值带来的问题,Oracle提供了NVL函数...
    99+
    2024-03-10
    解决方案 oracle nvl
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作