Java AsyncTask是否在片段的onDestroy()和onCreate()回调之间传递任何响应?

Java AsyncTask是否在片段的onDestroy()和onCreate()回调之间传递任何响应?,java,android,android-fragments,android-asynctask,android-orientation,Java,Android,Android Fragments,Android Asynctask,Android Orientation,我知道我来派对有点晚了,在过去的3年里(或者更长的时间),像这样的讨论已经有成千上万次了(不幸的是,大多数讨论都涉及活动而不是片段),但我对一件事很好奇 如果有以下代码段,当屏幕方向更改后调用AsyncTask的回调onError()或onSuccess()时,mFragment是否可以为null?因此,AsyncTask启动后,我旋转设备的屏幕,在某个点上AsyncTask将返回错误或成功。当这种情况发生时,MFFragment可以为null吗 我已经知道在处理活动时不会发生这种情况,因为在调

我知道我来派对有点晚了,在过去的3年里(或者更长的时间),像这样的讨论已经有成千上万次了(不幸的是,大多数讨论都涉及活动而不是片段),但我对一件事很好奇

如果有以下代码段,当屏幕方向更改后调用AsyncTask的回调
onError()
onSuccess()
时,
mFragment
是否可以为null?因此,AsyncTask启动后,我旋转设备的屏幕,在某个点上AsyncTask将返回错误或成功。当这种情况发生时,MFFragment可以为null吗

我已经知道在处理活动时不会发生这种情况,因为在调用前一个实例的
onretainonconfigurationinstance()
和活动的新实例的
onCreate()
之间基本上不会处理任何消息。 不幸的是,当涉及到碎片时,我找不到关于这个规则的任何信息

你们知道这件事吗

谢谢你的回答

public class Fragment extends Fragment {
   private WorkerFragment mWorkerFragment;

   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      mWorkerFragment =(WorkerFragment)getFragmentManager().findFragmentByTag("worker_fragment");
      if (mWorkerFragment == null) {
         mWorkerFragment = new WorkerFragment();
         getFragmentManager().beginTransaction().add(mWorkerFragment, "worker_fragment").commit();
      }
      if (savedInstanceState == null) {
         mWorkerFragment.performAsyncTask();
      }

   private static class WorkerFragment extends Fragment {
      private TypeOfAsyncTask mAsyncTask;
      private Fragment mFragment;
      private Callback mCallback = new Callback() {

         @Override
         public void onError(Error error) {
            // Can mFragment be null here?
            mFragment.onSendRequestError(error);
         }

         @Override
         public void onSuccess(Result result) {
            // Can mFragment be null here?
            mFragment.onSendRequestSuccess(result);
         }
      };

      @Override
      public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setRetainInstance(true);
      }

      @Override
      public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         mFragment = (Fragment) getTargetFragment();
      }

      @Override
      public void onDetach() {
         super.onDetach();
         mFragment = null;
      }

      private void performAsyncTask() {
         mAsyncTask = new TypeOfAsyncTask(mCallback);
         mAsyncTask.execute();
      }
   }
}

对于片段的
ondestory
onCreate
,我不能100%确定。但是,可以保证在片段的
onAttach
onDetach
之间的主线程上不会运行任何其他内容。所以你可以考虑使用它来代替OnCube。