2016-11-28 13 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(); 
    } 
} 

が起動されますアクティビティです:私は closeActivityを呼び出すとき

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); 
    } 
} 

が活動を視覚的に消えるが、クロムインスペクタ(chrome://inspect)で、私はまだすることができクロスウォークwebviewを参照してください。なぜそれがまだそこにあり、どうすればそれを閉じることができますか?

+0

ないことが起こっている理由は、あまりにも確認してください。 GenericActivity内のonDestroy()をオーバーライドして、そのメソッド内で自分自身を削除/非表示にすることができます。 – MikeOscarEcho

+0

これを行うと、それはまだインスペクタに表示されます。 –

答えて

0

うわー!これは非常に簡単な修正でした。活動で

、私は必要なすべては、このようview.onDestroy()を追加しました:

@Override 
public void onDestroy(){ 
    XWalkView view = (XWalkView)findViewById(R.id.xwalkWebView); 
    view.onDestroy(); 
    super.onDestroy(); 
    finish(); 
} 
関連する問題