2014-10-08 1 views
0

이 문제는 소수의 장치에서만 발생하는 것으로 보이지만 해당 사용자에 대해 전체 응용 프로그램이 충돌합니다.android.view.InflateException 발생 원인 : java.lang.OutOfMemoryError

앱에서 두 개의 이미지를 한 번에로드합니다. 하나는 원본이고 하나는 스크롤 효과의 흐린 복사본입니다. 저는 현재 Picasso를 사용하여 이미지를로드하여 이슈를 줄였습니다. 그러나 여전히 일부만 선택했습니다.

앱을 열 때마다 새로운 이미지 세트 (원본 & 흐리게 표시됨)가로드됩니다. 다음과 같이

이미지는 onCreateView 방법에 초기화됩니다

nonBlurImageView = (ImageView) layoutView.findViewById(R.id.orginal_image); 
    Picasso.with(getActivity()).load(getResources().getIdentifier(bgNum, "drawable", getActivity().getPackageName())).into(nonBlurImageView); 

    blurredImageView = (ImageView) layoutView.findViewById(R.id.blured_image); 
    Picasso.with(getActivity()).load(getResources().getIdentifier(bgNum+"_blur", "drawable", getActivity().getPackageName())).into(blurredImageView); 

스택 추적은 # 24

  <ImageView 
      android:id="@+id/orginal_image" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="centerCrop" 
      android:src="@drawable/bg_1" /> 

입니다

android.view.InflateException: Binary XML file line #24: Error inflating class <unknown> 
    at android.view.LayoutInflater.createView(LayoutInflater.java:626) 
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:675) 

로 시작하는 문제와 거기에 GC 같은데? 내가 할 수있는 더 좋은 방법이 있니?

감사합니다.

+0

내가/당김 bg_1'이 너무 크면 @를 디코딩 한 후 프로그램을 할당'생각합니다. – mmlooloo

+0

디코딩이란 무엇을 의미합니까? 그냥 기본 src로 제거 하시겠습니까? – User24231

+0

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html – mmlooloo

답변

1

꽤 늦었지만 여기 누군가가 비틀 거릴 수 있습니다. 내 응용 프로그램이 시작될 때 거의 동일한 문제가 발생하여 StringImageView에로드하려고 시도했기 때문에 시작과 충돌합니다. 빈 문자열은 Piccasso.load() 메서드 내에서 예외를 throw하지만 null은 예외입니다. null 대신 자리 표시자가로드됩니다.

그래서 빈 또는 이미지 ressource id가 0 인 경우 먼저 URL을 확인하고 "0"대신 null을 사용하십시오. 심지어는 늦게 경우이 도움이 될

희망 : D

관련 문제