обработчик не работает Android - PullRequest
1 голос
/ 28 ноября 2011

У меня есть функция для запуска сообщений в очереди.Но когда я запускаю это, выполняется только последний обработчик, а не первый!Справка!

void functionShow()
    {

        button.setVisibility(View.INVISIBLE);
        txt.setText("Generating Unique ID ... Please Wait ");

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() { 
            public void run() { 
                txt.setText("Sending SMS ... Please Wait");       
            } 
       }, 10000); 


        Handler handler1 = new Handler();
        handler1.postDelayed(new Runnable () {
            public void run()
            {
                txt.setText("Done");
            }
        }, 10000);



    }

Все, что я пытаюсь сделать, это: сначала текст должен появиться как «Генерация уникального идентификатора ...», затем через 10 секунд «Отправка SMS ...», а затем через 10 секунд «Готово».«

1 Ответ

0 голосов
/ 28 ноября 2011

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

Уродливый путь:

    Handler handler = new Handler();
    handler.postDelayed(new Runnable() { 
        public void run() { 
            txt.setText("Sending SMS ... Please Wait");
            postDelayed(new Runnable () {
                public void run(){
                    txt.setText("Done");
                }
            }, 10000);
        } 
    }, 10000);

Классный способ:

private static final int SENDING = 1;
private static final int DONE = 2;
Handler handler = new Handler(){
    public void handleMessage(Message msg){
        switch(msg.what){
            case SENDING:
                txt.setText("Sending SMS");
                sendEmptyMessageDelayed(DONE, 10000);
                break;
            case DONE:
                txt.setText("Done");
                break;
        }
    }
};
handler.sendEmptyMessageDelayed(SENDING, 10000);
...