Если я запускаю процесс с использованием ProcessBuilder в Java, есть ли способ прослушать, был ли этот процесс закрыт? То, что я хотел бы сделать, - это запустить процесс, вставить запись в таблицу mySQL, а когда процесс будет убит или пользователь выйдет, выполните команду delete в этой таблице mysql. Я уже делал это на С#, но мои пользователи просили приложение работать на 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(), просто убедитесь, что вы назовете финиш() на одном из ваших событий.
Кроме того, вы также можете поместить финиш() на кнопку 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();
}
просто убедитесь, что вы используете функцию finish(), когда у вас есть метод onDestroy(), потому что он будет работать как триггер для него, или может быть, если пользовательский телефон превышает его объем памяти, и приложение принудительно завершено.