Похоже на событие C # Process.Close в Java?

1

Если я запускаю процесс с использованием ProcessBuilder в Java, есть ли способ прослушать, был ли этот процесс закрыт? То, что я хотел бы сделать, - это запустить процесс, вставить запись в таблицу mySQL, а когда процесс будет убит или пользователь выйдет, выполните команду delete в этой таблице mysql. Я уже делал это на С#, но мои пользователи просили приложение работать на Linux и Mac тоже, и я застрял в этой части.

  • 0
    Хм, зачем вообще для этого проходить внешний процесс? Есть JDBC, есть JooQ.
  • 0
    Возможно, вы меня неправильно поняли. Я создаю средство запуска для игры и вставляю имя пользователя в базу данных, чтобы убедиться, что он использует средство запуска, предоставленное сервером. Когда он входит в систему и запускает игру, перед запуском процесса приложение вставляет свое имя пользователя в БД (используя JDBC), а затем, если он входит в игру, приложение на стороне сервера проверяет, есть ли имя пользователя в таблице. Если да, то он использует это. Мне нужно убедиться, что его имя удалено из таблицы, если он закрывает игру, поэтому мне нужен слушатель для события закрытия процесса, если оно существует.
Показать ещё 2 комментария
Теги:
swing
events
process

2 ответа

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");;
        }            
    }
}
  • 0
    Разве это не делает мою основную тему не отвечающей? Ах, я думаю, я должен просто поместить это в другую ветку, и это должно решить это, спасибо!
  • 0
    Да это правильно.
0

Вероятно, вы можете использовать один из жизненных циклов 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(), потому что он будет работать как триггер для него, или может быть, если пользовательский телефон превышает его объем памяти, и приложение принудительно завершено.

  • 0
    Вопрос, похоже, не об Android.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню