On Tue, Jan 24, 2012 at 7:27 PM, Zsolt Vasvari <[email protected]> wrote:
> I honestly don't know/remember why....  Let me turn the question
> around, why are you using getApplicationContext()?
>
> For example, your sendWakefulWork() looks like this, why?
>
>    public static void sendWakefulWork(Context ctxt, Intent i)
>    {
>        getLock(ctxt.getApplicationContext()).acquire();
>        ctxt.startService(i);
>    }

In the end, I am holding onto a WakeLock in a static data member.

You get a WakeLock by asking for one from the PowerManager.

You get the PowerManager from a Context.

Now, it is entirely likely that the WakeLock will never hold a
reference to that Context. But, in case it does, since I'm holding
onto it in a static data member, I want to make sure I'm not leaking a
Context. Since the Application is a natural singleton, I use the
Application to get the PowerManager, to get the WakeLock.

In this case, it's probably paranoia.

General rules of thumb: if you are holding onto something possibly
Context-related from a static data member, use the Application
context. Otherwise, don't.

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

Android Training in DC: http://marakana.com/training/android/

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

Reply via email to