я читаю JsonURL и пытаюсь открыть правильное действие, используя результаты из JsonURL, когда JsonURL возвращает ложное или истинное значение, которое, как предполагается, go другой деятельности. Когда я вызываю функцию, чтобы извлечь Json из URL-адреса и вставить его через IF l oop, чтобы выбрать, какое действие следует открыть, оно выбирает неправильное (всегда ложное l oop). я на 100% уверен, что это потому, что HttpConnection не получает достаточно времени для установления sh соединения и получения результатов до вызова Activity.
, так что ...
что возможный способ тайм-аута приложения, чтобы у него было время собрать результаты из JsonURL перед вызовом операторов IF?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// makes the connection with the JsonURL and collect the results
HttpClient.BuildClient();
// this is where it doesn't get enough time to read the result and always gives a boolean result: false
if (HttpClient.RegisteredDevice = true) {
Intent i = new Intent(MainActivity.this, QuestionActivity.class);
startActivity(i);
}
if (HttpClient.RegisteredDevice = false) {
Intent i = new Intent(MainActivity.this, RegistrationActivity.class);
startActivity(i);
}
}
}
public class HttpClient {
public static Boolean RegisteredDevice;
public static void BuildClient(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(JsonUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
JsonApi jsonApi = retrofit.create(JsonApi.class);
Call<Post> call = jsonApi.getPosts("DeviceInfo");
call.enqueue(new Callback<Post>() {
@Override
public void onResponse(Call<Post> call, Response<Post> response) {
if (!response.isSuccessful()){
//textViewResult.setText("Code: " + response.code());
return;
}
RegisteredDevice = response.body().getDeviceExists();
}