最近发现,在我访问网络的时候,如果地址是通的则好,如果服务关闭了(最近做程序版本更新,把服务器关了测试),程序一直被卡住,长达30秒的时间一直处于无响应状态,直到抛异常(从访问网络到抛此异常时间大概30秒)。我是这样处理的,抛出异常我在Activity抓取,然后dialog一下。这样做的话还是不行,因为这期间响应的时间太长了。用URLUtil.isNetworkUrl(url)方法来判断不顶用。
然后我用debug跟踪了一次,如果有con.getResponseCode()判断,在这个判断上无响应30秒抛异常;如果没有获取返回状态码判断,则在con.getInputStream()无响应30秒再抛。这让我崩溃了
不知道大家是怎么处理的,请教一下大牛
然后我用debug跟踪了一次,如果有con.getResponseCode()判断,在这个判断上无响应30秒抛异常;如果没有获取返回状态码判断,则在con.getInputStream()无响应30秒再抛。这让我崩溃了
不知道大家是怎么处理的,请教一下大牛
而且现在这个dialog不出来,只有网络是通的时候才能dialog出来,特奇怪
String path = "http://192.168.10.115/Cloud_Server/VersionServlet";
oldVersion = getPackageManager().getPackageInfo(getPackageName(),
PackageManager.GET_PERMISSIONS).versionName;
String[] params = new String[] { path, oldVersion };
progressDialog = ProgressDialog.show(this, "请稍候", "正在检测服务器版本...", true);//这句执行了为什么dialog不出来呢?
AsyncTask<String, Integer, Boolean> execute = new PrapareVersionThread()
.execute(params);
prapareVersion = execute.get();
可以在需要网络连接前显示一个Dialog,然后新建一个线程获取网络数据,然后再用Handle更新到界面