2012-04-17 16 views
6

Po prostu zauważyłem, że zawieszenie i wznawianie wątków w systemie Android jest przestarzałe. Na czym polega ta praca lub jak mogę zawiesić i wznowić wątek na Androidzie?Jak zawiesić i wznowić wątki w systemie Android?

+0

jak o usługi: http://developer.android.com/ guide/topics/baseals/services.html – Leo

+0

Witam LeoLink Nie sądzę, że usługi posortują mój problem. dzięki anywyays :) – rosesr

Odpowiedz

7

Rzeczywiście zawieszanie lub zatrzymywanie wątków w losowych punktach jest niebezpiecznym pomysłem, dlatego te metody są przestarzałe.

Najlepsze co możesz zrobić, moim zdaniem jest, aby mieć stałe punkty zatrzymując w run metody Twojego wątku i zatrzymując się tam za pomocą wait:

class ThreadTask implements Runnable { 

    private volatile boolean paused; 
    private final Object signal = new Object(); 

    public void run() { 
     // some code 

     while(paused) { // pause point 1 
      synchronized(signal) signal.wait(); 
     } 

     // some other code 

     while(paused) { // pause point 2 
      synchronized(signal) signal.wait(); 
     } 

     // ... 
    } 

    public void setPaused() { 
     paused = true;  
    } 

    public void setUnpaused() { 
     paused = false; 
     synchronized(signal) signal.notify(); 
    } 
} 
+0

Oh ok Rozumiem to teraz @Tudor. czy inne wyjaśnienie jest podobne do sygnalizowania w wątkach? – rosesr

+1

@rosesr: Jest podobny do zmiennych warunkowych na przykład w Linuksie. – Tudor