在這個官方的博客網站,我看了下面的內存泄漏示例。關於android內存泄露
http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
private static Drawable sBackground;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(this);
label.setText("Leaks are bad");
if (sBackground == null) {
sBackground = getDrawable(R.drawable.large_bitmap);
}
label.setBackgroundDrawable(sBackground);
setContentView(label);
}
引述原崗位「這個代碼是非常快,也非常錯誤的;它泄漏在第一屏幕方向變化所造成的第一個活動時可抽拉連接到一個視圖,在上面的代碼片段中,這意味着drawable有一個對TextView的引用,它本身有一個對活動的引用(Context),它依次引用幾乎所有的東西(取決於)「
我不明白這個部分。在重新創建活動時,將執行onCreate()方法,靜態Drawable對象sBackground將被附加到第二個活動中的新TextView。這意味着對象sBackground將引用新文本視圖而不是第一個活動中的舊文本視圖,從而使第一個活動未引用。
有人能告訴我我的推理哪裏錯了嗎?在此先感謝~~
哎呀,看來這個線程是重複的,有人問正是這裏
Understanding memory leaks in Android application 對不起同樣的事情,我太粗心。
getDrawable(R.drawable.large_bitmap)保留參考 –