2016-09-16 42 views
0

在我正在開發的應用程序中,我有一個活動,其中分別顯示兩個位圖,ca.bmca.tempBm兩個ImageViews。它工作正常,我的設備上,但在某些設備上產生的OutOfMemoryError試圖原始位圖複製到該位圖,我會在以後修改的時候:Android - 在臨時文件交叉活動上存儲圖像

ca.tempBm = Bitmap.createBitmap(ca.bm); // out of memory error 

我想創建一個臨時文件,而不是保存原始圖像並使用單個位圖進行工作,但臨時文件必須在從Camera活動更改爲下一個活動時保留,並且只有在第二個活動執行時才應銷燬。

我該如何做到這一點?

回答

1

你可以寫一個位圖緩存目錄中:

FileOutputStream outStream = new FileOutputStream(new File(getCacheDir(), "tempBMP")); 
myBitmap.compress(Bitmap.CompressFormat.JPEG, 75, outStream); 
outStream.close(); 

而且在回讀:

Bitmap myBitmap = BitmapFactory.decodeFile(bitmapPath.getAbsolutePath()); 

但你可能會更好只是通過創建一個較小的位圖節省內存,將較大的位圖繪製到較小的位圖的畫布上,然後在活動之間傳遞較小的位圖。