Java 为什么我的Android应用程序在尝试连接套接字时会阻塞?
我有一个非常简单的代码,试图在Android上使用JavaMail打开套接字,如下所示:Java 为什么我的Android应用程序在尝试连接套接字时会阻塞?,java,android,email,imap,block,Java,Android,Email,Imap,Block,我有一个非常简单的代码,试图在Android上使用JavaMail打开套接字,如下所示: public boolean connect() { try { store_ = session_.getStore("imap"); store_.connect(email_.host, email_.user, email_.pass); folder_ = store_.getDefaultFolder(); folder_
public boolean connect() {
try {
store_ = session_.getStore("imap");
store_.connect(email_.host, email_.user, email_.pass);
folder_ = store_.getDefaultFolder();
folder_ = folder_.getFolder("inbox");
folder_.open(Folder.READ_ONLY);
}
catch(Exception e) {
disconnect();
return false;
}
return true;
}
public void disconnect() {
if (folder_ != null) {
try {
folder_.close(false);
}
catch(Exception e) {
}
folder_ = null;
}
if (store_ != null) {
try {
store_.close();
}
catch(Exception e) {
}
store_ = null;
}
}
它适用于不需要SSL的IMAP服务器。除此之外,应用程序只是阻塞。
不管你怎么努力。有什么想法吗?
请注意,当我提到“imap”而不是“imap”时,它当然可以工作,但我不希望我的应用程序在任何情况下都会阻塞。这是在UI线程上完成的吗?如果是,您应该将其卸载到类似ASyncTask或服务的程序中,因为connect()(socket.connect())方法将被阻止。我建议您先阅读这篇文章,并检查您是在主UI线程还是在后台线程上处理套接字连接。可在此链接上找到示例: