Нормально ли передавать контекст множеству методов? - PullRequest
1 голос
/ 20 апреля 2019

Я использую различные объекты (например, большое растровое изображение) во многих действиях, поэтому я создал класс с именем DataHolder, который содержит множество этих общих объектов в качестве статических объектов.

Тем не менее, я также часто использую общие предпочтения, поэтому этот класс данных также содержит один класс вспомогательного класса общих предпочтений, называемый Shop.

Это в сочетании с общим растровым изображением и т. Д. Приводит к тому, что мне приходится передавать контекст каждому отдельному методу, который использует Shop! У меня, вероятно, есть объект контекста в качестве аргумента для 50% моих методов, что довольно раздражает.

Нормально ли много передавать контексты?

Как я могу улучшить свою структуру данных?

1 Ответ

0 голосов
/ 20 апреля 2019

Вы можете рассмотреть глобальный ApplicationContext, который может служить вашей цели для загрузки объекта DataHolder. Обычно я не использую такие контексты, однако, по моему мнению, ваша ситуация имеет смысл использовать глобальный контекст приложения.

Чтобы достичь этого, вы можете рассмотреть возможность использования следующего класса в вашем проекте.

import android.content.Context;
import android.support.multidex.MultiDexApplication;

public class MyApplication extends MultiDexApplication {

    private static MyApplication myApplicationInstance;

    public static MyApplication getMyApplicationInstance() {
        return myApplicationInstance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        myApplicationInstance = this;
    }

    public static Context getAppContext() {
        return getMainApplicationInstance().getApplicationContext();
    }
}

И добавьте этот класс Application к вашему AndroidManifest.xml под тегом application, как показано ниже.

<application
    android:name=".MyApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <!-- Your activity declarations go here-->

</application>

Следовательно, вместо передачи Context, вы можете получить контекст, предоставленный из одного пробела и, следовательно, улучшить структуру данных. Надеюсь, это поможет!

...