アプリがインターネットに接続されているかどうかを確認しようとしています。タイムアウトを 3 秒に設定しています。インターネットチェックが「接続されていません」と返される場合があり (インターネットに接続していても)、そうでない場合もあります。他の人よりもチェックに時間がかかることがあるのはなぜですか? これがチェックされている間に、ダイアログボックスまたは何かをポップアップさせることはできますか?
public void isNetworkAvailable(final Handler handler)
{
new Thread()
{
private boolean responded = false;
@Override
public void run()
{
new Thread()
{
@Override
public void run()
{
HttpGet requestForTest = new HttpGet("http://m.google.com");
try
{
new DefaultHttpClient().execute(requestForTest);
responded = true;
}
catch (Exception e)
{
}
}
}.start();
try
{
int waited = 0;
while (!responded && (waited < 3000))
{
sleep(100);
if (!responded)
{
waited += 1000;
}
}
}
catch (InterruptedException e)
{
} // do nothing
finally
{
if (!responded)
{
handler.sendEmptyMessage(0);
}
else
{
handler.sendEmptyMessage(1);
}
}
}
}.start();
}
Handler h = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if (msg.what != 1)
{ // code if not connected
Log.i("Internet check", "Not connected");
}
else
{ // code if connected
Log.i("Internet check", "Connected");
}
}
};