Renaming helps sometimes to prevent such accidents, for instance if
you know the task should always be created from an activity you can do
like this:

*public class MyAsyncTask extends AsyncTask<...> {*
*  private Context appContext;*
*
*  public MyAsyncTask(Activity activity) {*
*    appContext = activity.getApplicationContext();*
*  }*
*  ...*
*}*

On 10 Aug, 05:02, Zsolt Vasvari <zvasv...@gmail.com> wrote:
> Yeah, this is what I do and works fine, though I hate it that I cannot
> declare the member variable as an "ApplicationContext" and instead
> having to declare it as a Context.  The reason I hate this is that I
> cannot provide a compile time checking so that I don't accidentally
> hold onto the the Activity context.   I think ApplicationContext
> should have been a base interface and Context should have just
> extended that.
>
> On Aug 9, 10:28 pm, Streets Of Boston <flyingdutc...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Instead of holding on to the Activity in the AsyncTask, just hold on to its
> > application-context:
>
> > *public class MyAsyncTask extends AsyncTask<...> {*
> > *  private Context context;*
> > *
> > *
> > *  public MyAsyncTask(Context context) {*
> > *    this.context = context.getApplicationContext();*
> > *  }*
> > *  ...*
> > *}*
>
> > If you use the passed context just to get strings and such from the
> > resource-manager, this should work fine.

-- 
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