如何在没有浏览器的情况下在后台打开带IP的网址?

时间:2014-02-11 14:38:10

标签: java android android-intent android-studio

我有这个代码用于android打开一个网址,但我不能让它在后台运行。可能吗? 有人可以帮我弄这个吗?感谢。

public void goToSu (View view) {
        goToUrl("http://192.168.2.66/index.html?o0=0");
    }

    private void goToUrl (String url) {
        Uri uriUrl = Uri.parse(url);
        Intent background = new Intent(Intent.ACTION_VIEW, uriUrl);
        startActivity(background);
    }

1 个答案:

答案 0 :(得分:1)

您无法在主UI中进行网络操作,因为这会阻止您的程序执行,并为您的用户带来非常恶心的体验。为此,如果您刚刚开始使用线程世界,则必须将Thread内的网络操作分开,或者更好,将AsyncTask分开。

这是您将使用的结构:

final class MyNetworkOperation extends AsyncTask<URL, Integer, Void> {
  @Override
  protected void onPreExecute(final Void param) {
    ...
  }

  @Override
  protected Void doInBackground(final URL... args) {
    ...
    return null;
  }

  @Override
  protected void onPostExecute(final Void param) {
    ...
  }
}

即使是方法名称也非常自我解释。当您定义AsyncTask并在其上调用.execute(url_object)时,第一个被调用的方法将是.onPreExecute(),您可以在那里初始化变量并为您要执行的网络操作准备一切。网络操作的 hard 部分应在doInBackground()内完成。在那里你连接,进行数据传输并断开与主机的连接。最后,调用onPostExecute():完成后,您可以在此处理结果(将其传输到主Activity,显示对话框等)。

有关AsyncTasks的更多信息(并了解这些参数的含义),我强烈建议您阅读reference

可能会找到一个很好的例子here