Toast, AlertDialogs необходимо запустить в потоке пользовательского интерфейса, вы можете использовать Asynctask для их правильного использования в разработке Android. Но в некоторых случаях нам нужно настроить время ожидания, поэтому мы используйте Потоки , но в потоках мы не можем использовать Toast, Alertdialogs, как мы используем в AsyncTask. Поэтому нам нужно отдельный Обработчик для всплывающих окон.
public void onSigned() {
Thread thread = new Thread(){
@Override
public void run() {
try{
sleep(3000);
Message message = new Message();
message.what = 2;
handler.sendMessage(message);
} catch (Exception e){
e.printStackTrace();
}
}
};
thread.start();
}
В приведенном выше примере я хочу перевести свою нить в спящий режим на 3 секунды, и после того, как я хочу показать сообщение Toast, для этого в вашем mainthread обработчике реализации.
handler = new Handler() {
public void handleMessage(Message msg) {
switch(msg.what){
case 1:
Toast.makeText(getActivity(),"cool",Toast.LENGTH_SHORT).show();
break;
}
super.handleMessage(msg);
}
};
Я использовал здесь регистр коммутатора, потому что если вам нужно показать разные сообщения таким же образом, вы можете использовать регистр коммутатора в классе Handler ... надеюсь, это поможет вам