【问题标题】:Cordova app with integrated plugin on webview crash when try to exit plugin webview (android test)尝试退出插件 webview 时,带有集成插件的 Cordova 应用程序在 webview 上崩溃(android 测试)
【发布时间】:2018-06-25 19:26:31
【问题描述】:

当我尝试从cordova 上集成的cordova 插件返回时遇到问题。当我尝试这样做时,应用程序崩溃了,我首先调试了 javascript,然后调试了 javascript 调用的本机代码,这是导致应用程序崩溃的指令。

cordova.getActivity().finish();

这是在这个最全局上下文中的 TestPlugin.java 文件中:

   if (action.equals("open")) {

    try {
      cordova.getThreadPool().execute(new Runnable() {
        @Override
        public void run() {
          Intent intent = new Intent(cordova.getActivity(),
            PhemiumEnduserActivity.class);
          cordova.getActivity().startActivity(intent);
          cordova.getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
        }
      });
      callback.success("");
    } catch (final Exception e) {
      callback.error(e.getMessage());
    }

  }
  else if( action.equals("exit_app") ) {
    try {
      cordova.getThreadPool().execute(new Runnable() {
        @Override
        public void run() {
          cordova.getActivity().finish();
        }
      });
      callback.success("");
    } catch (final Exception e) {
      callback.error(e.getMessage());
    }
  } 

当应用程序调用插件时执行“打开”部分,当我单击后退按钮时会执行“exit_app”部分,然后 cordova.getActivity().finish(); 应用程序崩溃在 android studio 控制台上没有错误。没有 webview 关闭的信号。我做错了什么?为什么会崩溃?

【问题讨论】:

    标签: android cordova plugins crash cordova-plugins


    【解决方案1】:

    请发布完整的插件代码或存储库,但我认为是因为您尝试在另一个线程中完成活动,或者活动不再存在(getActivity 返回 null)。

    你需要尝试一下:

    protected Activity mActivity;
    ....
    else if( action.equals("exit_app") ) {
        mActivity = cordova.getActivity();
        try {
          cordova.getThreadPool().execute(new Runnable() {
            @Override
            public void run() {
             if(mActivity!=null)
               mActivity.finish();
            }
          });
          callback.success("");
        } catch (final Exception e) {
          callback.error(e.getMessage());
        }
      } 
    

    如需更多跟踪信息,请尝试在 Android Studio 中打开 android 项目并进行调试。

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多