2016-11-28 96 views
0

我有一个JavaScript界面​​,我正在使用人行横道,它有一个closeActivity方法。接口看起来是这样的:Android活动没有完全关闭

public class JavaScriptInterface { 

    private Activity activity; 

    public JavaScriptInterface(Activity activity) { 
     this.activity = activity; 
    } 

    /** 
    * Starts a new activity 
    * @param page 
    * @return 
    */ 
    @JavascriptInterface 
    public boolean openActivity(String page){ 
     if(isConnected()) { 
      Intent intent = new Intent(activity, GenericActivity.class); 
      intent.putExtra("page", page); 
      activity.startActivity(intent); 
      return true; 
     } 
     return false; 
    } 

    /** 
    * Closes the current activity 
    */ 
    @JavascriptInterface 
    public void closeActivity(){ 
     activity.finish(); 
    } 
} 

这里是一个被推出的活动:

public class GenericActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_generic); 

     Intent intent = getIntent(); 
     String page = intent.getStringExtra("page"); 

     XWalkView xWalkWebView = (XWalkView)findViewById(R.id.xwalkWebView); 

     // Turn on debugging if we are in DEBUG mode 
     if (BuildConfig.DEBUG) { 
      XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true); 
      xWalkWebView.clearCache(true); 
     } 

     // Add the connector to talk to/from javascript 
     JavaScriptInterface i = new JavaScriptInterface(this); 
     xWalkWebView.addJavascriptInterface(i, "jsConnector"); 

     // Load the base file 
     xWalkWebView.loadAppFromManifest("file:///android_asset/manifest.json", null); 
     xWalkWebView.loadUrl("file:///android_asset/" + page + ".html", null); 
    } 
} 

当我打电话closeActivity活动在视觉上消失了,但在Chrome检查(chrome://inspect),我还是可以的看到人行横道webview。为什么它仍然存在,我如何关闭它?

+0

不太清楚这是为什么发生。您可以重写GenericActivity中的onDestroy(),并在该方法中自己移除/隐藏webView。 – MikeOscarEcho

+0

这样做,它仍然显示在检查员。 –

回答

0

哇!这是一个超级简单的修复。

在活动中,我只需要添加view.onDestroy()这样的:

@Override 
public void onDestroy(){ 
    XWalkView view = (XWalkView)findViewById(R.id.xwalkWebView); 
    view.onDestroy(); 
    super.onDestroy(); 
    finish(); 
}