Definir URL base dinâmico usando Retrofit 2.0 e Dagger 2

Estou tentando executar uma ação de login usando o Retrofit 2.0 usando o Dagger 2

Veja como eu configuro a dependência de Retrofit

@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;     
}

Aqui está a interface da API.

interface LoginAPI {
   @GET(relative_path)
   Call<Boolean> logMe();
}

Eu tenho três URLs base diferentes que os usuários podem fazer login. Portanto, não consigo definir um URL estático ao configurar a dependência de Retrofit. Criei os métodos setUrl () e getUrl () na classe Application. Após o login do usuário, defino o URL em Aplicativo antes de chamar a chamada da API.

Eu uso injeção preguiçosa para modernizar assim

Lazy<Retrofit> retrofit

Dessa forma, Dagger injeta dependência apenas quando posso chamar

retrofit.get()

Esta parte funciona bem. Eu tenho o URL definido para atualizar a dependência. No entanto, o problema surge quando o usuário digita um URL de base errado (por exemplo, mywifi.domain.com), entende que é o errado e o altera (por exemplo, mydata.domain.com). Como o Dagger já criou a dependência para o retrofit, ele não funcionará novamente. Então, eu tenho que reabrir o aplicativo e digite o URL correto.

Eu li postagens diferentes para configurar URLs dinâmicos no Retrofit usando o Dagger. Nada realmente funcionou bem no meu caso. Perco alguma coisa?

questionAnswers(4)

yourAnswerToTheQuestion