samo włączanie wyłączania wstrzymywanie i wznawianie wątku bo zakładam ze ta czynność jest w osobnym wątku jest dość proste, surowa wersja moze wyglądać tak
public class Interupted extends Thread {
private final Object mLock = new Object();
private volatile boolean mWait = false;
public void begin() {
start();
}
public void finish() {
interrupt();
}
public void pause() {
mWait = true;
}
public void proceed() {
synchronized (mLock) {
mWait = false;
mLock.notify();
}
}
public void flip() {
if (mWait) {
proceed();
} else {
pause();
}
}
@Override
public void run() {
synchronized (mLock) {
while (true) {
if (mWait) {
try {
mLock.wait();
} catch (InterruptedException e) {
break;
}
}
if (isInterrupted()) {
break;
}
//tu twoja czynność
}
}
}
}
begin włącza, finish konczy, pause wiadomo proceed wznawia a flip zmienia stan jak działało to wstrzymuje itd...
lub zamiast stosować zamek w postaci obiektu można skorzystać z czegoś co się nazywa ConditionVariable ale zaraz zleci się tu szarańcza i zacznie spamować stwierdzeniami że to "bizantyjski kod" czy jakoś tak wiec zapomnij o tym co napisałem
co do reszty to przenieś swoje obliczenia do Service a tak w ogóle to zmień koncepcje