我是Android平臺的初學者,遇到嚴重問題。我想從Gmail中獲取電子郵件,因此我創建了一個可以實現這一點的類。但是,當我在android中運行我的類NetworkOnMainThreadException。所以我創造了新的主題與新的Runnable如下:Android中的線程(NetworkOnMainThreadException與Javamail)的表現很奇怪
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
FetchEmails e = new FetchEmails();
}
}).start();
}
它的工作很好,但隨後我似乎無法有爲了得到實際的電子郵件訪問e.getMessage。考慮到這一點,我已經實現了Runnable到我的FetchEMails類,並完成了run()中的所有提取代碼,這是我的超級用戶。 run()中的最後一段代碼將變量設置爲'true'。然後在我的Activity類中,我實例化了這個類,並且完成了這個操作:new Thread(e).start();
。下面我有一個while循環來檢查類已經完成到run()方法結束(通過檢查變量是否爲真)。所以現在我已經創建了我的新版本,它不會干擾UI,當代碼完成後我想要獲取消息。但似乎我仍然得到NetworkOnMainThreadException錯誤。任何幫助都是顯而易見的。謝謝。
我以前見過AsyncTask,所以基本上我需要從AsyncTask擴展我的類並執行doBackground中的所有命令。但是,當我完成獲取電子郵件,我將它們存儲在一個說ArrayList中,我如何知道我的Activity類中已完成抓取,現在我可以訪問ArrayList? –
你可以在'onPostExecute()'中更新你的「UI」線程。因此,您可以將回調傳遞給AsyncTask類或將其聲明爲活動的內部類。然後你可以在那裏更新適配器或目標數組列表。 – dmon
感謝您的迴應,我設法使用AsyncTask –