2012-08-22 76 views
-1

我正在開發針對android的自定義瀏覽器。當瀏覽器支持JavaScript時,當您瀏覽網站時,應用程序獲得的Ram比我在沒有JavaScript支持的情況下使用瀏覽器多得多。請給一個告知如何解決這個問題Android WebView內存泄露

公共無效的onCreate(捆綁savedInstanceState){

mWebView=new WebView(getApplicationContext()); 
      mWebContainer=(FrameLayout)findViewById(R.id.web_container); 
      mWebContainer.addView(mWebView); 
      mWebView.getSettings().setUserAgentString(""); 
      mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setPluginsEnabled(true); 
     mWebView.getSettings().setPluginState(PluginState.ON); 
     mWebView.getSettings().setDatabaseEnabled(true); 
     mWebView.getSettings().setGeolocationEnabled(true); 
     mWebView.getSettings().setSupportZoom(true); 
     mWebView.getSettings().setSavePassword(true); 
     mWebView.getSettings().setSaveFormData(true); 
     } 
     ........................................ 

    private static class HelloWebViewClient extends WebViewClient 
     { 

      @Override 

      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 

       view.loadUrl(url); 

       return true; 
      } 
     ........................ 

     protected void onDestroy() 
     { 

      super.onDestroy(); 
      mWebContainer.removeAllViews(); 
      mWebView.destroy(); 
      mWebView=null; 
      System.gc(); 
     } 

創建了一個簡單的WebView,如內存泄漏。

回答

0

我不確定你有什麼選擇。內存使用情況由webview小部件管理,系統管理。

因此,您的應用程序將使用大量的內存。

+0

但爲什麼其他瀏覽器不使用這麼多的內存? – AndroidNub

+0

我想這是因爲它們是用NDK(http://developer.android.com/tools/sdk/ndk/index.html)創建的,它允許更多的控制這種東西。 – Aerilys

+0

你的意思是如果我沒有使用ndk,那麼由於內存不足,我的程序可能隨時關閉?爲什麼支持JavaScript會消耗大量內存? – AndroidNub