如果我在Java中使用ProcessBuilder启动进程,有没有办法监听该进程是否已关闭?我想要做的是启动进程,将记录插入mySQL表,当进程被终止或用户退出时,然后在该mysql表中执行delete语句。我已经在C#中完成了它,但是我的用户也要求应用程序能够在linux和mac上运行,我坚持使用这部分。
答案 0 :(得分:2)
试试这个我的朋友。
public class YourClass {
public static void main(String[] args) throws IOException {
ProcessBuilder yourProcess = new ProcessBuilder();
Process process = yourProcess.start();//Creates a new object containing your process
//Your insert SQL stuff...
try {
process.waitFor();//Waits until the process finish
//Your delete SQL stuff...
} catch (InterruptedException ex) {
System.out.println("The process finished unexpectly");;
}
}
}
答案 1 :(得分:0)
您可以使用其中一个Android生命周期,即onDestroy()方法,只需确保您在其中一个事件上调用finish()。
此外,您还可以将finish()放在Alert Dialog按钮上,当用户按下登录屏幕上的后退按钮时,该按钮会弹出。您可能会添加方法onBackPressed(),然后您的最终代码应如下所示:
onDestroy(){
super.onDestroy();
//place your delete function here..
}
//then call this when user pressed home button or backbutton on login screen
finish();
//or
onBackPressed(){
//Show a dialog
//then put the finish() function on the positive button of a dialog.
dialog.setPositiveButton...{
finish();
}
当你有一个onDestroy()方法时,确保你正在使用finish()函数,因为它将服务器作为它的触发器,或者如果用户手机超过其内存容量并且应用程序被迫结束