我有一个Android应用程序,其中 1 activity
和 7 fragments
。每个fragment
都有一个listview
,具有100-150个视图。
该应用每天运行一次,并因内部内核错误而崩溃:
JNI ERROR (app bug): weak global reference table overflow (max=51200)
Last 10 entries (of 51200):
art/runtime/indirect_reference_table.cc:129] 51199: 0x18d4fe20 android.view.render node
由于该应用生成的视图过多,似乎就像是内存泄漏。
我认为当我用所有视图重新生成片段时会出现问题,似乎视图没有完全销毁。
当我重新生成片段以更新数据时,我使用这种方法:
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
getSupportFragmentManager().beginTransaction().remove(fragment).commitAllowingStateLoss();
}
有一种方法可以销毁片段和其中的所有视图实例吗?
谢谢
答案 0 :(得分:0)
如果使用viewPager:
@Override
public void onDestroy() {
super.onDestroy();
try {
if (viewPager != null) {
viewPager.removeAllViews();
viewPager = null;
}
} catch (Exception E) {
}
}