我需要知道如何等待触发事件来设置布尔值。我有2个类简单类:MainClass和Wait类:
MainClass()
{
WebView wv; //It's already initialized from the xml and linked in the original code
Wait waiting = new Wait();
if(waiting(wv,URL))
{
wv.loadURL("javascript: ....");
}
}
public Class Wait()
{
Boolean pageLoaded = false;
Wait waiting = this;
public boolean waitForPage(wv,URL)
{
wv.setWebViewClient(new WebViewClient()
{
public void onPageFinished(WebView webView, String url )
{
pageLoaded = true;
synchronized(waiting)
this.nothifyAll();
}
});
wv.loadURL(URL);
synchronized(this) // --> End up in an Endless Loop
this.wait();
if(pageLoaded)
return true;
return false;
}
}
有人知道为什么它不会同步并最终以无限循环结束吗?也许我使用错误的事件处理程序?
this.wait();
似乎就像While(true)
验证NoifyAll()
的布尔集一样。请一些想法,我如何等待这些事件并保持程序流程直到事件被触发!
答案 0 :(得分:0)
this
方法中的synchronized(this)
中的onPageFinished()
引用WebViewClient
个实例,而this
中的synchronized(this)
引用wv.loadURL(URL)
}}引用Wait
实例。
考虑使用Android的java.util.concurrent包
中的实用程序