безопасно ли использовать stati c inteface в классе приложения? - PullRequest
0 голосов
/ 24 января 2020

Есть ли проблемы с использованием этих классов? Создает ли этот интерфейс stati c какие-либо проблемы с классом приложения позже?

public class App extends Application {
private static KareezAPI apiService;
private InternetConnectionListener mInternetConnectionListener;
public static final int DISK_CACHE_SIZE = 10 * 1024 * 1024; // 10 MB
public void setInternetConnectionListener(InternetConnectionListener listener) {
    mInternetConnectionListener = listener;
}

public void removeInternetConnectionListener() {
    mInternetConnectionListener = null;
}

public KareezAPI getApiService(Activity activity) {
    if (apiService == null) {
        apiService = provideRetrofit(KareezAPI.BASE_URL,activity).create(KareezAPI.class);
        }
    return apiService;
}
                                   }

это интерфейс:

public interface KareezAPI{
String BASE_URL="https://baseurl.heroapp.com/";
@POST("register")
Call<RegisterResponse> RegisterUser( @Body RegisterData registerData);

@POST("login")
Call<RegisterResponse> LoginUser(@Body LoginData loginData); public interface LoginUserCallback{
    public void onResponse(Call<RegisterResponse> call, Response<RegisterResponse> response);
    public void onFailure(Call<RegisterResponse> call, Throwable t);
}


}

, и это использование этого интерфейса и класса приложения

((App) activity.getApplication()).getApiService(activity).LoginUser(loginData).enqueue(new 
                                               Callback<RegisterResponse>() {
        @Override
        public void onResponse(@NonNull Call<RegisterResponse> call, @NonNull 
             Response<RegisterResponse> response) {
            loginUserCallback.onResponse(call, response);
        }

        @Override
        public void onFailure(@NonNull Call<RegisterResponse> call, Throwable t) {
            loginUserCallback.onFailure(call, t);
        }
    });

1 Ответ

1 голос
/ 24 января 2020

Для меня нет смысла добавлять Api logi c в класс Application. Что вы можете сделать, это использовать Retrofit в вашем KareezAPI интерфейсе и написать что-то вроде:

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

KareezAPI service = retrofit.create(KareezAPI.class);

Затем, когда вы захотите его использовать, напишите

KareezAPI.service.LoginUser().enqueue()...

где угодно тебе нравится.

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