【问题标题】:Android HTTP request under AsyncTask show black screenAsyncTask下的Android HTTP请求显示黑屏
【发布时间】:2013-05-15 22:30:28
【问题描述】:

我有一个问题。我使用 AsyncTask 从远程服务器检索 json 数据。如果我的 smatphone 有互联网连接,一切正常。 如果我尝试在没有互联网连接的情况下将手机连接到 wifi,当我启动应用程序时,它会显示几秒钟的黑屏。

当try/catch(用于http请求)进入doBackground时我会留下黑屏返回java.net.UnknownHostException:无法解析主机“www.xxxxxx.it”:没有与主机名关联的地址

我从 onResume 方法调用 asynctask:

HttpOperation MyTask= new HttpOperation(ctx);
MyTask.execute(url);

我的问题在哪里?最好的问候

【问题讨论】:

  • 你有上网权限吗?
  • 您能否告知您是否有通过 wifi 连接的互联网连接,或者您是否希望它无法解决?我假设您希望这会在加载 UI 的同时继续加载异步任务,因此不应看到空白屏幕?
  • 是的,我拥有所有 Internet 权限。我想模拟一个我没有互联网连接,但手机正确连接到接入点的情况。
  • 我已将手机连接到我自愿断开与互联网连接的接入点。我想模拟一个我有 wifi 连接和互联网连接的情况。

标签: android android-asynctask


【解决方案1】:

似乎您的问题是,如果没有可显示的内容,您什么也不做。您是否考虑过轮询当前的互联网连接状态并在您调用它的活动上显示一条消息“无当前连接”?

编辑:轮询当前互联网连接的代码:

public boolean checkInternet() {
      ConnectivityManager connection = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
      NetworkInfo network = connection.getActiveNetworkInfo();
      if (network == null) { //no connection
       return false;
      } else
       return true;
     }  

【讨论】:

  • if (network == null) { //没有连接 return false; } 否则返回真;你可以用 return netword != null } 来改变这个 sn-p
  • 你说得对,这让事情变得更短了,但我总觉得把它分解一下会更容易阅读!
  • 我用这个,但它并没有告诉我是否有互联网连接,而只是 wifi 连接到接入点。
  • 为什么不直接处理没有网络连接的情况呢?例如,如果没有从服务器获取信息,或者您的 HTTPGET 返回失败响应代码 - 然后为这种情况创建一个活动,或者在当前 UI 上方的 textView 中显示“无 Internet 连接”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
相关资源
最近更新 更多