私は、バイマップをImageViewに設定するライブラリを使用しています。
ライブラリ: https ://github.com/nostra13/Android-Universal-Image-Loader
imageLoader.displayImage(urlString, imageView, options);
asynctaskを実行し、このビットマップをダウンロードしてimageViewに設定します。問題は、その後、sqliteを使用して保存する必要があることです。
BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
Bitmap photo = bitmapDrawable.getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] imageInByte = stream.toByteArray();
db.updateUser(imageInByte);
db.close();
したがって、imageLoaderがタスクを実行している間、プログラムはダウンロードされたイメージの代わりにデフォルトのイメージを保存します。また、このコードをAsyntask内に配置し、ビットマップをonPostexecute()内に格納してみてください。ライブラリ内でエラーが発生します。
別のライブラリを使用したくないので、ループが適切な場合があります。試してみました。
while (((BitmapDrawable)imageView.getDrawable()).getBitmap() == BitmapFactory.decodeResource(getResources(), R.drawable.ic_stub)) {
Log.d("MyApp", "whileloop");
}
では、画像がダウンロードされて保存されるタイミングを確認するための「待機」/ループを作成するにはどうすればよいですか?