Из своего собственного опыта могу сказать, что в большинстве случаев лучше использовать Activity
в качестве Context
, чем getApplicationContext()
при работе с AsyncTask
.Это связано с тем, что в большинстве случаев вам потребуется доступ к участникам из вашей активности, и вам будет разрешено делать это только в том случае, если в вашей AsyncTask есть ссылка на действие.
Чтобы ответить на мой вопрос о том, как избежать detach()
позвольте мне сказать, что в этом случае вы можете избежать этого или просто сделать это без каких-либо проблем, как @CommonsWare заявляет в своем ответе .Итак, исходя из того, что он говорит, мы уверены, что мы не получим NullPointerException
, пока активность будет нулевой во время изменения поворота:
onProgressUpdate () и onPostExecute () приостановлены между началомonRetainNonConfigurationInstance () и конец последующего onCreate ()
Если я не ошибаюсь, главное отличие не в явном отсоединении и просто повторном присоединении нового в onCreate()
новогосозданная активность - это то, что вы освобождаете старый экземпляр активности через несколько миллисекунд, когда просто присоединяете.Но окончательное поведение одинаково в обоих случаях!
Надеюсь, это поможет кому-то еще!:)