Привет, я использую шаблон MVP в своем приложении для Android. У меня есть некоторый статический метод в классе приложения, который проверяет статус подключения.Это хорошая идея использовать статическую переменную в презентаторе, которая объявлена в моем классе приложения
public class AppModule extends Application {
public static boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
}
Я использую этот статический метод уровня приложения в презентаторе для проверки подключения к Интернету.
public class ActivityWallPresenter {
private CreatrixTestCall creatrixTestCall;
@Inject
public ActivityWallPresenter(CreatrixTestCall creatrixTestCall) {
this.creatrixTestCall = creatrixTestCall;
}
public void loadPosts(ActivityWallFragmentContract activityWallFragment) {
this.fragmentContract = activityWallFragment;
if (AppModule.isNetworkAvailable()) {
fragmentContract.showProgress();
callWeb();
} else {
fragmentContract.onNetworkDisconnected();
}
}
Это хорошая идея вызвать статический метод? предложите мне другой подход, если нет.
Хотя это просто статический метод, вы можете разместить его здесь, но хорошая методика кодирования заключается в том, чтобы поместить его в отдельный класс, который может быть utils.java или globalMethods.java или любым вашим выбором. –
Зависит от того, что вы определяете как «хорошую идею». Пока вы не назначаете какие-либо переменные статическим членам, я не думаю, что там много вреда. Однако я вижу, что вы используете переменную 'context' в этой статической функции. Если это экземпляр «Activity», этот объект никогда не будет собираться в мусор, вызвав утечку памяти (вид) – 0xDEADC0DE
Это зависит от допущений, которые вы можете внести в свой код. Если вы хотите использовать истинный подход ООП, вам необходимо создать класс, который проверяет подключение по заданному контексту, а затем вводит его в презентаторе. Но если вы можете иметь процедуры в своем коде, то статический метод - лучший подход, я думаю. Второй вопрос заключается в том, где разместить эту статическую функцию. –