在我的应用程序中完全依赖于网络,即,我从web获取数据(带文本的图像),只显示在我的布局中。为此,我的主要问题是如何处理网络连接。我使用以下代码检查设备是否已连接到网络。
public static boolean hasConnection() {
ConnectivityManager cm = (ConnectivityManager) MbridgeApp.getContext().getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiNetwork != null && wifiNetwork.isConnected()) {
return true;
}
NetworkInfo mobileNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobileNetwork != null && mobileNetwork.isConnected()) {
return true;
}
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
return true;
}
return false;
}
答案 0 :(得分:0)
您可以为http调用设置超时,同时在单独的线程上使用它们,并在加载用户友好的ui时显示一些进度。
修改强>
您可以使用AsyncTask获取数据,而无需检查连接,因为如果设备未连接,AsyncTask将立即完成。
final ServerHit serverHit = new ServerHit(this);
serverHit.execute(url);
// set a timeout
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (serverHit.getStatus() == AsyncTask.Status.RUNNING)
serverHit.cancel(true);
}
}, timeout);