亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android 常見bug匯總及解決方案

 更新時(shí)間:2021年03月24日 11:10:16   作者:龍旋  
這篇文章主要介紹了Android 常見bug匯總及解決方案,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下

作為開發(fā)人員,平時(shí)總會(huì)遇到各種各樣的問題,之前都沒有收集bug的習(xí)慣,遇到相同的問題總會(huì)有種莫名的熟悉感,或許把問題都匯總,方便查找,也可以給大家踩踩坑,后面會(huì)陸續(xù)更新補(bǔ)充!

1、關(guān)于使用OkHttp運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤

報(bào)錯(cuò)如下:

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

大概意思就是靜態(tài)接口方法只從Android N開始使用。

解決方案:

因?yàn)殪o態(tài)接口需要在Java 8 下才支持使用,所以我們要使用靜態(tài)接口,就需要在app的build.gradle文件中配置聲明,使用Java 8編譯。

所以需要加入以下代碼來聲明:

 compileOptions {

  sourceCompatibility JavaVersion.VERSION_1_8

  targetCompatibility JavaVersion.VERSION_1_8

 }

修改如下圖所示:

添加完成以后,同步一下,然后重新運(yùn)行項(xiàng)目就可以啦。

2、圖片輪播控件com.youth.banner使用Glide異步加載圖片時(shí)發(fā)生的崩潰

錯(cuò)誤信息:

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)

根據(jù)錯(cuò)誤信息找到發(fā)生閃退的代碼位置:

 //自定義的圖片加載器
 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);
   //報(bào)錯(cuò)地方
   Glide.with(context).load((String) path).apply(options).into(imageView);
  }
    }

跟蹤日志進(jìn)入Glide調(diào)用的地方發(fā)現(xiàn),出現(xiàn)在

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");
  }
    }

這個(gè)錯(cuò)誤是使用Glide異步加載圖片的時(shí)候,Activity已經(jīng)Destroyed

解決方案:

1、在使用Glide加載圖片前,先進(jìn)行Activity是否Destroy的判斷:

 /**
  * 判斷Activity是否Destroy
  * @param activity
  * @return
  */
 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、在錯(cuò)誤的位置進(jìn)行替換:

 //自定義的圖片加載器
 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、接入容聯(lián)七陌客服系統(tǒng),進(jìn)入客服界面時(shí)閃退問題

錯(cuò)誤信息:

圖片看起來不清晰,看報(bào)錯(cuò)代碼:

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)

我們可以根據(jù)報(bào)錯(cuò),跳到報(bào)錯(cuò)的地方:

該報(bào)錯(cuò)的意思就是:沒有 

into(Landroid/widget/ImageView)

的方法,代碼能編譯通過,說明項(xiàng)目中肯定是添加依賴了,那怎么還會(huì)報(bào)這個(gè)錯(cuò)誤呢?還沒添加依賴之前,項(xiàng)目中也是使用的Glide進(jìn)行圖片的加載,會(huì)不會(huì)是項(xiàng)目中的Glide與容聯(lián)Demo中的Glide有沖突呢。

我們可以根據(jù)報(bào)錯(cuò)的地方into方法,點(diǎn)進(jìn)入看源碼:

可以看到容聯(lián)Demo使用的Glide版本是3.7.0。

再來看看項(xiàng)目中Glide使用的版本:

可以看到項(xiàng)目中使用的Glide版本是4.5.0。

這時(shí)就想到真的很大概率是兩者的Glide版本有沖突了。

果然將容聯(lián)Demo中的Glide版本改成4.5.0之后,編譯運(yùn)行進(jìn)入客服界面后,沒有報(bào)錯(cuò)了,完美解決。

4、android 7.0系統(tǒng)解決拍照的問題

報(bào)錯(cuò)信息:

# 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.在相對(duì)應(yīng)的頁(yè)面中,寫如下的方法:

private void initPhotoError(){
  // android 7.0系統(tǒng)解決拍照的問題
  StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
  StrictMode.setVmPolicy(builder.build());
  builder.detectFileUriExposure();
    }

2.在onCreate中調(diào)用上述的方法。

5、使用RecyclerView滑動(dòng)閃退問題

錯(cuò)誤信息:

圖片看起來不清晰,看報(bào)錯(cuò)代碼:

IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter

