2012-10-03 44 views
0

可能重複:
Android: Strange out of memory issue while loading an image to a Bitmap object
OutOfMemoryError: bitmap size exceeds VM budget :- Android另一個 '位圖大小超過VM預算'

我知道,大約有這麼多的話題媒體鏈接,但不管我嘗試它不」 t似乎工作。

我試過幾個onDestroy技巧,包括回收位圖,把它放到空白等等等等。 不知道我的代碼是否與其他情況有什麼不同?這似乎是這樣... 我使用TouchImageView擴展,所以我可以使用捏縮放所以也許這使得它更復雜?

無論如何,這裏是我的代碼。任何人都可以請指出我可以如何解決這個問題(順便說一句,沒有縮小位圖)?

public class PageActivity extends Activity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.page); 

      Intent parent = getIntent(); 
      int pagenumber = parent.getIntExtra("pagenumber", 1); 
      int resID = getResources().getIdentifier("page"+pagenumber , "drawable", getPackageName()); 

      TouchImageView img = new TouchImageView(this); 
      Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resID); 
      img.setImageBitmap(bitmap); 
      img.setMaxZoom(4f); 

      LinearLayout rootview = (LinearLayout) findViewById(R.id.RootView); 
      rootview.addView(img); 
     } 
    } 
+0

我注意到onDestroy()不是開始調用,因爲我使用了tabhost。所以我嘗試過在其中放入一個ontablistener並以這種方式手動調用ondestroy,但是當活動還沒開始時它就會被調用,所以當我放入recycle()的東西時,我嘗試使用一個循環位圖:S –

+0

我已經制定了一個很好的方法來阻止內存泄漏,所以可以重新打開這個主題,以便我可以發佈它? 我認爲其他人可能會從中受益。 –

回答

0

正如您所說,您已經使用了從裁剪到回收的所有功能,現在也可以嘗試使用WeakReferences。

如果這也沒有幫助,那麼你的代碼中可能會有內存泄漏。

請看到我對同一個問題的答案:bitmap size exceeds Vm budget error android

它是一個通用的答案,與我所提到的所有方法試試。其中一人應該爲你工作:)

謝謝。

+0

弱關聯技巧似乎不起作用 –

+0

嘗試在創建Bitmap時使用BitmapFactory.Options中的所有選項。同樣考慮將位圖縮放到更小的尺寸,因爲它可能佔用太多的內存。 – Shrikant

+0

我已經試過,但然後圖像看起來像廢話。 –

相關問題