Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Weakreference get() method how safe is it? (Android, asynctask)

I am making an Android mobile app. I have a WeakReference to my Activity in the AsyncTask to ensure that it can be garbage collected.

When onPostExecute() gets called, I do

Acitivty activity = mWeakRef.get();

Then I use the activity object to display dialogs to the user etc etc.

My question is, as I am trying to determine which dialog to show and what to do, could my activity object become null? Could it ever become null if the GC runs in between my line of execution? Am I safe to keep using that object from the first get() or do I have to redo get() and check if the value is null right before I use it.

thanks!

like image 250
dnkoutso Avatar asked Aug 13 '11 02:08

dnkoutso


1 Answers

It's safe!
As soon as you assign the result of get() to a variable, you have a strong reference again which blocks gargbage collection for this object as long as the new reference exists.
Of course, after this assignment you need to check if activity is null.

like image 133
didi_X8 Avatar answered Nov 15 '22 18:11

didi_X8