Ответ 1
Если я правильно понимаю ваш вопрос: класс Java WeakReference или SoftReference подходит для такого типа ситуаций. Это позволит вам передать контекст в AsyncTask, не мешая GC при необходимости освободить контекст.
GC более активен при сборе WeakReferences, чем при сборе SoftReferences.
вместо:
FooTask myFooTask = new FooTask(myContext);
ваш код будет выглядеть так:
WeakReference<MyContextClass> myWeakContext = new WeakReference<MyContextClass>(myContext);
FooTask myFooTask = new FooTask(myWeakContext);
и в AsyncTask вместо:
myContext.someMethod();
ваш код будет выглядеть так:
myWeakContext.get().someMethod();