Nat*_*ann 8 android memory-leaks android-fragments android-support-library
我试图在我的片段中保存我的视图状态,但我担心我会泄漏我的活动.这是我在做的事情:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state){
if(mView != null){
View oldParent = mView.getParent();
if(oldParent != container){
((ViewGroup)oldParent).removeView(mView);
}
return mView;
}
else{
mView = inflater.inflate(R.id.fragview, null)
return mView;
}
}
Run Code Online (Sandbox Code Playgroud)
我很担心,因为我知道所有的视图都保留在上下文中,如果从inflater中膨胀,我不知道它是否是Activity上下文或Application上下文.也许最好的做法是使用getActivity().getApplication()而不是使用inflater来实际创建视图并设置其属性.我将不胜感激任何反馈.
谢谢!
编辑:确认活动泄漏,虽然这段代码工作得很好不要这样做:*(
我正在尝试将我的视图状态保存在我的片段中,但我担心我会泄漏我的活动。
使用onSaveInstanceState()(在片段中)和onRetainConfigurationInstance()(在活动中)跨配置更改维护“视图状态”。我不太确定您可能指的其他“视图状态”。
我很担心,因为我知道所有视图都保留一个上下文,但我不知道它是活动上下文还是应用程序上下文(如果从充气器充气)。
由于使用Applicationfor view 膨胀似乎效果不佳,因此您应该从Activity. 因此,视图将保存对填充它们的 Activity 的引用。
| 归档时间: |
|
| 查看次数: |
5124 次 |
| 最近记录: |