прежде всего, я начинающий в мире андроидов, поэтому, пожалуйста, извини меня, если это глупый вопрос..
Я пытаюсь сделать следующее:
- Включить мобильные данные
- Подождите 10 секунд
- а. проверьте, получил ли мобильный IP-адрес (данные успешно подключены)
б. если не подключено, отключить данные
с. Перейдите к шагу 1
И эти шаги с 1 по 3 выполняются в цикле For для пользователя. Количество попыток.
Теперь моя проблема: я застрял на шаге № 2.
Я не могу выполнить waitfor(int seconds)
. Я попытался использовать метод Runnable PostDelayed, но он не дает мне требуемого результата.
for(retry = UserChoice; retry > 0 && !isDataAvailable ; retry -- ){
enableInternet()
delay(10)
isDataAvailable = GetInternetAvailibility()
if(!isDataAvailable){
disableInternet()
}
}
Я попытался поместить isDataAvailable = GetInternetAvailibility()
в postDelayed
обработчика, но он вызывает enableInternet()
disableInternet()
для выполнения одновременно, в то время как isDataAvailable = GetInternetAvailibility()
запускается после задержки.
Я вижу из журналов, что enableInternet()
выполняет для UserChoice
количество раз без каких-либо задержек.
Thread.sleep(10000) просто замораживает пользовательский интерфейс в течение 10 секунд... Как мне это достичь?
EDIT: Позвольте мне понять:
public void onClick(View v) {
// Perform action on click
for(i=0; i<3; i++ ){
System.out.println("Before..");
delay(5);
System.out.println("after..");
}
}
public void delay(int seconds){
milliseconds = seconds * 1000;
runOnUiThread(new Runnable() {
@Override
public void run() {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
System.out.println("XXX"); //add your code here
}
}, milliseconds);
}
});
}
Теперь, когда я нажимаю кнопку, я могу видеть в журналах, что System.out печатает сообщение как:
До
после
До
после
До
после
XXX
XXX
XXX
Но я хочу:
До
XXX
После.
До
XXX
После.
До
XXX
После.