По умолчанию нет ни одного. Но вы можете создать свой собственный класс, который будет делать то же самое.
Я сделал один такой:
import java.util.ArrayList;
public class Handler extends Object{
ArrayList<Message> messages;
public Handler(){
messages = new ArrayList<>();
}
public final Message obtainMessage(int what, Object obj){
Message message = new Message(what, obj, this);
messages.add(message);
return message;
}
public final Message obtainMessage(int what){
Message message = new Message(what, this);
messages.add(message);
return message;
}
public void handleMessage(Message msg){
messages.remove(msg);
}
public final boolean hasMessages(){
return !messages.isEmpty();
}
}
тогда вам также потребуется пользовательский класс сообщений, подобный этому:
public class Message extends Object{
int mWhat;
Object mObj;
Handler mTarget;
public Message(int what, Object obj){
mWhat = what;
mObj = obj;
}
public Message(int what, Object obj, Handler target){
mWhat = what;
mObj = obj;
mTarget = target;
}
public Message(int what, Handler target){
mWhat = what;
mTarget = target;
}
public Message(int what){
mWhat = what;
}
public void sendToTarget(){
mTarget.handleMessage(this);
}
}
Вы можете использовать этот обработчик для связи из фонового потока с потоком пользовательского интерфейса, не слишком нарушая поток пользовательского интерфейса.
Вы можете использовать этот класс совершенно так же, как в Android:
Сначала вы создаете экземпляр в своем классе пользовательского интерфейса:
final int MESSAGE_RECEIVED = 0;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.mWhat){
case MESSAGE_RECEIVED:
System.out.println("Message received.");
updateStatus("Message received.");
break;
}
}
};
Затем вы передаете этот экземпляр обработчика в фоновый поток:
Thread thread = new T1(handler);
thread.start();
И, наконец, вы отправляете сообщения с помощью:
mHandler.obtainMessage(0).sendToTarget();
Я проверил этот метод на примере программы апплета, которую я сделал, и, похоже, она работает отлично Хотя я не являюсь опытным программистом Java, поэтому в этом могут быть некоторые недостатки, о которых я не особо осведомлен. Если это так, я хотел бы услышать обоснованное объяснение, почему это не хорошо.
Надеюсь, это кому-нибудь поможет.
ПРИМЕЧАНИЕ. Указанные выше классы Handler и Message (мой код) не обеспечивают полную функциональность Android.Handler и Android.Message.