Webviewロードインタフェースのホワイトスクリーン解決方法のまとめ
WebviewネストHTML 5インタフェースのホワイトスクリーンの問題
質問:Android開発では、オリジナルとH 5ネストのアプリを開発することがよくありますが、androidにH 5インタフェースをロードするときはwebviewコントロールを使ってネストするのが一般的ですが、このとき不思議なことに、インタフェースの白い画面が表示されます.
このような場合、プログラムを終了し、プロセスを終了し、appに再アクセスし、インタフェースを再ロードするしかありません.まだ他の解決策は見つかりません.
多方面の研究を経て、大神に教えてもらって、以下のいくつかの点を総括してこのような白いスクリーンの情況の出現の確率を減らします.
ソリューション:
1.AndroidでWebページをロードするとインタフェースがキャッシュされ、webviewのキャッシュをクリアすることで、appがH 5インタフェースに入るたびに再ロードされます.
2.setAppCacheEnabledメソッドでwebviewにキャッシュがあるかどうかを制御できます.
3.webviewでH 5インタフェースをロードする場合、H 5のコントロールラベルの一部はandroidでサポートされていない可能性があります.setDomStorageEnabledメソッドを使用して処理できます.
4.異なるandroidバージョンで白い画面が表示される場合:
5.Webviewのコントロールレイアウトの設定:
6.androidシステムの加速器によって配置する:主にandroid manifestである.xmlで設定します.
//ハードウェアアクセラレータappを起動してハードウェアアクセラレータをサポートする:
アプリケーション:
Webviewを使用するインタフェースでハードウェアアクセラレータをオフにします.
Activityインタフェースの登録時:
まとめ:webviewホワイトスクリーンはとても不思議なことで、今のところ私はまだ最適な解決方法を見つけていません.これらの方面を通じてホワイトスクリーンの状況が現れる確率を減らすしかありません.これからも研究を続けなければなりません.
学は尽きない!!!
質問: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ホワイトスクリーンはとても不思議なことで、今のところ私はまだ最適な解決方法を見つけていません.これらの方面を通じてホワイトスクリーンの状況が現れる確率を減らすしかありません.これからも研究を続けなければなりません.
学は尽きない!!!