私のWebビューでローカルHTMLコンテンツを読み込もうとしています。しかし、時にはそれがコンテンツを読み込まなかった代わりに、空白の画面が表示されます。それは5回の積み込みごとに発生します。Android WebviewでHTMLが読み込まれない場合があります。
私のHTMLコンテンツは、ロードしようとしていますOfficial 2048 Source codeです。マニフェストファイルの上
- 入れのハードウェアアクセラレーション:
以下は、私が問題を解決するには、以下の事を試してみました今までの私の活動のソースコード
public class GameActivity extends AppCompatActivity { private WebView mWebView; @SuppressWarnings("ConstantConditions") @SuppressLint({ "SetJavaScriptEnabled", "NewApi", "ShowToast"}) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); setContentView(R.layout.activity_game); Toolbar toolbar = (Toolbar) findViewById(R.id.game_toolbar); if (toolbar != null) { setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); } } // Load webview with game mWebView = (WebView) findViewById(R.id.mainWebView); WebSettings settings = mWebView.getSettings(); String packageName = getPackageName(); settings.setJavaScriptEnabled(true); settings.setDomStorageEnabled(true); settings.setDatabaseEnabled(true); settings.setRenderPriority(WebSettings.RenderPriority.HIGH); if (Build.VERSION.SDK_INT >= 19) { // chromium, enable hardware acceleration mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null); } else { // older android version, disable hardware acceleration mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } // Since the database path is automatically handled by Chromium Webkit, // we should not mention the db path for greater than KitKat version if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { settings.setDatabasePath("/data/data/" + packageName + "/databases"); } mWebView.addJavascriptInterface(new WebInterface2048(this), "Android"); // If there is a previous instance restore it in the webview if (savedInstanceState != null) { mWebView.restoreState(savedInstanceState); } else { mWebView.loadUrl("file:///android_asset/2048/index.html"); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; } return super.onOptionsItemSelected(item); } public class WebInterface2048 { Context mContext; public WebInterface2048(Context context) { mContext = context; } @JavascriptInterface public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } } }
です。
- 有効と無効アクティビティ内のハードウェアアクセラレーション。
- shouldOverrideUrlLoading
- 内の同じURLをリローデッド)は(ONSTART内のURLをロードしようとしました代わりのonCreate(の)
しかし、何も私のために働いているように見えるん。
私のログ:
D/OpenGLRenderer: endAllActiveAnimators on 0xb7d7e248 (RippleDrawable) with handle 0xb76b0cf0
I/AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead.
D/cr_Ime: [InputMethodManagerWrapper.java:30] Constructor
W/cr_AwContents: onDetachedFromWindow called when already detached. Ignoring
D/cr_Ime: [InputMethodManagerWrapper.java:59] isActive: false
I/cr_Ime: ImeThread is not enabled.
W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 18631
D/cr_Ime: [InputMethodManagerWrapper.java:59] isActive: true
D/cr_Ime: [InputMethodManagerWrapper.java:68] hideSoftInputFromWindow
D/OpenGLRenderer: endAllActiveAnimators on 0xb7a893f8 (RippleDrawable) with handle 0xb7ec8810
I/AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead.
D/cr_Ime: [InputMethodManagerWrapper.java:30] Constructor
W/cr_AwContents: onDetachedFromWindow called when already detached. Ignoring
D/cr_Ime: [InputMethodManagerWrapper.java:59] isActive: false
I/cr_Ime: ImeThread is not enabled.
W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 18631
D/cr_Ime: [InputMethodManagerWrapper.java:59] isActive: true
D/cr_Ime: [InputMethodManagerWrapper.java:68] hideSoftInputFromWindow
追加情報:マイデバイスは
あなたのwebviewにmatch_parentが幅と高さの両方で設定されていますか? – mmark
@ mmark、はいそれはmatch_parentを持っています。 –