我使用下面的代碼在每一個ViewGroup中去除孩子的:安卓:無法銷燬活動
protected void onDestroy() {
super.onDestroy();
this.liberarMemoria();
}
public void liberarMemoria(){
imagenes.recycleBitmaps();
this.unbindDrawables(findViewById(R.id.RelativeLayout1));
System.gc();
}
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
,其視圖:R.id.RelativeLayout1是一個ListView。
但這樣做我都設有例外:
E/AndroidRuntime(582): java.lang.RuntimeException: Unable to destroy activity {...}: java.lang.UnsupportedOperationException: removeAllViews() is not supported in AdapterView
我該如何解決這個問題?
任何想法爲什麼AddapterView不支持此操作?我無法在AdapterView的官方參考資料中找到任何關於它的內容。 – r1k0
@ r1k0,是的,這是因爲AdapterView在內部管理其子級。您無法添加/刪除它們,因爲這可能會破壞其內部狀態。 – inazaruk