2013-05-14 67 views
0

你好,我是在安卓(Java)的新的,和我有使用線程的問題線程的Runnable - 停止和恢復

我定義一個類裏面Ë新線程超時(每5秒)我android項目。 的「mContinueThread」變量用來每5秒

r = new Runnable() { 
    public void run() { 
     while (mContinueThread) { 
      try { 
       Thread.sleep(MILLISEC_BEFORE_RELOAD); 
       mHandler.sendEmptyMessage(GET_TRACKING); 
      } 
      catch (Exception e) 
      { 

      } 
     } 
    } 
}; 
t = new Thread(r); 

在類存在與螺紋

public void StartTrack() 
{ 
    mContinueThread=true; 
    if (!mThreadIsStarted) 
    { 
     mThreadIsStarted=true; 
     t.start(); 
    } 
    else 
    { 

    } 
} 

啓動方法StartTrack()cicle和還有一種方法退出該止擋線程,利用「mContinueThread」變量:

public void LogOut() 
{ 
    //STOP THREAD 
    mContinueThread=false; 
    .... 
} 

如果在類註銷被執行()方法的線程被停止,但是如果StartTrack()方法是再次調用我不知道如何重新啓動線程的執行。

你能幫幫我嗎?

回答

0

我解決這樣:

在我的課堂我只是定義了Runnable對象,但不是新的線程。

在StartTrack()的方法,如果線程還沒有被實例化,我創建並啓動

public void StartTrack() 
{ 
    mContinueThread=true; 

    if (!mThreadIsStarted) 
    { 
     mThreadIsStarted=true; 
     t = new Thread(r); 
     t.start(); 
    } 
} 

在「退出()」方法,如果線程啓動,我停止它,並我將它設置爲空。

通過這種方式,在「StartTrack()」方法的下一個電話,我可以再次重新創建

public void LogOut() 
{ 
    mContinueThread=false; 
    if (mThreadIsStarted) 
    { 
     //THREAD STOP 
     mContinueThread=false; 
     mThreadIsStarted=false; 

     //THREAD TO NULL 
     t=null; 
    } 

    ... 
} 
0

您無法重新啓動線程。一旦線程完成執行,它將達到DEAD狀態。而且,無論是在現實世界還是在JAVA世界,DEAD都無法再被重新帶回生活。

+0

所以我要創建一個新線程每次的StartTrack方法被調用(首先確認是否有是不是已經運行) 我如何創建x不同的線程,不知道線程的數量?我必須爲每個人定義一個不同的名字?我不知道怎麼。 你能幫我嗎? – user2381742 2013-05-14 13:28:11

0

只要退出,您就無法重新啓動線程。你可以開始一個新的開始。

+0

所以我必須每次調用StartTrack方法時創建一個新線程(首先檢查是否已經有一個正在運行)如何創建x不同線程,而不知道線程的數量?我必須爲每個人定義一個不同的名字?我不知道怎麼。你可以幫我嗎? – user2381742 2013-05-15 06:05:21