2017-01-07 10 views
0

세부 사항 : 글라이드를 사용하여 드로어 블에서 이미지를 변경하고 있습니다. 방향을 가로로 변경하면 Glide로 이미지를 변경하는 방법을 가리키는 logcat 오류가 발생합니다.Android 처리 방향 변경. 글라이드를 사용하여 이미지 변경시 앱 충돌 지점

코드 :

private void changeDice1(int drawable) { 
    Glide.with(MainActivity.this) 
      .load(drawable) 
      .crossFade() 
      .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
      .into(ivDice1); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
} 

로그 캣 오류 :

enter image description here

+0

어디에서이 기능을 호출합니까? –

+0

은 onCreate 내부에서 호출되는 함수에 있습니다. –

+0

아래 답변을 참조하십시오. –

답변

0

당신은 부하를 취소 Glide.clear()를 사용할 수 있습니다.

그러나 활동이 삭제 된 후에 새로드를 시작하려고하면 예외가 발생합니다. 일부 데이터를 비동기 적으로 가져온 후에 이미지를로드하기 시작 했습니까? 그렇다면 활동이 중지 될 때 비동기 가져 오기를 취소하거나 가져 오기가 끝나고 작업이 삭제 된 경우 결과를 무시하는 것이 좋습니다.

자세한 내용은이 문제를 참조하십시오 https://github.com/bumptech/glide/issues/975

1

Glide로드 이미지를 비동기. 따라서 장치의 방향을 변경하면 참조 컨텍스트가 변경되고 예외가 발생합니다. 따라서 try-catch 블록을 사용하여 이처럼 함수를 수정하십시오.

private void changeDice1(int drawable) { 
    try{ 
     Glide.with(MainActivity.this) 
       .load(drawable) 
       .crossFade() 
       .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
       .into(ivDice1); 
    } catch(Exception e) { e.printStackTrace();} 
} 

이제 onConfigurationChanged에서 함수를 다시 호출하십시오.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    changeDice1(R.drawable.your_image); 
} 
+0

감사합니다. @Reaz 잘 작동합니다. –