类似于 Java 中 C# 的 Process.Close 事件?

Similar to C#'s Process.Close event in Java?

如果我在 Java 中使用 ProcessBuilder 启动一个进程,是否有办法监听该进程是否已关闭?我想做的是启动一个进程,向 mySQL table 插入一条记录,当进程被终止或用户退出时,然后在 mysql 中执行一条删除语句] table。我已经在 C# 中完成了,但是我的用户要求应用程序也能够在 linux 和 mac 上 运行,我坚持在这部分。

试试这个我的朋友。

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

您或许可以使用 Android 生命周期之一,即 onDestroy() 方法,只需确保您会在其中一个事件中调用 finish()。

此外,您还可以将 finish() 放在警告​​对话框按钮上,当用户在登录屏幕上按下后退按钮时,该按钮会弹出。您可能会添加 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() 函数,因为它将作为它的触发器,或者如果用户 phone 超出其内存容量并且该应用程序被迫结束。