CraigsRace wrote:
> I'm obviously missing something, as I thought the Thread would be the
> only thing holding onto the old Activity (as it is now).  When the
> Thread dies, the old activity would be garbage collected (as it does
> now).  All forwarding would be done via the Activity class.

Correct, but what Ms. Hackborn wrote was:

>> And that still means it needs to keep the old activity around so the
thread
>> can use it.

So, given that, imagine this scenario:

-- Activity instance A starts
-- You fork a background thread, holding onto A, that will run for 30
seconds, as a result of a button click
-- At 0:02 into the thread, the user rotates the screen
-- Android creates a new activity instance (B), and has A point to B for
the purposes of your call forwarding stuff
-- At 0:05 into the first thread, you fork another thread, holding onto
B, that will run for 30 seconds, as a result of a button click
-- At 0:07 into the thread, the user rotates the screen again (bear in
mind that for non-QWERTY devices, it doesn't take much to cause the
screen to rotate)
-- Android creates a new activity instance (C), and has B point to C for
the purposes of your call forwarding stuff

At this point, we have three total instances of the activity running (A,
B, C), and we still have 23 seconds of the original 30 to work with.
Factor in the possibility of developers having threads that run for 30
days instead of 30 seconds.

In your specific example, coded properly, the forwarding mechanism may
work fine, if your thread is very short lived (a couple of seconds),
won't get started again, and your activities are not terribly complex.
It's when you start to violate those assumptions (coded improperly,
lotsa threads, long threads, complex activities) that memory issues
become more painful.

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://twitter.com/commonsguy

Warescription: Three Android Books, Plus Updates, $35/Year

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to