問題
やあ、
ユーザーがいくつかの写真とそれらが画面に表示される時間を指定するアプリケーションを開発しています.そのため、小さなアニメーションのようなものを作成したり、画像を短時間表示したりすることがあります.問題は、しばらくすると、画像がプレビューされるべきときにプレビューされず、数ミリ秒のエラーが発生します。私が開発しているアプリケーションでは時間が重要なので、問題の可能性について助けてください。
コード
それがどのように機能するかを説明しましょう.私は自分のウェブアプリから写真を撮り、それらをHashMapに保存します.
Bitmap image = ImageOperations(url,String.valueOf(frameNum) + ".jpg");
ImageMap.put(String.valueOf(frameNum), image);
Mathod ImageOperations は次のようになります。
private Bitmap ImageOperations(String url, String saveFilename) {
try {
Display display = getWindowManager().getDefaultDisplay();
InputStream is = (InputStream) this.fetch(url);
Bitmap theImage = BitmapFactory.decodeStream(is);
if (theImage.getHeight() >= 700 || theImage.getWidth() >= 700) {
theImage = Bitmap.createScaledBitmap(theImage,
display.getWidth(), display.getHeight() - 140, true);
}
return theImage;
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
そこで後でユーザーが指定したときにUIを更新するスレッドを実行します.それを更新する方法はこれです.
public void setPictures(int NumOfFrame) {
if (frameArray.get(NumOfFrame - 1).frame_pic.contains("n/a") != true) {
ImagePlace.setImageBitmap(ImageMap.get(String.valueOf(NumOfFrame)));
} else {
ImagePlace.setImageDrawable(null);
}
}
イメージを更新した後、スレッドをスリープ状態にし、再度実行するとスレッドが更新されます。問題を引き起こす何かがありますか?それはガベージ コレクションと関係がありますか?
前もって感謝します