2013-12-11 92 views
0

大家好,我試圖阻止某種方法每6秒做一次某事達到某個標準。我計劃使用finish(),但它會將我重定向回前一個 佈局,並且仍然每6秒顯示一次Toast消息。這裏的run方法退出每x秒做一件事

protected static final long TIME_DELAY = 6000; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_view); 

     mHandler.post(updateTextRunnable); 
    } 

    Runnable updateTextRunnable=new Runnable(){ 
     public void run() {  

      if(//Criteria==true){ 
        message(); 
         finish(); 
       } 
        mHandler.postDelayed(this, TIME_DELAY); 
       } 
     }; 

public void message(){ 

     Toast.makeText(this, "Found", 
       Toast.LENGTH_SHORT).show(); 
    } 

怎樣纔可以有它一旦條件滿足退出運行,但仍停留在相同的佈局

+1

如果您對源代碼提出問題,請確保格式正確。這種方式很難讀。順便回答這個問題,你應該把'mHandler.postDelayed(this,TIME_DELAY); '在'if'的else分支中。 – Sipka

回答

1

只有調用您postDeleyed呼叫如果條件是假的(即添加else語句如下)。

if(//Criteria==true){  
    message(); 
    finish(); 
} else {  
    mHandler.postDelayed(this, TIME_DELAY); 
} 
+0

哇我真不敢相信我錯過了,只是說我盯着代碼太久了,而且在我的臉上,這只是因爲需要一些不同的眼睛。我現在檢查一下 –