У меня есть библиотека, метод которой вызывает ранее установленный слушатель (с лямбда-выражением), а затем планирует задачу, чтобы повторить метод еще раз. Проблема в том, что когда программа, использующая эту библиотеку, получает ответ слушателя, если я вызываю другой метод, запланированная задача никогда не запускается.
Это код из библиотеки:
public void checkLicense(String licenseSerial, String productName) {
...
checkInfo.setReason("VALID");
this.listener.checkResult(checkInfo);
time.schedule(new TimerTask() {
@Override
public void run() {
checkLicense(licenseSerial, productName);
}
}, 5000); //Check again in 5 seconds
И это код из программы, которая устанавливает слушателя (с лямбда-выражением, указывающим действия) и вызывает библиотеку (Licencheck):
while(typeLicense==null){
licencheck.addInvalidLicenseListener(checkInfo -> {
switch (checkInfo.getReason()){
case ("VALID"):{
System.out.println("Valid Serial!");
serial[1]="ok";
Game game = new Game();
game.start(); //If I do this call, the Task scheduled doesn't execute
break;
}
}
});
licencheck.checkLicense(serial[0],"ExampleLicencheck");
И game.start () вызывает это Кажется, что это не позволяет запускать задачу:
public void start(){
while(true){
...
}
}
В резюме: если слушатель отвечает "Valid" и нет вызова game.start (), checkLicense выполняется снова (как есть предыдущее запланированное задание). Если я включаю в действия ответа вызов game.start (), он запускает этот метод и не выполняет задачу.