webview threads running

  • Hello,

    I have the following problem with a WebView Control. I have the following code:

    public class MyWebView extends Activity {
    private WebView webview;
    ...

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mywebview);
    ...
    webview = new WebView(getApplicationContext());
    webview.setWebChromeClient(new WebChromeClient() { ... });
    webview.setWebViewClient(new WebViewClient() { ... });
    ...
    webview.loadUrl("http://www.google.de");
    }

    The Webpage is opened, but if close the Activity on Back-Button pressed and go back to my main-menue, the WebView is not closed and the http-threads keep running.
    If I open about 10 several pages one after another, the Webpages are not nonger loadet, but "Webpage not available" is displayd in the WebView.

    I tried to close the thread by adding the code:
    webview.destroy();
    webview = null;
    and
    myLinearLayout = null;
    and
    Method op = Class.forName("android.webkit.WebView").getMethod("onPause",(Class[]) null);
    op.invoke(webview, (Object[]) null);

    But there is no change - the http-threads are still running.
    What is wrong? How to close the WebView in the right way?

    Thanx a lot for any suggestions!

  • Hi,

    i have exactly the same problem. I´m trying to fix it for a couple of days without any success :(

    Ha anybody an idea? A code-example would be great!

    Thanks a lot!!!

  • I'd say it depends on what you do in your onPause() method of the activity containing the webview. You should call webview.onPause() there and basically it should work like that.

    Gruß
    Thorsten

  • In the onPause-method of the activity i call the onPause of the webview as shown below. There occours NO error, but the treads (http0, http1, http2, http3) are still running (not paused). Maybee you can give me a working code-sample what to do in the onPause-method of the activity?

    protected void onPause(){
    super.onPause();
    webview.clearCache(true);
    webview.pauseTimers();
    if(isFinishing()){
    webview.loadUrl("about:blank");
    }

    try {
    Method method = WebView.class.getMethod("onPause");
    method.invoke(webview);
    } catch (IllegalArgumentException e) {
    e.printStackTrace();
    } catch (SecurityException e) {
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    e.printStackTrace();
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }

    CookieSyncManager.getInstance().stopSync();
    }

  • I haven't tried this yet, but if it works like all the other default Android views, you can simply call webview.onPause(), I have never used the way over method.invoke()

    Gruß
    Thorsten

  • Strange, the API says, it's public.

    EDIT: at least since API Level 11...that might be the catch here. Which Version are you developing for?

    Gruß
    Thorsten

  • I have Android 2.1, SDK 7. But I built a project with the same code for Android 2.2 and 2.3. Nothing changed, so this can't cause the problem.

    But I'm note sure if the running http-threads cause my problem, that the message "web page not available" is displayd after opening of several webpages.
    Maybee this has an other reason?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!