我有一个静态工厂方法,它将返回一个片段对象。
private static String final A1="a1";
private static String final A2="a2";
private static String final A3="a2";
private static String final A4="a4";
public static MyFragment newInstance(int index) {
MyFragment f = new MyFragment();
Bundle args = new Bundle(4);
args.putInt(A1, index);
args.putInt(A2, index);
args.putInt(A3, index);
args.putInt(A4, index);
f.setArguments(args);
return f;
}
并在
oncreate()
中获取它getArguments().getInt(A1, 0);
现在我的问题是:我正在创建几个
MyFragment
对象,如下所示List<Fragment> fragments = new ArrayList<>();
fragments.add(MyFragment.newInstance(defaultId));
int i = 1;
for (Categories categories : mCategories) {
String id = categories.getCategory_id();
String name = categories.getCategory_name();
// String slno = categories.getSlno();
fragments.add(MyFragment.newInstance(defaultId));
Titles[i] = name;
i++;
}
由于变量A1-A4为静态变量,是否可以清除 Activity 时的内存破坏?或者我需要在onDistroy中将变量分配为
null
?请帮我澄清一下疑问吗?
最佳答案
加载类时会分配一个静态变量,并且只有在释放加载了该类的类加载器时,才会对其进行垃圾回收。
当或仅当其定义的类时,才可以卸载该类或接口
垃圾回收器类可以回收装载程序,并且
引导加载程序加载的接口可能无法卸载。
查看类似问题Are static fields open for garbage collection?的答案