Also wenn ich deine Idee mal grob abstrahieren darf.
1. Dein Objekt wird erzeugt
2. Irgendwas/Irgendwer entfernt sich schnell/langsam
3. Objekt wird zerstört, weil Entfernung > 50m oder 60 Sekunden abgelaufen sind
Wenn das so stimmt, würde ich folgenden Vorschlag machen:
1. Wenn du dein Objekt erzeugst, speicherst du in einer Variablen die aktuelle Systemzeit ab.
Java:
myObject = new Object();
creationTimestamp = System.currentTimeMillis();
2. Du registrierst bei deinem Objekt einen Listener, der informiert wird, ob die Distanz überschritten wurde.
Java:
myObject.setDistanceListener(new DistanceListener() {...});
...
public interface DistanceListener {
void distanceAlert(long distance);
}
3. Du implementierst einen konkreten DistanceListener, der dir dann dein myObject zerstört bzw. myObject = null setzt.
4. Je nachdem, ob du in deinem Main-Thread weitere wichtige Operationen erledigen musst oder nicht:
Main-Thread: Ich würde dir empfehlen direkt nach der Erzeugung des Objekts und der Abfrage von der Systemzeit eine While-Schleife zu machen, in der du in der Bedingung abfrägst, ob die Zeit überschritten wurde, oder das Objekt bereits zerstört (null) ist.
Externer-Thread: Macht im Prinzip das gleiche, wie ich es im Main-Thread erklärt habe, nur in einem eigenen Thread, sodass du deinen Main-Thread für weitere Operationen frei hast und nicht blockierst.