java - jSoup方法关闭android App

标签 java android jsoup

我正在尝试使用 jsoup 从网站显示波士顿的温度,作为 Android 应用程序中的 toast 消息。我的 Java 程序如下所示:

public static void showWeather() throws IOException
{
    Document doc = Jsoup.connect("http://www.wunderground.com/US/ma/boston.html?MR=1").get();
    Elements languages = doc.select("#tempActual span.b ");


    for(Element langElement: languages)
    {
        //System.out.println(" The temperature in Boston: "+langElement.text()+ " F");

    }

}

Java 程序运行正常,并将波士顿的温度打印到屏幕上。我想使用这个方法来尝试在一个简单的android应用程序中将温度显示为toast,但是当我尝试在我的android Activity 的onCreate方法中运行方法(当然没有打印语句)时,程序会自动关闭。这是我的 onCreate 方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    addKeyListener();

    try {
        showWeather();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

有人可以告诉我如何在我的 android Activity 中运行这个 java 程序吗?我不知道如何正确对待 try/catch 子句。我尝试将 toast 放入 catch 子句中,但没有成功。请帮忙。

最佳答案

AsyncTask 可以正确且轻松地使用 UI 线程。此类允许在 UI 线程上执行后台操作并发布结果,而无需操作线程和/或处理程序。

引用:
http://developer.android.com/reference/android/os/AsyncTask.html

用法
AsyncTask 必须子类化才能使用。子类将重写至少一个方法 ( doInBackground(Params...) ),并且最常见的是重写第二个方法 ( onPostExecute(Result) 。)

这是子类化的示例:

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
  protected Long doInBackground(URL... urls) {
     int count = urls.length;
     long totalSize = 0;
     for (int i = 0; i < count; i++) {
         totalSize += Downloader.downloadFile(urls[i]);
         publishProgress((int) ((i / (float) count) * 100));
         // Escape early if cancel() is called
         if (isCancelled()) break;
     }
     return totalSize;
  }

  protected void onProgressUpdate(Integer... progress) {
      setProgressPercent(progress[0]);
  }

  protected void onPostExecute(Long result) {
      showDialog("Downloaded " + result + " bytes");
  }
 }

一旦创建,任务的执行就非常简单:

new DownloadFilesTask().execute(url1, url2, url3);

关于java - jSoup方法关闭android App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204112/

相关文章:

email - 如何使用 JSOUP 解析 [email protected] 数据

java - Android - 获取需要登录的页面的源代码

android - FCM 通知不亮屏,在后台时不提示

java - 为什么正则表达式\pL+\pM+ 不适用于英语?

java - 直接从函数调用(没有 new())分配变量会引发异常吗?

java - 将日期插入sql数据库

java - D/OkHttp : <-- HTTP FAILED: javax.net.ssl.SSLException : SSL handshake aborted: ssl=0x64e3c938: I/O error during system call, 连接被对端重置

android - 我希望我的应用程序每月的某一天自动启动

coldfusion - 获取 :image from url using JSoup

java - Wicket 1.5(.2) 中的 url 更改时组件未重新加载?