Я просмотрел некоторые статьи и некоторые другие ответы на вопросы stackoverflow, и я пришел к выводу, что вы не получите mContext == null
до тех пор, пока вы не назначите ноль, или действие не завершится или не будет уничтожено до того, как асинхронная задача сможет завершить работу. .
Итак, когда вы используете mContext.clear();
, вы не делаете mContext
нулевым, вы просто очищаете этот ссылочный объект, и его вызов не приведет к постановке объекта в очередь для GC. Так что вы получите только mContext.get() == null
true после того, как вы очистите ссылки следующим образом.
@Override
protected void onPostExecute(Object object) {
super.onPostExecute(object);
if (mContext.get() != null) {
mContext.clear();
}
Log.d("MG-Context", mContext.get() == null ? "Yes" : "No");
}
Пожалуйста, загляните в эту статью здесь для большей информации:
https://medium.com/google-developer-experts/finally-understanding-how-references-work-in-android-and-java-26a0d9c92f83