JavaとJavaScriptのスレッドの相互作用の問題でのWebView

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/u014619545/article/details/90041473

問題は、私はJavaScriptInterface注釈を使用いつものように、背景が私のメソッドを呼び出すことができるようにすることを可能にするために、私のアプローチに追加し、簡単です。しかし、と私は同じが、メソッドが正常に呼び出されるとは思いませんでしたが、問題があります。
コードは以下の通りであります:

@JavascriptInterface
public void openPage(String url, String title, String showShare) {
            Logger.e("---------mall---------");
AddProjectPopupWindow addProjectPopupWindow = new AddProjectPopupWindow(mActivity);
addProjectPopupWindow.showAtLocation(x5_webview, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
        }

コードが実行されると、通常、それがポップアップポップアップを持参してください。しかし、それは私が無知な力を見て、ポップアップしていなかった、ともコンソールを与えられていません。私は問題を抱えているpopメソッドのように見えますか?どこにも良いです。突然思い出した、それはメインスレッドで実行するコードを変更し、問題のスレッドではありません。問題は解決します!
次のようにコードを変更します。

@JavascriptInterface
public void openPage(String url, String title, String showShare) {
Logger.e("---------mall---------");
        mActivity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    AddProjectPopupWindow addProjectPopupWindow = new AddProjectPopupWindow(mActivity);
                    addProjectPopupWindow.showAtLocation(x5_webview, Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
                }
            });
        }

それは次のとおりです。Javascriptと子スレッドのJavaの相互作用は、スレッドが安全に注意を払う必要があります。あなたの操作がメインスレッドで実行する必要がある場合は、注意を払うようにしてください!

おすすめ

転載: blog.csdn.net/u014619545/article/details/90041473