2012-08-22 37 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