Webviewロードインタフェースのホワイトスクリーン解決方法のまとめ

2998 ワード

WebviewネストHTML 5インタフェースのホワイトスクリーンの問題
質問:Android開発では、オリジナルとH 5ネストのアプリを開発することがよくありますが、androidにH 5インタフェースをロードするときはwebviewコントロールを使ってネストするのが一般的ですが、このとき不思議なことに、インタフェースの白い画面が表示されます.
このような場合、プログラムを終了し、プロセスを終了し、appに再アクセスし、インタフェースを再ロードするしかありません.まだ他の解決策は見つかりません.
多方面の研究を経て、大神に教えてもらって、以下のいくつかの点を総括してこのような白いスクリーンの情況の出現の確率を減らします.
ソリューション:
1.AndroidでWebページをロードするとインタフェースがキャッシュされ、webviewのキャッシュをクリアすることで、appがH 5インタフェースに入るたびに再ロードされます.
//       ,       
mWebView.clearCache(true);
mWebView.clearHistory();

mWebView.requestFocus();
WebSettings webSettings = mWebView.getSettings();
webSettings.setDatabaseEnabled(true);
//     
String appCachePath = getApplicationContext().getCacheDir()
			.getAbsolutePath() + "/webcache";
//    Application Caches     
webSettings.setAppCachePath(appCachePath);
webSettings.setDatabasePath(appCachePath);

2.setAppCacheEnabledメソッドでwebviewにキャッシュがあるかどうかを制御できます.
//         true false     
webSettings.setAppCacheEnabled(false);

3.webviewでH 5インタフェースをロードする場合、H 5のコントロールラベルの一部はandroidでサポートされていない可能性があります.setDomStorageEnabledメソッドを使用して処理できます.
//                
webSettings.setDomStorageEnabled(true);

4.異なるandroidバージョンで白い画面が表示される場合:
mWebView.setWebViewClient(new WebViewClient() {
			@Override
			public void onPageStarted(WebView view, String url, Bitmap favicon) {
				super.onPageStarted(view, url, favicon);
			}

			@Override
			public void onPageFinished(WebView view, String url) {
				super.onPageFinished(view, url);
			}

			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				//                       webview   ,      
				//  2.3       ,       , 4.0       ,      
				if (url.startsWith("http://") || url.startsWith("https://")) {
					view.loadUrl(url);
					mWebView.stopLoading();
					return true;
				}
				return false;
			}

			@Override
			public void onReceivedError(WebView view, int errorCode,
					String description, String failingUrl) {
				super.onReceivedError(view, errorCode, description, failingUrl);
			}
		});

5.Webviewのコントロールレイアウトの設定:
    

6.androidシステムの加速器によって配置する:主にandroid manifestである.xmlで設定します.
//ハードウェアアクセラレータappを起動してハードウェアアクセラレータをサポートする:
アプリケーション:
    

Webviewを使用するインタフェースでハードウェアアクセラレータをオフにします.
Activityインタフェースの登録時:
        

まとめ:webviewホワイトスクリーンはとても不思議なことで、今のところ私はまだ最適な解決方法を見つけていません.これらの方面を通じてホワイトスクリーンの状況が現れる確率を減らすしかありません.これからも研究を続けなければなりません.
学は尽きない!!!