我已經編寫了一個應用程序來創建一個地圖活動。從那裏用戶可以切換到菜單並返回到地圖活動。經過這些循環的約10%,出現以下錯誤:Android內存泄漏?位圖超過VM預算錯誤與MapView
02-28 21:35:54.780: E/AndroidRuntime(23502): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
我試過這裏http://www.alonsoruibal.com/bitmap-size-exceeds-vm-budget/和其他各種主題提出的解除綁定可繪製解決方案,但沒有幫助。
唯一有幫助的是通過finish()手動關閉地圖活動,但這會導致不自然的導航行爲。
這裏是我的代碼:
MapActivity類
public class TestMapsForgeActivity extends MapActivity {
View mapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mapView = new MapView(this);
}
@Override
public boolean onCreateOptionsMenu(android.view.Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.map_menu, menu);
return true;
};
@Override
public boolean onOptionsItemSelected(MenuItem item) {
startActivity(new Intent(getApplicationContext(), MenuActivity.class));
return true;
}
}
MenuActivity類
public class MenuActivity extends Activity {
@Override
public boolean onCreateOptionsMenu(android.view.Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
};
@Override
public boolean onOptionsItemSelected(MenuItem item) {
startActivity(new Intent(getApplicationContext(), TestMapsForgeActivity.class));
return true;
}
}
我不明白的是,垃圾回收器顯然不破壞MapActivity除非正確我用finish()關閉它。但是當應用程序需要更多內存時,不應該由android本身調用finish()。
有沒有人在這個問題上有一些想法?
在此先感謝!
非常感謝,這有助於。 – Damnum 2012-02-29 20:26:12