This is worth reading!

---------- Forwarded message ----------
From: Brian Nicholson <bnichol...@mozilla.com>
Date: Wed, Feb 12, 2014 at 11:38 AM
Subject: Activity Context vs Application Context
To: mobile-firefox-...@mozilla.org


A worthy read: http://www.doubleencore.com/2013/06/context/

When using Contexts, there are several different context types
(Application, Activity, Service, etc. -- all mentioned in the link
above). In the front-end code, the Application Context and Activity
Context are the easiest to misuse.

If you're doing anything UI-related, you *must* use the Activity
Context. For example, this line showing a Toast looks innocuous
enough: 
http://hg.mozilla.org/mozilla-central/file/879038dcacb7/mobile/android/base/home/HomeFragment.java#l157.
But when you look at the Context being used, it's actually the
Application Context. Red flag!

On the other hand, when storing Context for long-lived objects
(especially singletons), make sure you don't hold onto the Activity
Context since that can result in memory leaks (An Activity can be
recreated in the same Application instance). Better options are either
a) pass the Activity Context to any methods requiring one, or b) if
only the Application Context is needed, store the Application Context
instead (e.g., 
http://mxr.mozilla.org/mozilla-central/source/mobile/android/base/Tab.java#89).
But be careful not to use this Context for anything UI-related for the
reasons above.

In short, all Contexts are not created equal, so we need to be careful
how we use them.

Brian
_______________________________________________
mobile-firefox-dev mailing list
mobile-firefox-...@mozilla.org
https://mail.mozilla.org/listinfo/mobile-firefox-dev

Reply via email to