0

Javascriptファイルを使用してページ全体をWebViewにロードするWebサイトをロードします。ページをWebビューにロードするたびに、メモリがいくらか増加したことが示されます

設定 > アプリ > 実行中

Webview を解放しても、メモリは解放されません。

Webview でリソースをキャッシュしていません。しかし、計測器を使用してメモリを分析すると、画像リソースがメモリにキャッシュされていて、解放されていないことがわかります。私のコードはここにあります ref :

    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    Intent in = getIntent();
    String page_url = in.getStringExtra("link");
    Log.i("display","url :"+page_url);
    if(deleteDatabase("webview.db") && deleteDatabase("webviewCache.db")){
        Toast.makeText(this, "Delete Webvie data base successfully",Toast.LENGTH_SHORT).show();
    }
    webview = (WebView) findViewById(R.id.webpage);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new WebViewClient());
    webview.getSettings().setLoadWithOverviewMode(true);
    webview.getSettings().setAppCacheEnabled(false);
    webview.loadUrl(page_url);
    webview.clearHistory();
    webview.clearFormData();
    webview.clearCache(true);

誰かが私が行方不明になっている場所を案内してもらえますか? WebView へのメモリ読み込みを最適化するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

1

WebView は複雑な UI ウィジェットであり、使用中に大量のメモリを消費します。Andriod 4.4 より前では、バックグラウンドでメモリを実際に使用しているものに応じて、WebView.freeMemory() API が役立つ場合があります。

WebView の使用が終了し、WebView.destroy() を呼び出してビュー階層から切り離すと、一部のメモリが再利用されます。

Android 4.4 では、メモリ管理は WebView 内でより自動化されており、システムに負荷がかかり、onTrimMemory がトリガーされると、WebView はメモリを解放しようとします ( http://developer.android.com/reference/android/content/ComponentCallbacks2.html# onTrimMemory(int) )。

于 2013-12-01T20:28:56.190 に答える