Java Android线程在shouldOverrideUrlLoading中

Java Android线程在shouldOverrideUrlLoading中,java,android,multithreading,Java,Android,Multithreading,我在shouldOverrideUrlLoading中有一些代码,可以下载数据,必要时进行转换,并使用loadData或loadUrl在WebView中显示。我将其移动到一个线程(一个实现Runnable的类),现在它不会在加载下一页时锁定UI。不幸的是,有时它会锁定整个应用程序,而在调试过程中暂停显示它似乎没有任何进展(死锁?) 我猜这是因为UI不是线程安全的,甚至webkit loadData/loadUrl都不是?有没有办法设置在下载/转换完成后在UI线程中运行的某种onFinish操作?

我在shouldOverrideUrlLoading中有一些代码,可以下载数据,必要时进行转换,并使用loadData或loadUrl在WebView中显示。我将其移动到一个线程(一个实现Runnable的类),现在它不会在加载下一页时锁定UI。不幸的是,有时它会锁定整个应用程序,而在调试过程中暂停显示它似乎没有任何进展(死锁?)


我猜这是因为UI不是线程安全的,甚至webkit loadData/loadUrl都不是?有没有办法设置在下载/转换完成后在UI线程中运行的某种onFinish操作?或者,在运行另一个线程之前是否已经足够存储它,并在运行另一个线程之前取消它?

添加一个同步的(WebVIEW){围绕线程的代码来修复这个问题。

您应该考虑使用<代码> AycCastase<代码>,而不是<代码>线程< /代码>。我想到了这点,但是我发现了这一点:在将UI命令放在VIEW中之后。(新的Runnable(,它似乎不再冻结。我考虑过AsyncTask,但我想在普通Java中实现这一点。最好坚持Android实践,而不是“普通Java”。这将在将来节省大量时间……)我使用过AsyncTask,它工作得很好,但有时它似乎调用onPostExecute而不是onCancelled。我还想知道,如果没有Android添加的webview.post和AsyncTask,例如在桌面应用程序上,如何实现这一点?