2013-01-23 59 views
0

我有一個試圖打開Android上使用JavaMail一個插座,這樣非常簡單的代碼:爲什麼我的Android應用程序在嘗試連接套接字時會阻塞?

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服務器。另外,該應用程序只是阻止。 不管嘗試/趕上。任何想法? 請注意,儘管我提到「imaps」而不是「imap」,但是我不希望我的應用在任何情況下都會阻止。

回答

0

這是在UI線程上完成的嗎?如果它是由於connect()(socket.connect())方法將被阻塞,你應該將它卸載到類似ASyncTask或服務的地方。

0

我會建議您先閱讀本文,並檢查您是否在Main UI線程或後臺線程上使用套接字連接。例子可以在這個鏈接上找到:here

相關問題