**更新--问题不是文件编写器没有关闭,而是错误地终止了Java应用程序。我已经更新了问题。
下面的类启动JAVAFX web视图,并将一些java对象公开给web视图的HTML。
public class FileSystemBridge {
private void writeToFile(String[] fileContents){
if (content!=null){
String fileName ="pathToFile";
BufferedWriter fileWriter;
for (int i =0; i<fileContents.length(); i++ ){
String fileContent fileContents[i]);
try {
fileName = fileName+Integer.toString(i)+".txt";
fileName = fileName.replaceAll("\\s","");
System.out.println(fileName);
File f= new File(filesDir+"/"+fileName);
f.createNewFile();
fileWriter = new BufferedWriter(new FileWriter(f));
fileWriter.write("");
fileWriter.write(fileContent);
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
System.out.println("in the exception!");
e.printStackTrace();
}
}
}
else {
System.out.println("no content");
}
System.out.println("done writing, exit app now");
}
public void exit(){
System.out.println("EXITING!");
Platform.exit();
System.exit(0);
}
}
webEngine.getLoadWorker().stateProperty().addListener(
(ObservableValue<? extends State> ov, State oldState,
State newState) -> {
if (newState == State.SUCCEEDED) {
JSObject context= (JSObject) webEngine.executeScript("window");
context.setMember("fsBridge", new FileSystemBridge());
webEngine.executeScript("init('desktop')");//the hook into our app essentially
}
});
实际上,WebEngine.executescrit(“init”)在我们的前端执行一些初始化。然后,在webview上执行的javascript上,在用户交互上,我们调用我们的FileSystemBridge的write方法,并通过回调调用FileSystemBridge的exit方法,这实际上是对Platform.exit()的调用。
在用户单击时
App.handleWrite(contentToBeWritten, function(success){
if (success){
console.log("inside success!");
App.handleExit();
}
});
然后我们的handleWrite javascript函数
handleWrite: function(content, callback){
fsBridge.callWrite(content);
retVal = true;//more logic to this but simplified for demo
callBack(retVal);
}
现在,在filesystembridge.exit()方法中,我添加了System.exit(0),它成功地终止了我的java实例,这是最初的问题。但是,我想知道这是否是处理使用JAVAFX WebView的java应用程序退出的正确方法。以这种方式使用System.Exit(0)是否有不可预见的后果?
创建UI的Java应用程序在满足某些条件之前不会终止。对于JavaFX应用程序,请确保关闭所有stage
实例。
本文向大家介绍Android编程之退出整个应用程序的方法,包括了Android编程之退出整个应用程序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程之退出整个应用程序的方法。分享给大家供大家参考,具体如下: 我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这
我正在开发移动应用程序与离子有飞溅 截至目前,我正在使用以下代码进行配置 此外,我在第一次启动页面上使用了双击退出,下面是一段代码。 所以在启动页面,若我在5秒内点击两次后退按钮,它就会关闭。我可以在“打开的应用程序”列表中看到应用程序仍处于打开状态。(android手机中的第一个或最后一个按钮)。 问题是,如果我在双击退出后重新启动应用程序,那么它会显示一段时间的白屏和启动屏幕(但没有闪屏)。我
问题内容: 使我的PyQt应用程序从控制台中退出时(Ctrl-C),退出的正确方法是什么? 当前(我在处理unix信号方面没有做任何特别的事情),我的PyQt应用程序忽略了SIGINT(Ctrl + C)。我希望它表现良好并在被杀死时退出。我该怎么办? 问题答案: 17.4。signal —设置异步事件的处理程序 尽管就Python用户而言,Python信号处理程序是异步调用的,但它们只能出现在P
我如何以编程方式关闭一个Flutter应用程序?我尝试弹出唯一的屏幕,但结果是黑屏。
问题内容: 在Go中,设置流程退出代码的正确方法是什么? 我尝试将主要功能更改为 但这会导致错误 好的,所以有,但是这会立即中止该过程并且不会干净退出(例如,不执行任何递延操作)。 我还发现它将退出进程并将状态代码设置为非零,这可能是最好的方法,尽管它会将堆栈跟踪信息转储到控制台。 设置退出代码的正确方法是什么? 问题答案: 使最后一个延迟函数执行。延迟函数在周围函数返回之前立即执行,以相反的顺序
问题内容: 我正在开发使用Facebook SDK登录的ios应用程序。我在情节提要中将a设置为初始View Controller,用户从中使用FB帐户登录。 我有另一个ViewController,一旦用户登录,它将正确加载。 我正在检查AppDelegate文件,如果不是nil,则直接加载第二个ViewController,因为用户已经登录。 但是,如果我退出该应用程序并重新启动它,则始终为零