如何在View上使用Post方法?

时间:2011-08-21 07:32:52

标签: android post view concurrency

我对此代码有一些问题,您可以在这里找到问题的简化版本。

public class MyActivity extends Activity {

private WebView wv = null;
private CountDownLatch signal = null;

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    wv = (WebView) findViewById(R.id.web);
    wv.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            signal.countDown();
            super.onPageFinished(view, url);
        }
    }
    wv.post(new Runnable() {

        @Override
        public void run() {
            wv.loadUrl("file:///android_asset/MySample.html");
        }
    });

    try {
        signal.await();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    ElaborateAll(2);
}

}

在调试中,代码未达到ElaborateAll(2)。

每一个帮助都将得到赞赏。

1 个答案:

答案 0 :(得分:0)

你在做什么:

  1. 使用CountDownLatch添加自定义WebViewClient
  2. 将Runnable发布到UI线程
  3. 阻止UI线程
  4. 就是这样,你的执行停在那里,Runnable将不会执行,因此你永远不会loadUrl();删除CountDownLatch,程序将按预期loadUrl()。