2015-02-05 2 views
0

У меня есть приложение, в котором пользователь отправляет регистрационную форму, , когда он отправил данные на сервер и , для связи с ним.Показать диалог выполнения до тех пор, пока условие не будет истинным или не закончится

В связи с этим у меня есть целое поле с именем состояние.
значение состояния является: 1 для подключения, 2 для подключенного и 0 для неудачного.

Я хочу показать диалог пользователя шоу Connecting ..., а затем проверить состояние подключения , если его возвращение 0 или 2 закрыть диалоговый и показать сообщение, относящееся еще, если он не изменится после 15 sec отмените диалог и измените состояние на 0!

Как я могу сделать эту логику?

+0

что вы пробовали? или прямо запросить код? –

+0

Я не уверен, где и как я могу начать! –

+1

Я предполагаю, что вы хотите реализовать логику тайм-аута. Возможно, этот вопрос (http://stackoverflow.com/questions/7882739/android-setting-a-timeout-for-an-asynctask) может помочь вам. –

ответ

1

Я предполагаю, что вы используете сеть, в которой вы используете Asynctask. В этом случае вы можете использовать методы onPreExecute и onPostExecute.

Для получения дополнительной информации о сетевых вызовах и Asynctasks, пожалуйста, прочтите http://developer.android.com/training/basics/network-ops/connecting.html. Однако я дал краткое объяснение.

При создании диалогового окна или инициализирует его в OnCreate метод (или нечто подобное), вы можете вызвать описанные ниже методы, чтобы показать и скрыть диалоговое окно при запуске вызова и завершает

onPreExecute() { 
    dialog.show(); 
} 

onPostExecute(Object result) { 
    dialog.dismiss(); 
} 

Вы можете также измените пользовательский интерфейс из doInBackground с помощью onProgressUpdate(). Это позволит вам вызвать диалог, выполнив логику в doInBackground, вызвав метод publishProgress(). Точное место, вы должны вызвать метод я не уверен, потому что я не полностью понимаю вашу большую картину, но я надеюсь, что это поможет вам по пути

+0

благодарит за ответ! но я использую async-задачу для моего подключения, и я изменяю состояние в 'onPostExecute', моя проблема в том, что я хочу проверить состояние, когда его изменение до 15 секунд показывает диалог пользователю, что он зарегистрирован или какая-либо ошибка, или показать ошибку сообщение через 15 секунд –

+0

Я изменил свой ответ с помощью метода, который позволит вам изменить диалог на полпути через вызов doInBackground –

+0

, как вы говорите ** на полпути **, моя проблема находится в другой половине: D –

0

Это один way.You может также использовать AsyncTask.onCancelled()

public class TestActivity extends Activity{ 
    private Dialog dialog; 
@override 
protected void onCreate(Bundle bundle){ 
    //relevant activity code. 
    TestAsync ta=new TestAsync().execute(); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      ta.cancel(); 
      if(dialog!=null) 
       dialog.dismiss(); 
     } 
    }15*1000); 

} 


public class TestAsync extends AsyncTask<Void, Void, Void> { 




@Override 
protected void onPreExecute() { 
    // TODO Auto-generated method stub 
    super.onPreExecute(); 
    //create your dialog here 

} 

@Override 
protected void onPostExecute(Void result) { 

    if(dialog!=null){ 
     dialog.dismiss(); 
    } 
} 

@Override 
protected Void doInBackground(Void... params) { 
    //relevant AsyncTask code 
} 


} 

} 
Смежные вопросы