我面临一些奇怪的问题。我在我的应用程序中登录用户但在此之前我检查了互联网连接。为此,我正在向我们验证您的详细信息的同时发送消息说等待。这一切都很好但是当网络很差时,它不会向任何消息干杯,而且登录需要时间。
这是我的代码
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_google_signin:
showToast(getString(R.string.signing_in_wait_text)); // This message is not shown on poor network
overLay.setVisibility(View.VISIBLE);
if (AppUtil.isNetAvailable(this)) {
Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(intent, REQUEST_CODE);
} else {
showToast(getString(R.string.internet_connection_down_or_poor));
overLay.setVisibility(View.GONE);
}
break;
}
}
private void showToast(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
overlay是我的加载视图,用于通知他正在登录应用。以下是我的isNetAvailable()方法
public static boolean isNetAvailable(final Context context) {
boolean isInternetWorking = false;
try {
isInternetWorking = (boolean) new InternetConnectionTest(context).execute().get();
} catch (Exception e) {
e.printStackTrace();
}
finally {
return isInternetWorking;
}
}
InternetConnectionTest是asyntask,用于检查互联网。这就是我检查互联网的方式
private static class InternetConnectionTest extends AsyncTask {
Context context;
InternetConnectionTest(Context context) {
this.context = context;
}
@Override
protected Boolean doInBackground(Object[] objects) {
Boolean success = false;
try {
URL url = new URL("https://google.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(10000);
connection.connect();
success = connection.getResponseCode() == 200;
} catch (Exception e) {
e.printStackTrace();
}
finally {
return success;
}
}
当互联网速度很快时,一切正常。当我的设备没有连接到互联网时,它显示互联网消息已关闭。但是当我的互联网速度非常低时出现了问题。登录需要一些时间,但不显示Toast消息。请帮忙
答案 0 :(得分:0)
当网络较慢时,表示连接超过您设置的超时时间, 所以你可以在你的doInBackground方法的catch块中添加你的toast方法,我认为它会起作用!