【问题标题】:How work Post method on View?View 上的 Post 方法如何工作?
【发布时间】:2011-08-21 07:32:52
【问题描述】:

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

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)。

我们将不胜感激。

【问题讨论】:

    标签: android post view concurrency


    【解决方案1】:

    你正在做的是:

    1. 使用 CountDownLatch 添加自定义 WebViewClient
    2. 将 Runnable 发布到 UI 线程
    3. 阻塞 UI 线程

    就是这样,你的执行停在那里,Runnable 将不会被执行,因此你永远不会 loadUrl();删除 CountDownLatch,程序将按预期加载Url()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-01
      • 2019-05-16
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 2017-04-05
      • 2013-06-07
      相关资源
      最近更新 更多