看這個(gè)代碼,只是并沒有報(bào)到我們自己的代碼里面來,在底層就崩潰了,在app層面并沒有,彈出一個(gè)框,說應(yīng)用程序已奔潰,而是直接就沒了,用戶感覺很奇怪。這種異常并不是很容易出現(xiàn),而是偶爾出現(xiàn),我的也是在后臺(tái)奔潰日志中,發(fā)現(xiàn)了這種異常,我們自己都不知道什么地方報(bào)錯(cuò)的。

解決方案如下:

1、創(chuàng)建一個(gè)類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、設(shè)置RecyclerView的布局管理為

WrapContentLinearLayoutManager對(duì)象

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

其實(shí)這也不是什么解決方案,只是把這個(gè)異常捕獲了,不讓他奔潰了,這個(gè)問題的終極解決方案還是得讓google去修復(fù)。

以上就是Android 常見bug匯總及解決方案的詳細(xì)內(nèi)容,更多關(guān)于Android 常見BUG及解決的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 常用Android布局文件優(yōu)化技巧總結(jié)

    常用Android布局文件優(yōu)化技巧總結(jié)

    Android布局加載是Android應(yīng)用程序的重要組成部分,布局加載是指將 XML文件中定義的視圖層次結(jié)構(gòu)加載到內(nèi)存中,在這篇文章中,我們將深入探討 Android 布局加載的原理,包括 Android 布局文件的結(jié)構(gòu)和布局文件的常見問題等方面,需要的朋友可以參考下
    2023-07-07
  • android真機(jī)調(diào)試時(shí)無法顯示logcat信息的解決方法介紹

    android真機(jī)調(diào)試時(shí)無法顯示logcat信息的解決方法介紹

    以下是對(duì)android真機(jī)調(diào)試時(shí)無法顯示logcat信息的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-07-07
  • android之datepicker控件的用法

    android之datepicker控件的用法

    下面小編就為大家?guī)硪黄猘ndroid之datepicker控件的用法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Flutter最小刷新范圍探索ValueListenableBuilder使用詳解

    Flutter最小刷新范圍探索ValueListenableBuilder使用詳解

    這篇文章主要為大家介紹了Flutter最小刷新范圍探索ValueListenableBuilder使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Android開發(fā)準(zhǔn)確獲取手機(jī)IP地址的兩種方式

    Android開發(fā)準(zhǔn)確獲取手機(jī)IP地址的兩種方式

    這篇文章主要介紹了Android開發(fā)準(zhǔn)確獲取手機(jī)IP地址的兩種方式,需要的朋友可以參考下
    2020-03-03
  • Android App中ViewPager所帶來的滑動(dòng)沖突問題解決方法

    Android App中ViewPager所帶來的滑動(dòng)沖突問題解決方法

    Android中我們經(jīng)常使用ViewPager配合Fragment實(shí)現(xiàn)視圖滑動(dòng),但在實(shí)際操作中又會(huì)經(jīng)常發(fā)生方向上的沖突問題,這里我們就來總結(jié)一下Android App中ViewPager所帶來的滑動(dòng)沖突問題解決方法:
    2016-06-06
  • Android 實(shí)現(xiàn)自己的LOG信息

    Android 實(shí)現(xiàn)自己的LOG信息

    本文主要講解Android LOG,這里對(duì)如何創(chuàng)建自己的Android LOG信息做了詳細(xì)的介紹,并附簡(jiǎn)單代碼示例,有需要的小伙伴可以參考下
    2016-08-08
  • Kotlin中常見的符號(hào)詳解

    Kotlin中常見的符號(hào)詳解

    這篇文章主要介紹了Kotlin中常見的符號(hào)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android N 7.0中報(bào)錯(cuò):android.os.FileUriExposedException的解決方法

    Android N 7.0中報(bào)錯(cuò):android.os.FileUriExposedException的解決方法

    這篇文章主要給大家介紹了關(guān)于在Android N 7.0中報(bào)錯(cuò):android.os.FileUriExposedException的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-05-05
  • Android通過自定義控件實(shí)現(xiàn)360軟件詳情頁(yè)效果

    Android通過自定義控件實(shí)現(xiàn)360軟件詳情頁(yè)效果

    這篇文章主要給大家介紹了Android通過自定義控件實(shí)現(xiàn)360軟件詳情頁(yè)效果的相關(guān)資料,實(shí)現(xiàn)后的效果非常不錯(cuò),文中也給出了詳細(xì)的示例代碼和介紹,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05

最新評(píng)論