2012-05-10 46 views
2

大家好!大位圖並不總是創建

我繪製了一個基於我的應用程序中的一些數據的情節。情節是與滾動和縮放。我在MyMainFragment.onActivityCreated()中爲此創建了2個位圖。

if (bitmaps[0] != null) 
     { 
     return; 
     }  

final int deviceWidth = getResources().getDisplayMetrics().widthPixels; 
      final int deviceHeight = getResources().getDisplayMetrics().heightPixels; 
      final int deviceMaxDim = Math.max(deviceHeight, deviceWidth); 

      bitmaps[0] = Bitmap.createBitmap(
      deviceMaxDim * 2, 
      deviceMaxDim * 1, 
      Bitmap.Config.ARGB_8888); 

      bitmaps[1] = Bitmap.createBitmap(
      bitmaps[0].getWidth(), 
      bitmaps[0].getHeight(), 
      bitmaps[0].getConfig()); 

因爲我使用的繪圖算法,我需要2個位圖,而不僅僅是1個。在華碩變壓器上運行該程序,以像素爲單位的bmp大小爲1280 * 2 * 1280,因此字節大小爲1280 * 2 * 1280 * 4。當我從Eclipse運行程序時,一切正常。但是,當我像平板電腦的普通用戶一樣啓動它時,它會每隔兩次崩潰。

當我從Eclipse啓動我的應用程序時,發生了什麼情況,它允許它運行,並且我可以按照相同的步驟以編程方式執行,以便在正常啓動時不會崩潰?或者我應該使用一些其他的繪圖算法(可能類似OpenGL)?

非常感謝。

+0

http://code.google.com/p/android/issues/detail?id=10821可能會有幫助。 – stacker

+0

非常感謝,堆垛機!這看起來非常接近我的情況,儘管我的設備上的Android版本是4.0.3。 – RobinBobin

回答

1

解決方案很簡單。我在我的代碼中創建了一個Canvas,名爲Canvas#setBitmap(bitmaps [?]),但沒有意識到,我必須調用Canvas.setBitmap(null)來釋放引用。