2016-01-08 6 views
0

Я работаю с заставкой, но делаю сетевой вызов на заставке, чтобы данные были готовы на главном экране к тому времени, когда пользователь доберется туда.Держите экран активным в течение x секунд

Как только сетевой вызов завершен, он переходит на следующий экран, я хотел бы, чтобы заставка была открыта, хотя в течение как минимум x секунд, даже если сетевой вызов занял пару мс, потому что когда сетевой вызов равен ms, тогда всплеск экрана даже не видно.

Я знаю, как сделать задержку заставки в течение х секунд, но хотелось бы, чтобы сетевой вызов включался в эти х секунд, а не время вызова сети + количество секунд.

Спасибо

+0

через x секунд - если завершение работы в сети завершено, продолжайте до завершения вызова. Что-то вроде того? – Stultuske

+0

Показывать анимацию загрузки, пока данные не будут готовы, когда данные будут готовы показать следующий экран. Сделайте сетевой вызов в AsyncTask. он имеет все необходимые функции, такие как onPreExecute(), onPostExecute(), onProgressUpdate() и doInBackground() – EagleEye

+0

@Stultuske yea, как это. – x10sion

ответ

1

Используйте Handler в боковой onPostExecute() метод. Когда ваш сетевой вызов завершен, обработчик вызова, он будет ждать х секунд, а затем после перехода к другому действию.

getActivity().runOnUiThread(new Runnable() { 
@Override 
public void run() { 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      startActivity(new Intent(this, NextActivity.class)); 
     } 
    }, x);// here x is time in millisecond 1 second = 1000 millseconds 

} }); 

Это, безусловно, поможет вам.

+0

Это то, что я знаю, как это сделать, но я не хочу, чтобы время сетевого вызова говорило, что для аргументов ради 1сек, а время заставки, которое я бы хотел, составляет 3 секунды. Опция, которую вы дали мне, сделает общее время экрана 4 секунды, как показано на 3 секунды, которые я хочу. Я хотел бы, чтобы время вызова сети включалось в 3 секунды времени отображения? Надеюсь, что имеет смысл – x10sion

+0

Затем используйте couterTimer для этого. – Shane