Java 如何在没有任何浏览器的情况下在后台使用IP打开url?

Java 如何在没有任何浏览器的情况下在后台使用IP打开url?,java,android,android-intent,android-studio,Java,Android,Android Intent,Android Studio,我有android的代码来打开url,但我不能让它在后台运行。可能吗? 有人能帮我吗?谢谢 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

我有android的代码来打开url,但我不能让它在后台运行。可能吗? 有人能帮我吗?谢谢

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);
    }

您不能在主UI中进行网络操作,因为这会阻碍您的程序执行,给您的用户带来非常恶心的体验。为此,您必须在
线程
中分离网络操作,如果您刚刚开始使用线程世界,则最好是在
异步任务
中分离网络操作

这是您将使用的结构:

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) {
    ...
  }
}
final类MyNetworkOperation扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(最终void参数){
...
}
@凌驾
受保护的Void doInBackground(最终URL…args){
...
返回null;
}
@凌驾
受保护的void onPostExecute(最终void参数){
...
}
}
即使是方法名称也是非常不言自明的。当您定义AsyncTask并对其调用
.execute(url\u对象)
时,第一个调用的方法将是
.onPreExecute()
,在那里您可以初始化变量并为您想要执行的网络操作准备一切。网络操作的困难部分应该在
doInBackground()内部完成。
。在那里连接、传输数据并断开与主机的连接。最后,调用
onPostExecute()
:完成后,您可以在此处处理结果(将其传输到主活动,显示对话框等)

有关异步任务的更多信息(以及了解这些参数的含义),我强烈建议阅读


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

如果我想让进程在一个点击事件上运行呢?这没有什么特别的,只要在
onClick()
方法中调用
您的\u asyncthread\u实例。execute()
。我能在每个具有不同ip的多个按钮上使用它吗?或者我必须在每个按钮上具体使用asynchthread,因为我的ip范围从192.168..2.66/index.html?o0=0,0=1一直到7=0,7=1您可以对每个ip使用相同的
asynchthread
扩展名和一个实例。然后,您可以将IP传递到
execute(IP)
方法中,并将它们传递到
doInBackground()
方法中。在我提供的链接中,你有一个很好的例子,看看如何传递参数,一旦完成,它将像一个符咒一样工作。也许我只是太傻了,或者太累了,但我无法让它工作。