Android 如何使此代码成为异步任务?

Android 如何使此代码成为异步任务?,android,android-asynctask,Android,Android Asynctask,我不知道如何使这段代码在异步任务中工作,我搜索了多个示例,但它不断崩溃。我在互联网上找到了这个简单的代码,我想修改它,从文本字段中获取URL并获取HTML代码。我发现它必须在AsyncTask中,否则它将无法工作,但即使在AsyncTask中,我也无法让它工作。这是我的密码: String ETURL = ETURLInput.getText().toString(); try { URL TestURL = new URL(ETURL); BufferedReader buffer

我不知道如何使这段代码在异步任务中工作,我搜索了多个示例,但它不断崩溃。我在互联网上找到了这个简单的代码,我想修改它,从文本字段中获取URL并获取HTML代码。我发现它必须在AsyncTask中,否则它将无法工作,但即使在AsyncTask中,我也无法让它工作。这是我的密码:

String ETURL = ETURLInput.getText().toString();

try {
  URL TestURL = new URL(ETURL);

  BufferedReader bufferReader = new BufferedReader(
                    new InputStreamReader(TestURL.openStream()));

  String outputCode;
  while ((outputCode = bufferReader.readLine()) != null)
    TVCode.setText(outputCode);
    bufferReader.close();
} catch (Exception e) {
  TVCode.setText("Oops, something went wrong.")

}

}
这是需要在ActionListener中执行的代码。因此,当我单击按钮时,它应该在异步任务中执行此代码


希望有人能帮我解决这个问题。

你忘了添加
openConnection
,添加这个:
URLConnection conn=TestURL.openConnection()创建URL对象后

要使其与asynctask一起工作,您可以将字符串存储在类变量中,在
doInBackGround
中返回它,并在
onPostExecute
中使用它

您可以在asynctask中创建的方法示例:

protected String getContentUrl(String URL) {
  String line=null;
  String result="";
  try {
    try {
      URL url;
      // get URL content
      url = new URL(URL);
      URLConnection conn = url.openConnection();

      // open the stream and put it into BufferedReader
      BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
      line=br.readLine();
      while (line!= null) {
        result=result+line;
        line=br.readLine();
      }
      //System.out.print(result);
      br.close();

      return result;
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  } catch (Exception e) {
    e.printStackTrace();
  }

  return null;
然后在
doInBackGround
上以这种方式获得结果:

getContentUrl(YOUR URL HERE)
将此值存储在字符串中,然后返回它。然后您可以在
onPostExecute


希望有帮助:)

作为猜测,您的
AsyncTask
正在崩溃,因为您正试图从
doInBackground
更新UI(通过
setText
调用)。
LogCat
中的错误,以及尝试将此代码移动到
AsyncTask
的代码将有所帮助。@PPartisan感谢您的回答。我尝试了此操作,但得到了以下错误:原因:java.net.MalformedURLException:找不到协议:,,,,,java.lang.RuntimeException:执行doInBackground(),,,,,,,java.lang.SecurityException:权限被拒绝(缺少INTERNET权限?)。我正确使用了Internet权限,因此我不知道为什么会出现此错误。在这种情况下,您是否看到与此错误消息相关的其他答案?也就是说,它仍然不起作用。我以前试过。最好在这里更新你的问题,因为我们通过电子邮件进行的任何对话都不会对其他人有益。使用AsyncTask实现更新您的代码-但是,我以前的建议,即使它们可能仍然有效,也与您的错误无关。