Я пытаюсь выполнить действие входа с помощью Retrofit 2.0 с помощью Dagger 2
Здесь, как я устанавливаю зависимость RetoFit
@Provides
@Singleton
Retrofit provideRetrofit(Gson gson, OkHttpClient client) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson)
.client(client)
.baseUrl(application.getUrl())
.build();
return retrofit;
}
Здесь интерфейс API.
interface LoginAPI {
@GET(relative_path)
Call<Boolean> logMe();
}
У меня есть три разных базовых URL-адреса, которые могут войти в систему. Поэтому я не могу установить статический URL-адрес при настройке зависимостей Retrofit. Я создал методы setUrl() и getUrl() класса Application. После входа в систему я устанавливаю URL-адрес приложения перед вызовом вызова API.
Я использую ленивую инъекцию для такой модификации
Lazy<Retrofit> retrofit
Таким образом, кинжал вводит зависимость только тогда, когда я могу вызвать
retrofit.get()
Эта часть работает хорошо. Я получил URL-адрес, чтобы модифицировать зависимость. Однако проблема возникает, когда пользователь вводит неверный базовый url (скажем, mywifi.domain.com), понимает его неправильно и меняет его (скажем, на mydata.domain.com). Поскольку Кинжал уже создал зависимость для модификации, он больше не будет делать этого. Поэтому мне нужно снова открыть приложение и ввести правильный URL-адрес.
Я читал разные сообщения для настройки динамических URL-адресов на "Дооснащение" с помощью кинжала. В моем случае ничего хорошего не получилось. Мне что-то не хватает?