Возможно, я открывал слишком много экземпляров GMailReader и неправильно закрывал их. Я не видел эту проблему в течение некоторого времени, так как я переместил открытие из создателя и добавил метод close. Кажется, это работает хорошо:
public class GMailReader extends javax.mail.Authenticator {
private String user;
private String password;
private Properties properties;
private Session session;
private Store store;
private Folder inbox;
public GMailReader(String user, String password) {
this.user = user;
this.password = password;
}
public void open() throws Exception {
try {
properties = new Properties();
properties.setProperty("mail.store.protocol", "imaps");
session = Session.getInstance(properties, this);
store = session.getStore("imaps");
store.connect("imap.gmail.com", user, password);
inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
} catch (Exception e) {
Log.e(this.getClass().toString(), e.getMessage(), e);
}
}
public void close(boolean expunge) throws Exception {
try {
if (inbox.isOpen()) {
inbox.close(expunge);
}
if (store.isConnected()) {
store.close();
}
} catch (Exception e) {
Log.e(this.getClass().toString(), e.getMessage(), e);
}
}
...