Android 我的部分应用程序仅在我';我正在恢复我的应用程序(onResume)

Android 我的部分应用程序仅在我';我正在恢复我的应用程序(onResume),android,android-webview,onresume,activity-lifecycle,Android,Android Webview,Onresume,Activity Lifecycle,当我的应用程序最初启动时,不是在所有设备上,而是在不同的android版本+emulator上,webview和我的工具栏标题将仅为白色(文本设置正确,webview的URL加载正确)。当我刚刚恢复/关闭应用程序时(不要完全关闭,只是恢复),我的应用程序工作正常。调试时未检测到任何有用的内容,因为一切似乎都正常工作 一个问题是我的工具栏的标题。它设置正确,但在我恢复应用程序之前不会显示 (标题为“社区”) 在恢复之前,我的WebView也不会显示 private fun initWebViews

当我的应用程序最初启动时,不是在所有设备上,而是在不同的android版本+emulator上,webview和我的工具栏标题将仅为白色(文本设置正确,webview的URL加载正确)。当我刚刚恢复/关闭应用程序时(不要完全关闭,只是恢复),我的应用程序工作正常。调试时未检测到任何有用的内容,因为一切似乎都正常工作

一个问题是我的工具栏的标题。它设置正确,但在我恢复应用程序之前不会显示

(标题为“社区”)

在恢复之前,我的WebView也不会显示

private fun initWebViews() {

    for (webView in webViewArray) {
        webView.settings.run {
            javaScriptEnabled = true
            domStorageEnabled = true
            allowFileAccess = true
            allowContentAccess = true
        }
        webView.addJavascriptInterface(JavaScriptBridge(this), "Android")

        (webView.parent as SwipeRefreshLayout).setOnRefreshListener {
            webView.clearCache(true)
            webView.loadUrl("about:blank")
            webView.reload()
            webView.loadUrl(webView.url)
        }

        webView.webViewClient = object : WebViewClient() {
            override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
                //super.onPageStarted(view, url, favicon)
                webView.tag = "started"

                webViewsInitialized += 1

                if (!NetworkHandler.hasActiveInternetConnection(applicationContext)) {
                    include_no_connection.visibility = View.VISIBLE
                }

                if (view == getCurrentWebView()) {
                    showLoading()
                    url?.let { handleToolbarTitle(viewanimator_main.displayedChild, it) }
                }

                // desc: Wenn beim Logout die logoutpage aufgerufen wird dann den weiteren logout prozess initieren
                if (url!!.contains("logout.php")) {
                    isLoggedOut = true
                    initiateLogout()
                }
            }

            override fun onPageFinished(view: WebView?, url: String) {
                //super.onPageFinished(view, url)
                webView.tag = "finished"

                view?.scrollTo(0, 0)

                if (view == getCurrentWebView()) {
                    hideLoading()

                    (view.parent as SwipeRefreshLayout).isRefreshing = false

                    if (include_no_connection.visibility == View.VISIBLE && NetworkHandler.hasActiveInternetConnection(applicationContext)) {
                        include_no_connection.visibility = View.GONE
                    }
                }
                webView.evaluateJavascript(JS_CUSTOMER_ID_CHANGED) {}
                webView.evaluateJavascript(JS_NOTIFICATIONS) {}

                Log.d(TAG, "PageFinished " + view?.url);
            }



            override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
                super.shouldOverrideUrlLoading(view, request)

                val currentUrl = request?.url.toString()

                // desc: Externe Links werden im Browser geöffnet

                if (!currentUrl.contains(DTW)) {
                    view?.context?.startActivity(Intent(ACTION_VIEW, Uri.parse(currentUrl)))
                    return true
                }

                // desc: Wenn die angesteuerte url für einen anderen tab bestimmt ist wird diese umgeleitet
                val mappedResult = MappingUtil.mapTargetUrl(currentUrl, viewanimator_main.displayedChild)

                if (viewanimator_main.displayedChild != mappedResult && webView != webview_community && webViewArray[mappedResult].url != currentUrl) {
                    selectNavItem(mappedResult, false)
                    webViewArray[mappedResult].loadUrl(currentUrl)
                    showLoading()
                    return true
                }
                return false
            }
        }

可能是比赛条件问题。除非我们看到一些代码,否则我们无法确定!我真的不知道我的代码的哪一部分是问题。虽然调试一切都很好,但我很难判断哪些代码片段是有用的。但我试过了。工具栏问题可能来自Manifest.xml的双重检查,在这里您定义了该活动的样式,并确保它不是
NoActionBar
。否则,必须在layout.xml中添加工具栏
private fun initWebViews() {

    for (webView in webViewArray) {
        webView.settings.run {
            javaScriptEnabled = true
            domStorageEnabled = true
            allowFileAccess = true
            allowContentAccess = true
        }
        webView.addJavascriptInterface(JavaScriptBridge(this), "Android")

        (webView.parent as SwipeRefreshLayout).setOnRefreshListener {
            webView.clearCache(true)
            webView.loadUrl("about:blank")
            webView.reload()
            webView.loadUrl(webView.url)
        }

        webView.webViewClient = object : WebViewClient() {
            override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
                //super.onPageStarted(view, url, favicon)
                webView.tag = "started"

                webViewsInitialized += 1

                if (!NetworkHandler.hasActiveInternetConnection(applicationContext)) {
                    include_no_connection.visibility = View.VISIBLE
                }

                if (view == getCurrentWebView()) {
                    showLoading()
                    url?.let { handleToolbarTitle(viewanimator_main.displayedChild, it) }
                }

                // desc: Wenn beim Logout die logoutpage aufgerufen wird dann den weiteren logout prozess initieren
                if (url!!.contains("logout.php")) {
                    isLoggedOut = true
                    initiateLogout()
                }
            }

            override fun onPageFinished(view: WebView?, url: String) {
                //super.onPageFinished(view, url)
                webView.tag = "finished"

                view?.scrollTo(0, 0)

                if (view == getCurrentWebView()) {
                    hideLoading()

                    (view.parent as SwipeRefreshLayout).isRefreshing = false

                    if (include_no_connection.visibility == View.VISIBLE && NetworkHandler.hasActiveInternetConnection(applicationContext)) {
                        include_no_connection.visibility = View.GONE
                    }
                }
                webView.evaluateJavascript(JS_CUSTOMER_ID_CHANGED) {}
                webView.evaluateJavascript(JS_NOTIFICATIONS) {}

                Log.d(TAG, "PageFinished " + view?.url);
            }



            override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
                super.shouldOverrideUrlLoading(view, request)

                val currentUrl = request?.url.toString()

                // desc: Externe Links werden im Browser geöffnet

                if (!currentUrl.contains(DTW)) {
                    view?.context?.startActivity(Intent(ACTION_VIEW, Uri.parse(currentUrl)))
                    return true
                }

                // desc: Wenn die angesteuerte url für einen anderen tab bestimmt ist wird diese umgeleitet
                val mappedResult = MappingUtil.mapTargetUrl(currentUrl, viewanimator_main.displayedChild)

                if (viewanimator_main.displayedChild != mappedResult && webView != webview_community && webViewArray[mappedResult].url != currentUrl) {
                    selectNavItem(mappedResult, false)
                    webViewArray[mappedResult].loadUrl(currentUrl)
                    showLoading()
                    return true
                }
                return false
            }
        }