Хранение статического класса приложения - утечка памяти? - PullRequest
0 голосов
/ 10 июля 2019

В приведенном ниже примере кода из моего проекта Android Studio предупреждает меня, что это утечка памяти.Android Studio подходит?Класс приложения одиночный, поэтому я подумал, что это хорошо, чтобы хранить его в моем классе.Каковы ваши предложения?

public class MyApi {

    private static MyApi instance ; // Compiler gives the following warning:  Do not place Android context classes in static fields (static reference to MyApi which has field context pointing to Context); this is a memory leak

     private Context context; // i need this context inside MyApi class.

    public static MyApi getInstance() {
        return instance;
    }

    public static void init(Context context) {
        instance = new MyApi(context);
    }
    private MyApi(final Context context) {
        this.context = context;
    }
}

public class App extends Application{
    @Override
    public void onCreate() {
        MyApi.init(this);
    }
}

1 Ответ

1 голос
/ 10 июля 2019

Линт видит, что вы храните Context в static.Он не знает, какой это тип контекста.

Если бы это был контекст активности, то было бы очень легко просочиться.Контекст приложения - это одноэлементная область приложения, и он не вызывает утечку.Вы можете игнорировать или подавлять это предупреждение, если хотите.

static состояние является своего рода анти-паттерном, поэтому большую часть времени вам лучше избегать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...