我有一个带有1 activity
和7 fragments
的android应用程序。每个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();
}
有一种方法可以销毁片段和其中的所有视图实例吗?
感谢
如果使用viewPager:
@Override
public void onDestroy() {
super.onDestroy();
try {
if (viewPager != null) {
viewPager.removeAllViews();
viewPager = null;
}
} catch (Exception E) {
}
}