私のAndroidアプリでは、サーバーが応答を受け取るように要求を送信する必要があります。アプリケーションは正常に動作し、いくつかのテストを行っているときに次の問題が見つかりました。
WIFI が OFF で、モバイル (3G) 接続が利用できると考えてください。したがって、ボタンを押してリクエストをサーバーに送信した直後にWIFIのスイッチを入れると、アプリケーションは次のコードの行から実行を停止しますresCode = httpConn.getResponseCode();
。このコードは別のスレッドで実行され、Handler クラスを使用します。
ボタンを押すと(リクエストを送信する)、モバイル(3G)インターネットしかなく、それ(モバイルインターネット)で処理しようとするためだと思います。しかし、処理中に WIFI をオンにすると、WIFI の優先度が最も高く、競合が発生するため、WIFI で処理しようとしている可能性があります。
誰かがこの競合を防ぐ方法について何か考えを持っていますか?
編集します。................................................................... .....
InputStream in = null;
int resCode = -1;
try
{
URL url = new URL(urlStr.replace(" ", "%20"));
URLConnection urlConn = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection)urlConn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
httpConn.setConnectTimeout(5500); Log.v("State", "before get response code");
/*->>*/ resCode = httpConn.getResponseCode(); Log.v("State", "After get response code");
in = (resCode == HttpURLConnection.HTTP_OK) ? httpConn.getInputStream() : in;
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
この場合、正常に実行される最後の行はhttpConn.setConnectTimeout(5500);
、そこから実行を停止する....
実行されますが、Logcat では実行され"before get response code"
ません...."before get response code"
それでも例外はありません...チェックしました...