等待活动

时间:2014-03-13 11:12:04

标签: java android webview wait

我需要知道如何等待触发事件来设置布尔值。我有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()的布尔集一样。请一些想法,我如何等待这些事件并保持程序流程直到事件被触发!

1 个答案:

答案 0 :(得分:0)

this方法中的synchronized(this)中的onPageFinished()引用WebViewClient个实例,而this中的synchronized(this)引用wv.loadURL(URL) }}引用Wait实例。

考虑使用Android的java.util.concurrent

中的实用程序