android - WebView.loadUrl(url) 什么都不做

标签 android webview thread-safety

我最近为 Android 编写了一个简单的 Twitter 应用程序,以了解 Twitter API 和 OAuth 的基本原理。

该应用程序的主要 Activity 只是要求输入用户名。然后调用另一个处理 OAuth 和 Twitter API 调用的 Activity 。它将用户重定向到授权页面,然后在用户完成后返回到应用。

它过去工作得很好,但现在由于某种原因,当我调用 webview.loadUrl(authorizationURL) 时,没有任何反应。我从来没有改变任何会影响 WebView 的东西......这是我的代码:

@Override
public void onResume() {
    super.onResume();
    try {

        if(weNeedCredentials()) {
            obtainCredentials();
        }

        follow(mUsername);

    } catch (OAuthException oae) {
        // omitted
    }
}


private boolean weNeedCredentials() {
    // assume the method returns true
}


private void obtainCredentials() {
    final Token requestToken = mOauthService.getRequestToken();
    String authUrl = mOauthService.getAuthorizationUrl(requestToken);
    // I verified that authUrl is the correct url (and != null)

    final WebView oauthView = (WebView) findViewById(R.id.oauthview);

    oauthView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if(someCondition) {
                oauthView.setVisibility(View.GONE);

                doOtherStuff();

                return true;
            }
            return super.shouldOverrideUrlLoading(view, url);
        }
    });

    oauthView.getSettings().setJavaScriptEnabled(true);
    oauthView.loadUrl(authUrl);

}

这是我的布局 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <WebView 
        android:id="@+id/oauthview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />

</LinearLayout>

而且我还在 list 中包含了适当的互联网权限。

WebViewCoreThread 在应用程序的生命周期内一直在运行,WebViewWorkerThread 稍后弹出,但从未出现过 WebView(甚至没有出现白屏)。该应用程序也从不阻止。它继续运行,就好像 loadUrl() 行被简单地注释掉了一样。

我已经在我的手机 (Droid X2) 和模拟器上进行了测试,两者的结果相同。任何帮助将不胜感激。

提前致谢!

最佳答案

It continues running as if the loadUrl() line were simply commented out.

它将始终“继续运行,就好像 loadUrl() 行被简单地注释掉一样”。 loadUrl() 是异步的,不会阻塞。

即兴表演,要么:

  • weNeedCredentials() 返回 false,或者
  • follow() 正在替换 UI,或者
  • Twitter 正在进行重定向,并且 someConditiontrue,因此您正在使 WebView GONE马上
  • 您正在加载的 URL 有问题

关于android - WebView.loadUrl(url) 什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771074/

相关文章:

android - 从通知中恢复应用程序和堆栈

android - BitmapDrawable 已弃用的替代方案

ios - 状态栏文字颜色变化

android - HTML5 数据列表标签在 android 中不起作用

引用的 C++ 复制省略

ios - 使用 ARC 的线程安全设计

c++ - 多线程 - 在数组中我应该保护什么?

android - SharedPreferences 不适用于 Resume

java - 获取手机的实际方向

ios - 如何获得具有相同屏幕宽度的 WebView ?