我试图在我的片段中保存我的视图状态,但我担心我会泄露我的活动。我正在做的是:

@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;
   }
}

我很担心,因为我知道所有的视图都包含在一个上下文中,我不知道它是活动上下文还是应用程序上下文(如果从膨胀器中膨胀)。也许实际地创建视图并使用getActivity().getApplication()设置其属性比使用充气器更好。我希望能得到任何反馈。
谢谢!
编辑:已确认活动泄漏,尽管此代码工作良好,但不要这样做:*(

最佳答案

我试图在我的片段中保存我的视图状态,但我担心我会泄露我的活动。
使用onSaveInstanceState()(在片段中)和onRetainConfigurationInstance()(在活动中)跨配置更改维护“视图状态”。我不太确定你可能指的是其他什么“观点状态”。
我很担心,因为我知道所有的视图都包含在一个上下文中,我不知道它是活动上下文还是应用程序上下文(如果从膨胀器中膨胀)。
由于使用Application进行视图膨胀似乎效果不好,您应该从Activity进行膨胀。因此,这些视图将引用那些使它们膨胀的活动。

08-18 18:47