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 例外でアプリが閉じられます。
このメモリの問題を処理する方法を知りたい..またはどこが間違っているのでしょうか?