2012-04-17 6 views
6

나는 안드로이드 스레딩에서 중지 및 재개가 권장되지 않는 것으로 나타났습니다. 이 문제를 해결하려면 어떻게해야합니까? 아니면 Android에서 스레드를 일시 중지하고 다시 시작할 수 있습니까?android에서 스레드를 일시 중단하고 다시 시작하는 방법은 무엇입니까?

+0

방법 서비스에 대한 : http://developer.android.com/ guide/topics/fundamentals/services.html – Leo

+0

안녕하세요 LeoLink 서비스가 내 문제를 해결할 것이라고 생각하지 않습니다. 감사합니다 anywyays :) – rosesr

답변

7

실제로 무작위 지점에서 스레드를 일시 중단하거나 중지하는 것은 안전하지 않은 개념이므로 이러한 방법은 더 이상 사용되지 않습니다.

당신이 내 의견으로는 할 수있는 최선은 wait 사용하여 스레드의 run 방법에 일시 중지하고 거기 정지의 고정 점을 가지고있다 :

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

오, 알았어요. 지금 @ 튜더. btw 또 다른 설명이 스레드에서 신호를 보내는 것과 비슷합니까? – rosesr

+1

@rosesr : 예를 들어 리눅스의 조건 변수와 비슷합니다. – Tudor

관련 문제