我正在使用來自Internal Storage的ImageView。流程是:如何知道我的InputStream是否正常工作或具有適當的值
1)檢查文件名內部存儲器中已經存在 2)如果是這樣,在ImageView的 3)如果不是,從URL下載,設置爲位圖的ImageView,並複製使用它作爲位圖流添加到文件中內部存儲
實際的代碼是
try{
InputStream fis = holder.mImageView.getContext().openFileInput("file.png");
tempImageView.setImageBitmap(BitmapFactory.decodeStream(fis));
fileFound = true;
fis.close();
}
catch(IOException e){
try{
FileOutputStream fos = holder.mImageView.getContext().openFileOutput("file.png",Context.MODE_APPEND);
thumbPhotoRef.getStream(
new StreamDownloadTask.StreamProcessor() {
@Override
public void doInBackground(StreamDownloadTask.TaskSnapshot taskSnapshot,
InputStream inputStream) throws IOException {
byte[] buffer = new byte[8192];
int size;
tempImageView.setImageBitmap(BitmapFactory.decodeStream(inputStream));
while ((size = inputStream.read(buffer)) != -1) {
fos.write(buffer, 0, size);
}
fos.close();
// Close the stream at the end of the Task
inputStream.close();
}
});
}
catch(IOException e){
}
}
tempImageView是引用一個ImageView的佈局全局聲明ImageView的處理
羅gic在getStream方法中圖像位圖分配爲: tempImageView.setImageBitmap(BitmapFactory.decodeStream(inputStream));
這實際上工作和圖像在佈局中適當更新。請注意,在這種相同的方法中,相同的輸入流正被寫入指向「file.png」的「fos」FileOutputStream變量。
沒有錯誤或包括在調試中的任何內容,但不知何故,下次打開文件時,應該已經寫入文件,但未能設置ImageView的位圖。而且我確定該文件現在已存在,因爲openFileInput不會找到文件,但找不到異常。
InputStream fis = holder.mImageView.getContext().openFileInput("file.png");
tempImageView.setImageBitmap(BitmapFactory.decodeStream(fis));
任何想法出了什麼問題,或者我如何獲得FIS變量的值,在調試模式下,看它是否實際包含由setImageBitmap是可以理解的任何位圖數據?謝謝