Я обнаружил, что в Android очень важно, чтобы Activity (и большинство других классов) не имели ссылок на них в статических переменных.Я стараюсь избегать их любой ценой, они любят вызывать утечки памяти.Но есть одно исключение, ссылка на объект приложения, который, конечно, Context
.Удержание ссылки в статическом виде на это никогда не приведет к утечке памяти.
Итак, что мне делать, если мне действительно нужен глобальный контекст для ресурсов, это расширить объект Application и добавить статическую функцию get для контекста.
In the manifest do....
<application android:name="MyApplicationClass" ...your other bits....>
А на Яве ....
public class MyApplicationClass extends Application
{
private Context appContext;
@Override
public void onCreate()
{//Always called before anything else in the app
//so in the rest of your code safe to call MyApplicationClass.getContext();
super.onCreate();
appContext = this;
}
public static Context getContext()
{
return appContext;
}
}