public class GenericRetainedFragment extends GenericFragment {
@Bind(R.id.some_button)
Button button;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
}
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
}
}
由于我不知道ButterKnife如何处理unbind方法,更改配置更改,会发生内存泄漏吗?
使用ButterKnife和Retained Fragment这是一个好习惯吗?
答案 0 :(得分:1)
我没有看到保留片段会有任何问题,因为片段的实例应该始终处于“活动状态”,直到它被删除。它不会进入后台堆栈,因此会将其视图销毁并可能重新创建(这是Fragments的正常情况,需要使用ButterKnife的特殊模式)。保留片段的一个实例只有一组视图,除非你做了一些改变。