2016-09-19 69 views
1

我想從主活動 的以下代碼中調用pauseThread方法來停止計數的電流內核整數。一些示例代碼將不勝感激。如果這是不可能的,他們是一種停止點擊按鈕的方法嗎?也許暫停線程?Android Studio:在主線活動的線程中調用方法

public class ScoreThread extends Thread { 

private boolean counter; 
private int currentscore; 
Handler scorehandler = new Handler(); 
private TextView playerscore; 

ScoreThread(TextView v, Boolean b) { 
    playerscore = v; 
    counter = b; 
} 

public void pauseThread() throws InterruptedException { 
    counter = false; 
} 

public void resumeThread() throws InterruptedException { 
    counter = true; 
} 


public void run() { 
    currentscore = 0; 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      while(counter == true) { 
       currentscore = currentscore + 1; 

       scorehandler.post(new Runnable() { 
        @Override 
        public void run() { 
         playerscore.setText("" + currentscore); 
        } 
       }); 
       try{ Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();} 
      } 
     } 
    }).start(); 
} 
} 
+0

第一,而(櫃)應該足夠,而不是同時(反==真) –

+0

秒你調用run方法另一個線程..我不理解。您可以在單次運行方法中完成所有任務,無需在運行方法中創建另一個線程 –

+0

我認爲您的textView將更新得如此之快以至於用戶無法查看該點的確切分數。 其次,使用Synchronized,以便您/用戶/移動設備只能使用一次計數器/線程組件。 –

回答

0

您應該使用一個線程來執行計算。調用另一個線程是沒有用的。我給你簡短的想法如何可以實現你的目標

class Score extends Thread { 

    private boolean counter; 
    private int currentscore = 0; 

    public void stopThread() throws InterruptedException { 
     counter = false; 
    } 

    @Override 
    public void run() { 
     while (counter) { 
      currentscore = currentscore + 1; 
      //Do rest of your work 
      try { 
       Thread.sleep(50); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

} 

在mainactivity 當你要開始計算

Score score = new Score(); 
     score.start(); 

,當你想例如停止線程調用線程的方法從mainactivity使用以下

try { 
      //  your stop event 
      score.stopThread(); 
     } catch (InterruptedException ex) { 
      Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex); 
     } 
+0

謝謝。這是我沒有意識到的語法。這是正確的答案。 – DavidPrabhu

+0

@DavidPrabhu很高興幫助:) –

+0

另外,第二個線程使用一個處理程序來更新GUI。他們是更好的方法來做到這一點? – DavidPrabhu

相關問題