0
我的Android遊戲需要從我的服務器獲取有關玩家的一些信息。我通過一個簡單的HTTP GET請求來完成這個任務,我把它放在一個線程中。Android:當網絡連接不工作時,應用程序崩潰
我使用的代碼如下。當我的服務器啓動並運行時,應用程序工作正常。然而,當我的服務器沒有響應(或者因爲它忙或者不響),應用程序崩潰。
代替應用程序崩潰,我想向用戶顯示「網絡正忙」的消息,並將其發送回主要活動,但不知道該怎麼做。
我試圖在Catch部分內創建一個對話框,認爲這將顯示我的服務器是否關閉,但它沒有顯示並且應用程序崩潰。
任何想法我可以解決這個問題?
public void run(){
String urlstring = "http://www.mydomain.com/?param=test";
try{
URL url = new URL(urlstring);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
line = reader.readLine();
}
catch(Exception e){
Dialog d2 = new Dialog(context);
d2.setContentView(R.layout.dialog2);
d2.show();
}
}
更新:我想我發現看logcat的問題。即使在服務器關閉的情況下,我的BufferedReader也返回了一個空字符串,並且我試圖在這條路上使用它。
如果你想在UI線程上做些事情(即打開對話框,修改視圖等),你應該考慮使用一個'AsyncTask'來代替。哦,並從logcat發佈堆棧跟蹤。 – Jens
如果我在「Catch」部分內沒有做任何事情,應用程序仍然崩潰,所以我不認爲它與我的對話框有關。 –
那麼,無論是在線139是罪魁禍首。你是否在不檢查列表邊界的情況下從列表中獲取你應該從列表中下載的URL? – Jens