Java android中的倒计时错误?

Java android中的倒计时错误?,java,android,countdowntimer,Java,Android,Countdowntimer,我正在制作一个布局,它在布局的底部显示一个选项卡式结构。我需要在双击时显示,然后在5秒后隐藏它。所以我使用了这个倒计时: public void timer() { cdt=new CountDownTimer(5000,1000) { @Override public void onTick(long millisUntilFinished) { System.out.println("Timer Working"+mill

我正在制作一个布局,它在布局的底部显示一个选项卡式结构。我需要在双击时显示,然后在5秒后隐藏它。所以我使用了这个倒计时:

public void timer()
{
     cdt=new CountDownTimer(5000,1000) {

        @Override
        public void onTick(long millisUntilFinished) {

            System.out.println("Timer Working"+millisUntilFinished+"");

        }

        @Override
        public void onFinish() {

            System.out.println("Finished");
            main =(LinearLayout)findViewById(R.id.parent);

            ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)main.getLayoutParams();
            mlp.height=420;

            set_up_views();
            find_module();
            tl.setVisibility(View.INVISIBLE);


        }
    }.start();

}

但我不知道如何停止和重新启动这个计时器。我该怎么办?

我建议您不要在这种情况下使用倒计时

使用

postDelayed将在5秒后执行该代码

编辑:

postDelayed将在5秒后通过Lopper.loop()仅调用一次。如果有多个对hideAfter5Sec()的调用,则只有您会得到对postDelayed的多个调用

如果您有多个调用hideAfter5Sec(),我不认为有任何错误,因为hideAfter5Sec()只是在隐藏它。因此,如果一个或多个视图被隐藏

如果只想在上次调用hideAfter5Sec()时隐藏,请使用此变量

public class yourActivity extends Activity
{
     public Handler handler = new Handler();
     public long lastHideAfter5Sec = 0L;

     ...


     public void hideAfter5Sec()
     {
         lastHideAfter5Sec = System.currentTimeMillis();
         handler.postDelayed(new Runnable()
         {
             if(System.currentTimeMillis() - lastHideAfter5Sec < 5000) 
                 return;
             View view = findViewById(view_to_hide);
             view.setVisibility(View.INVISIBLE);
         }, 5000);

     } 
公共类yourActivity扩展活动
{
public Handler=new Handler();
公共长lastHideAfter5Sec=0L;
...
公共无效隐藏在5sec()之后
{
lastHideAfter5Sec=System.currentTimeMillis();
handler.postDelayed(新的Runnable()
{
if(System.currentTimeMillis()-lastHideAfter5Sec<5000)
返回;
视图=findViewById(从视图到隐藏);
view.setVisibility(view.INVISIBLE);
}, 5000);
} 

但它也可以不间断地继续运行!!如何停止并重新启动?有关说明,请参阅我的编辑
public class yourActivity extends Activity
{
     public Handler handler = new Handler();
     public long lastHideAfter5Sec = 0L;

     ...


     public void hideAfter5Sec()
     {
         lastHideAfter5Sec = System.currentTimeMillis();
         handler.postDelayed(new Runnable()
         {
             if(System.currentTimeMillis() - lastHideAfter5Sec < 5000) 
                 return;
             View view = findViewById(view_to_hide);
             view.setVisibility(View.INVISIBLE);
         }, 5000);

     }