在片段android中查看重用

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来实际创建视图并设置其属性.我将不胜感激任何反馈.

谢谢!

编辑:确认活动泄漏,虽然这段代码工作得很好不要这样做:*(

Com*_*are 2

我正在尝试将我的视图状态保存在我的片段中,但我担心我会泄漏我的活动。

使用onSaveInstanceState()(在片段中)和onRetainConfigurationInstance()(在活动中)跨配置更改维护“视图状态”。我不太确定您可能指的其他“视图状态”。

我很担心,因为我知道所有视图都保留一个上下文,但我不知道它是活动上下文还是应用程序上下文(如果从充气器充气)。

由于使用Applicationfor view 膨胀似乎效果不佳,因此您应该从Activity. 因此,视图将保存对填充它们的 Activity 的引用。