2

SDCard のフォルダから ImageSwitcher にいくつかの画像を読み込もうとしています。ランナブルを作成してループで実行し、画像が次々に表示されるようにします。

 final ImageSwitcher imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher1);
             imageSwitcher.postDelayed(
                     new Runnable() {

                         @Override
                         public void run() {
                             i++;

                             File dir = new File("/sdcard/Wallpapers/My Wallpapers");
                             final File file[]=dir.listFiles();

                                 imageSwitcher.setImageURI(Uri.fromFile(file[i]));
                                 imageSwitcher.postDelayed(this, 2000); 


                         }
                     },
                     2000);

一部の画像は正常に動作し、しばらくすると「メモリ不足」の例外が原因でアプリがクラッシュします。

このコードを次のすぐ下に配置して、メモリの問題を解決しようとしました。

"imageSwitcher.postDelayed(この, 2000);"

これは私がそこに置いたコードでした:

ImageView v = (ImageView)imageSwitcher.getNextView(); 
BitmapDrawable bd = (BitmapDrawable) v.getDrawable(); 
Bitmap b = bd.getBitmap();
b.recycle();

この強制により、Nullpointer 例外でアプリが閉じられます。

このメモリの問題を処理する方法を知りたい..またはどこが間違っているのでしょうか?

4

0 に答える 0