Я делаю программу, которая должна отслеживать новые сообщения в учетной записи Gmail, и чтобы получать их как можно скорее, я использую функцию ожидания JavaMail. Вот фрагмент кода из потока, который я использую для вызова folder.idle ():
//Run method that waits for idle input. If an exception occurs, end the thread's life.
public void run() {
IMAPFolder folder = null;
try {
folder = getFolder();
while(true)
{
//If connection has been lost, attempt to restore it
if (!folder.isOpen())
folder = getFolder();
//Wait until something happens in inbox
folder.idle(true);
//Notify controller of event
cont.inboxEventOccured();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("MailIdleWaiter thread ending.");
}
Метод getFolder () в основном открывает соединение с сервером IMAP и открывает почтовый ящик.
Это работает какое-то время, но примерно через 10 минут перестает получать обновления (исключение не создается).
Я ищу предложения по поддержанию соединения. Нужен ли мне второй поток, единственная роль которого - засыпать и обновлять поток idle () каждые 10 минут, или есть более простой / лучший способ?
Заранее спасибо.