Ich habe eine Klasse, die in einem Tread instanziiert und gestartet wird. Der Code lautet wie folgt:
private class StartCycle implements Runnable {
@Override
public void run() {
...
while(pomodoroLeft > 0) {
...
synchronized(runnable){
try{
runnable.wait();
} catch(InterruptedException e){}
}
runTime = shortLength * ONE_MINUTE; //These statements are not getting
runnable = new Clock(); //executed
runnable.run();
}
}
}
Die Uhrenklasse mit laufendem Instanznamen ist wie folgt:
private class Clock implements Runnable
{
public void run() {
...
synchronized (this) {
runnable.notifyAll();
}
//here goes the alarm.
}
}
}
Aus irgendeinem Grund kehrt die Ausführung des ersten Threads nicht zu seinem Pfad und seinen Anweisungen zurück. Habe ich die Benachrichtigung versaut? Oder gibt es einen anderen Grund dafür?
Antworten:
0 für die Antwort № 1Wenn Sie einen Alarm / Timer erstellen, verwenden Sie einfach den in AlarmManager integrierten Android
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, (1000 * 60), (1000 * 60), yourPendingIntent);
Am wahrscheinlichsten, wenn Sie Ihre eigene erstellen, verbraucht Ihre App den Großteil der CPU, was zu einem Lowbat Ihres Benutzers führen wird