当我尝试从cordova上集成的cordova插件返回时,我遇到了问题。当我尝试这样做时,应用程序崩溃,我首先调试了javascript,然后调试了javascript调用的本机代码,这是使应用程序崩溃的指令。
cordova.getActivity()结束();
这是在这个最全球化的背景下的 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()。完成(); 应用程序崩溃在android studio控制台上没有错误。没有关于webview的信号。我做错了什么?为什么会崩溃?
答案 0 :(得分:0)
请发布完整的插件代码或存储库,但我认为是因为您尝试在另一个线程中完成活动,或者活动不再存在(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项目并进行调试。