私の Android ゲームは、サーバーからプレイヤーに関する情報を取得する必要があります。これは、スレッド内に配置した単純な HTTP GET 要求で行います。
私が使用しているコードは以下のとおりです。サーバーが稼働しているとき、アプリは正常に動作します。ただし、サーバーが応答していない場合 (ビジー状態またはダウン状態のいずれか)、アプリがクラッシュします。
アプリがクラッシュする代わりに、「ネットワークがビジー状態です」というメッセージをユーザーに表示し、ユーザーをメイン アクティビティに送り返したいのですが、その方法がわかりません。
サーバーがダウンしている場合に表示されると考えて、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 は空の文字列を返していたので、後でそれを使用しようとしていました。