2016-04-01 8 views
1

一部の電話(特にSamsung)では、アプリケーションがOutOfMemoryのエラーを返します。Recycle ImageViewsを避けるOutOfMemoryError

私はチュートリアルで示されている4つのImageViewsを持つViewFlipperを使用します。

私はエラーを解決する方法や画像ビューをリサイクルする方法が見つかっていません。

この

はViewFlipperを管理する方法である:

private void changeBackground(int position) { 

    switch (position) { 

     case 1: 
      mViewFlipper.setDisplayedChild(1); 
      mViewFlipper.setInAnimation(getActivity(), R.anim.anim_clockwise_onboarding); 
      mViewFlipper.setOutAnimation(getActivity(), R.anim.anim_clockwise_inverse_onboarding); 
      break; 

     case 2: 
      mViewFlipper.setDisplayedChild(2); 
      mViewFlipper.setInAnimation(getActivity(), R.anim.anim_clockwise_onboarding); 
      mViewFlipper.setOutAnimation(getActivity(), R.anim.anim_clockwise_inverse_onboarding); 
      break; 

     case 3: 
      mViewFlipper.setDisplayedChild(3); 
      mViewFlipper.setInAnimation(getActivity(), R.anim.anim_clockwise_onboarding); 
      mViewFlipper.setOutAnimation(getActivity(), R.anim.anim_clockwise_inverse_onboarding); 
      break; 

     default: 
      mViewFlipper.setDisplayedChild(0); 
      mViewFlipper.setInAnimation(getActivity(), R.anim.anim_clockwise_onboarding); 
      mViewFlipper.setOutAnimation(getActivity(), R.anim.anim_clockwise_inverse_onboarding); 
      break; 

    } 

} 

方法は、あなたがViewPagerでページを変更するたびに呼び出されます。

@Override 
public void onPageSelected(int position) { 
     changeBackground(mViewPager.getCurrentItem()); 
} 

私に助力してください、事前に感謝してください。

+0

使用している画像のサンプルがありますか?あなたが4枚の画像しか使用していない場合、それらはおそらく巨大であり、サンプリングされる可能性があります。 – Knossos

+0

イメージは65kbと750x1330をとります – dpulgarin

+0

イメージはディスク上に65kbですが、一度解読されるとかなり大きくなる可能性があります。テスト目的で75x133というイメージをサンプリングするとどうなりますか? – Knossos

答えて

2

このためには、イメージを読み込むためのイメージローダーライブラリを使用する必要があります。 あなたは使用することができます。

  1. ユニバーサルイメージ・ローダー
  2. ピカソ
  3. グライド

このライブラリは、ビットマップメモリ​​管理のために使用しており、このライブラリを使用した後、あなたがOutOfMemoryErrorが発生するexeptionに直面していませんでした。

+0

私は通常グライドを使用していますが、この場合、私はそれを考えなかったので事前にロードしなければなりません。試してみます:) – dpulgarin

+0

ユニバーサル画像ローダーを試してみてください。 –

+0

Glideは完璧に機能します!私の目を開いてくれてありがとう! :D – dpulgarin