Android WebView无法完成

时间:2013-06-19 18:55:38

标签: android webview

我有一个我试图杀死的网页视图,但这是一个很难的混蛋!我试过了:

在我的活动中:

@Override
protected void onStop() {

    if (webView_ != null) {
        webView_.finish(getApplicationContext());
        webView_.destroy();
        webView_ = null;
    }
    super.onStop();
}

在我的网页浏览中:

public void finish(Context context) {

    stopLoading();
    pauseTimers();
    if (alarm_ != null)
        alarm_.cancelAlarm(context);
    if (webViewErrorHandler_ != null)
        webViewErrorHandler_.removeCallbacks(reloadRunnable_);
    if (requestQueue_ != null) {
        requestQueue_.clear();
        requestQueue_ = null;
    }
    callHiddenWebViewMethod("onPause");
}

private void callHiddenWebViewMethod(String name){
    if( this != null ){
        try {
            Method method = WebView.class.getMethod(name);
            method.invoke(this);
        } catch (NoSuchMethodException e) {
            Log.e("MYWEBVIEW", "No such method: " + name);
        } catch (IllegalAccessException e) {
            Log.e("MYWEBVIEW", "Illegal Access: " + name);
        } catch (InvocationTargetException e) {
            Log.e("MYWEBVIEW", "Invocation Target Exception: " + name);
        }
    }
}

但是当我在调试器中查看它时,仍然会运行此webview的线程!

你必须知道我特别希望它在onPause之后工作;)

1 个答案:

答案 0 :(得分:1)

不保证调用活动的onStop。以下是doc的一部分内容:

  

标有“Killable after?”的专栏表示是否   系统可以在之后的任何时间杀死托管活动的进程   方法返回,而不执行活动代码的另一行。   三种方法标记为“是”:( onPause(),onStop()和   的onDestroy())。因为onPause()是三个中的第一个,一旦是   如果创建了activity,则onPause()是最后一个保证的方法   如果系统必须恢复,则在进程被杀死之前被调用   紧急情况下的内存,然后onStop()和onDestroy()可能不是   调用。因此,您应该使用onPause()来写关键   持久性数据(如用户编辑)到存储。但是,你应该   选择在onPause()期间必须保留哪些信息,   因为此方法中的任何阻止过程都会阻止转换到   下一个活动并减缓用户体验。

检查http://developer.android.com/guide/components/activities.html

尝试将onStop中的代码移动到onPause方法。

请将结果发布给您。