0

유니버설 이미지 로더 및 많은 기기 (Lenovo, HTC, LG 등)에서 내 앱과 함께 작업했지만 삼성과 함께 모든 것이 충돌합니다. 내 애플 리케이션에서 ListView 함께 몇 가지 향수 있어요. 그 ListViews는 웹에서 다운로드하고 UIL로 표시하려는 이미지 만 포함합니다.유니버설 이미지 로더가 삼성 기기와 메모리 부족을 경험합니다.

07-10 14:49:33.685: E/dalvikvm-heap(29613): Out of memory on a 30355216-byte allocation. 
07-10 14:49:33.705: E/AndroidRuntime(29613): FATAL EXCEPTION: main 
07-10 14:49:33.705: E/AndroidRuntime(29613): Process: com.ready4s.bookapart, PID: 29613 
07-10 14:49:33.705: E/AndroidRuntime(29613): android.view.InflateException: Binary XML file line #16: Error inflating class <unknown> 
07-10 14:49:33.705: E/AndroidRuntime(29613): at android.view.LayoutInflater.createView(LayoutInflater.java:626) 
07-10 14:49:33.705: E/AndroidRuntime(29613): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
. 
. 
. 
07-10 14:49:33.705: E/AndroidRuntime(29613): at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
07-10 14:49:33.705: E/AndroidRuntime(29613): at com.ready4s.bookapart.adapters.FavouriteAdapter.getView(FavouriteAdapter.java:101) 

및 응용 프로그램 충돌 : 내가 삼성에 내 응용 프로그램을 디버깅 할 때

는하지만 (S4/갤럭시 탭 3/갤럭시 노트 8.0) 로그 캣은 저에게이 있습니다.

삼성 기기에서만 발생합니다! 나는 다른 상표에 Exeption의이 종류가 결코 없었다. 이것은 내가 내 어댑터 UIL을 사용하는 방법입니다 :

private LayoutInflater mInflater; 

protected ImageLoader mImageLoader = ImageLoader.getInstance(); 
public FavouriteAdapter(Activity activity) { 

    mImageOptions = new DisplayImageOptions.Builder() 
      .showImageOnLoading(R.drawable.pattern) 
      .bitmapConfig(Bitmap.Config.RGB_565) 
      .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
      .build(); 
    mActivity = activity; 
    mInflater = activity.getLayoutInflater(); 
} 

///////blah blah blah 

class ViewHolder { 

    public ImageView mApartmentImage; 

} 

///////blah blah blah 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    FavouriteApart apartment = mFavouriteApartsList.get(position); 
    ViewHolder vHolder; 
    View view = convertView; 

    if (view == null) { 
     view = mInflater.inflate(R.layout.apartment_favourite_last_seen_object_row, null); 
     vHolder = new ViewHolder(); 
     vHolder.mApartmentImage = (ImageView)view.findViewById(R.id.apartament_image_view); 
     view.setTag(vHolder); 
    } else 
     vHolder = (ViewHolder)view.getTag(); 

    mImageLoader.displayImage(apartment.getURL(), vHolder.mApartmentImage, mImageOptions); 

    return view; 
} 

내 레이아웃 apartment_favourite_last_seen_object_row : 나는했습니다

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
      getApplicationContext()).threadPoolSize(4).memoryCache(new LruMemoryCache(2*1024*1024)) 
      .build(); 
    ImageLoader.getInstance().init(config); 

:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/search_fragment_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="@dimen/search_default_margin" 
    android:descendantFocusability="blocksDescendants" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 

     <ImageView 
      android:id="@+id/apartament_image_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:src="@drawable/pattern" /> 
    </RelativeLayout> 
</RelativeLayout> 

이 내 유니버설 이미지 로더를 구성하는 방법입니다 피카소를 시험해 보았는데 똑같은 문제가 있었기 때문에 나는 거의 추억에 남을 가능성이 없지만 기다려, 왜? 나는 DiscCache 만 사용하여이 문제를 겪었으므로 아마도 서로 연결되어 있지 않을 수도 있습니다. 나 좀 도와 줄 수있어?

UPDATE 나는 레이아웃에서 패턴 이미지를 제거하고 지금은 InflateException하지만 이상한 OutOfMemoryError가이 없습니다. 그러나 예를 들어 디스크에 내 이미지 만 캐시하면 어떻게 가능합니까? 내가 삼성에 내 응용 프로그램을 디버깅 할 때

08-21 10:38:16.440: E/dalvikvm-heap(19619): Out of memory on a 4194320-byte allocation. 
08-21 10:38:16.861: E/dalvikvm-heap(19619): Out of memory on a 4194320-byte allocation. 
08-21 10:38:16.901: E/AndroidRuntime(19619): FATAL EXCEPTION: GLThread 31270 
08-21 10:38:16.901: E/AndroidRuntime(19619): Process: com.ready4s.bookapart, PID: 19619 
08-21 10:38:16.901: E/AndroidRuntime(19619): java.lang.OutOfMemoryError 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at android.graphics.Bitmap.nativeCreate(Native Method) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at android.graphics.Bitmap.createBitmap(Bitmap.java:903) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at android.graphics.Bitmap.createBitmap(Bitmap.java:880) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at android.graphics.Bitmap.createBitmap(Bitmap.java:847) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at opl.a(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at opp.a(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at opp.a(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at opp.b(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at oow.a(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at ope.a(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at okm.a(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at ojx.a(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at ojx.b(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at otq.k(Unknown Source) 
08-21 10:38:16.901: E/AndroidRuntime(19619):  at otq.run(Unknown Source) 
+0

'threadPoolSize (20)'이 너무 많습니다. 5이면 충분하다고 생각합니다. – NOSTRA

+0

나는 가능한 모든 옵션을 시도해 왔지만 InflateExcetpion을 가진 5 개의 스레드로도 시도했습니다. – Roval

답변

1

는하지만 (S4/갤럭시 탭 3/갤럭시 노트 8.0) 로그 캣은 일부로 ~ 당신은 할당하려는 Out of memory on a 30355216-byte allocation

나에게 힙 공간 30MB의를 제공합니다 레이아웃을 팽창시키는 것. 이것은 거의 작동하지 않습니다. 나는 그것이 UIL이 인플레이션 과정에 관여하지 않기 때문에 그것이 UIL과 직접 관련이 있다는 것을 알지 못합니다.

대신이 코드는 @drawable/pattern에서 오는 것으로, 레이아웃의 16 번 줄과 연결되어있어 중요한 메모리를 사용할 수있는 유일한 곳입니다.

+0

그건 뭔가있어. 이제 InflateException은 없지만 OutOfMemoryError는 있습니다. 그래도 이미지를 캐시하면 어떻게 될까요? 나는 내 질문을 업데이트 할 것이다. – Roval

+0

실례합니다. 몇 가지 옵션을 변경했으며 현재 작동 중입니다! 그 패턴은 문제의 원인이었습니다. 큰! – Roval

+0

@Roval 당신이 변경 한 밀 변화를 아는가? – Devon