Ham*_*eni 0 android memory-leaks android-fragments android-activity
我想知道是否有一个托管静态引用Fragment或者Activity是否可以?通过托管我的意思是在相关的生命周期回调上释放静态引用.请考虑以下代码:
public class StaticReferencedFragment extends Fragment {
public static StaticReferencedFragment instance;
public StaticReferencedFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_static_referenced, container, false);
}
@Override
public void onStart() {
super.onStart();
instance = this;
}
@Override
public void onStop() {
super.onStop();
instance = null;
}
}
Run Code Online (Sandbox Code Playgroud)
我是否有冒泄漏Fragment/Activity物体的风险?
我是否有冒泄漏Fragment/Activity对象的风险?
是.例如,当您的片段可见时,未处理的异常将绕过您的生命周期方法并导致您无法null退出该static字段.
除此之外,还不清楚这会给你带来什么:
托管此片段的活动可以简单地在常规字段中保留片段
活动中的其他片段既不知道也不关心这个片段是否存在(片段应该担心自己和他们的活动,而不是对等片段)
其他组件(如服务和其他线程)既不知道也不关心整个活动是否存在,更不用说这个片段(使用事件总线或其他松散耦合的通信模式)