title: Android WebView not stopping after user presses back
body: <p>I am playing a YouTube video inside a WebView. I am able to play it, but when the person leaves the screen, I am not able to stop the audio from playing.</p>
  
  <p>I tried various things inside onDestroy and onPause, or taking them out entirely, but they didn't seem to make a difference.</p>
  
  <p>Would anyone know why the audio keeps playing and doesn't stop even after the app is turned off and the user opens other apps? </p>
  
  <p>Here is my code for the whole class:</p>
  
  <pre><code>import com.flurry.android.FlurryAgent;
  
  import utils.SendEmail;
  import android.app.Activity;
  import android.app.AlertDialog;
  import android.content.Context;
  import android.content.DialogInterface;
  import android.content.Intent;
  import android.content.SharedPreferences;
  import android.os.Bundle;
  import android.preference.PreferenceManager;
  import android.view.KeyEvent;
  import android.view.View;
  import android.webkit.WebChromeClient;
  import android.webkit.WebSettings;
  import android.webkit.WebView;
  import android.webkit.WebViewClient;
  import android.webkit.WebSettings.PluginState;
  import android.widget.Button;
  
  public class YoutubeActivity extends Activity
  {
      WebView webview = null;
  
      @Override
      public void onCreate(Bundle savedInstanceState) 
      {
          super.onCreate(savedInstanceState);
          webview = new WebView(this);
  
              setContentView(webview);
  
              webview.getSettings().setAppCacheEnabled(false);
              webview.getSettings().setJavaScriptEnabled(true);
              webview.setInitialScale(1);
              webview.getSettings().setPluginState(PluginState.ON);
  
              WebSettings webSettings = webview.getSettings();
  
              webSettings.setLoadsImagesAutomatically(true);
              webSettings.setLoadWithOverviewMode(true);
              webSettings.setBuiltInZoomControls(true);        
              webSettings.setUseWideViewPort(true);
  
              webview.setWebViewClient(new WebViewClient() {
                  public boolean shouldOverrideUrlLoading(WebView view, String url) {
                      view.loadUrl(url);              
                      return false;
                  }
              });        
  
  
              webview.setWebChromeClient(new WebChromeClient(){});
  
              webSettings.setDomStorageEnabled(true);
              webSettings.setAppCacheEnabled(true);
                          webSettings.setAppCachePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/cache");            
  
              webSettings.setDatabaseEnabled(true);
              webSettings.setDatabasePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/databases");
  
              SharedPreferences prefs = 
                      PreferenceManager.getDefaultSharedPreferences( YoutubeActivity.this);
              String url_to_watch = prefs.getString( "url_to_watch" , null ); 
  
  
              webview.loadUrl(url_to_watch);
      }
  
  
  
      @Override
      public void onPause()
      {
         super.onPause();
  
         try
         {
             if ( webview != null )
             {
                 webview.clearCache(true); 
                 webview.getSettings().setAppCacheEnabled(false);
                 webview.stopLoading();
                 webview.destroy();           
                 sendEmail ("in pause " , "");
                 webview = new WebView(this);
             }
  
             this.finish();
         }
         catch ( Exception e )
         {
  
         }
      }
  
  
      @Override
      public void onDestroy()
      {
         super.onDestroy();
  
         try
         {
             if ( webview != null )
             {
                 webview = new WebView(this); // To try to reset the webview - didn't work.
             }
         }
         catch ( Exception e )
         {
  
         }    
      }
  
      @Override
      public void onStop()
      {
         super.onStop();
  
         FlurryAgent.onEndSession(this);
  
         try
         {
             if ( webview != null )
             {
                 webview.clearView();
                 webview.getSettings().setAppCacheEnabled(false);
                 webview.stopLoading();
                 webview.destroy();
  
                 sendEmail ("in stop " , "");
             }
         }
         catch ( Exception e )
         {
  
         }
  
         this.finish();
      }   
  
      @Override
      protected void onResume() 
      {
          super.onResume();
  
          try
          {
              webview.onResume();
          }
          catch ( Exception  e )
          {
  
          }
      }
  
      @Override
      protected void onRestart() 
      {
          super.onRestart();
      }    
  
  
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) 
      {
          if ((keyCode == KeyEvent.KEYCODE_BACK) &amp;&amp; webview.canGoBack()) 
          {
              webview.goBack();
              return true;
          }
          return super.onKeyDown(keyCode, event);
      }   
  
      // Subject , body
      public void sendEmail( String subject , String body )
      {
          String[] params = new String[] { "http://www.problemio.com/problems/send_email_mobile.php", subject, body };
  
          SendEmail task = new SendEmail();
          task.execute(params);               
      }  
  
  
      //@Override 
      public void onPageFinished(WebView view, String url) 
      { 
          //super.onPageFinished(view, url); 
          view.clearCache(true); 
      }
  
      public void onBackPressed ( )
      {   
          final AlertDialog.Builder linkedin_builder = new AlertDialog.Builder(this);
  
               linkedin_builder.setMessage("" +
                      "Go back to the home screen?")
                  .setCancelable(false)            
                  .setNegativeButton("YES", new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog, int id) 
                      {
                          if ( webview != null )
                          {
                              webview.destroy();
                          }
  
                          Intent myIntent = new Intent(YoutubeActivity.this, MainActivity.class);
                          YoutubeActivity.this.startActivity(myIntent);
                      }
                  })              
                  .setPositiveButton("NO", new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog, int id) 
                      {
                          dialog.cancel();                  
                      }
                  })
  ;
           AlertDialog alert = linkedin_builder.create();
           alert.show();      
      }
  
  
      @Override
      protected void onStart()
      {
          super.onStart();
          FlurryAgent.onStartSession(this, "4VYNFK3V6RCZ53CZ3J32");
      }    
  }
  </code></pre>
  
  <p>Any thoughts on what might stop the audio from playing and what may be causing it?
  Thank you!</p>