Uma maneira mais eficiente de pausar o loop desejado
É possível reescrever este código para melhor trabalhar com o processador? Eu tenho uma classe, que faz algumas tarefas com periodicy fixo em um segmento separado. Às vezes, esse processo pode ser pausado e retomado. Atualmente estou usando um sinalizador para pausar, funciona bem, mas o loop dessa forma ainda carrega o processador quando o processo é pausado. É possível consertar isso?
private boolean mIsCanceled = false;
private boolean mIsPaused = true; // TODO more efficient for processor way of pausing is required
private final Thread mTimerThread = new Thread(new Runnable() {
@Override
public void run() {
while(!mIsCanceled){
try {
Thread.sleep(UPDATE_PERIOD);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!mIsPaused){
doStep();
}
}
}
});
public MyClass(){
mTimerThread.start();
}
private void pause(){
mIsPaused = true;
}
private void resume(){
mIsPaused = false;
}
private void doStep(){
// Some code
}
Por favor, apenas forneça uma implementação alternativa do meu código.
P.S. O ambiente é o Android OS 2.2+