2013-12-11 120 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

哇我真不敢相信我错过了,只是说我盯着代码太久了,而且在我的脸上,这只是因为需要一些不同的眼睛。我现在检查一下 –