如何暂停所有进程5秒钟然后执行contine?

时间:2016-06-23 17:41:13

标签: java pause android-studio-2.2

public class Main2Activity extends AppCompatActivity {
int square5 = 0;
int flag = 1;
int userclick5 = 0;

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

    //here i set some click listeners. one example is as follows:
    ImageButton image_button1 = (ImageButton) findViewById(R.id.image_button1);
    image_button1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            goToIB();
        }
    });
}
//click listener call this function. This function set the color of image button as green.
//Then it calls the function goTofirst3cpu()
    private int goToIB() {
    ImageButton imageButton5 = (ImageButton) findViewById(R.id.image_button5);
    if (imageButton5.isPressed() & square5 == 0) {
        {
            imageButton5.setImageResource(R.color.green_color);
            flag = flag + 1;
            square5 = square5 + 1;
            userclick5 = userclick5 + 1;
            goTofirst3cpu();
            return square5;
        }
    }
    return 0;
    }
    //This function shows red color in image button
    private void goTofirst3cpu() {
    ImageButton imageButton5 = (ImageButton) findViewById(R.id.image_button5);

    if (square5 == 0) {

        //HERE IS WHAT I NEED TO DO SOMETHING
        //when i do something, there will be a gap of 5 seconds 
        //before changing imagebutton's color from green to red.
        //?????????  WHAT I WILL DO HERE.  ??????

        imageButton5.setImageResource(R.color.red_color);
        square5 = square5 + 1;
    }

    }
    }

我用Toast和所有的东西。还有系统时钟。但那些事情对我来说并不起作用。 在将图像按钮的颜色更改为红色之前,我需要休息5秒钟。 我是编程新手。所以用简单的语言解释。 在此先感谢.....

2 个答案:

答案 0 :(得分:1)

解决方案:

try
{
  Thread.sleep(//milliseconds);
}
catch(InterruptedException e)
{
  //handles exception
}

Thread.sleep()会暂停你的程序一段时间。 建议您捕获异常并正确处理它,因为它可能会为您的程序带来更多问题......

关于中断异常的信息在这个重复的问题中:

When does Java's Thread.sleep throw InterruptedException?

另一个解决方案,如果Thread.sleep()是一个问题..

 int delay = 1000; //milliseconds
   ActionListener taskPerformer = new ActionListener() {
       int x = 0;
   public void actionPerformed(ActionEvent evt) {

           if(x == 5)
           {
              //change color of button...
           }

           x++;
       }
   };
   new Timer(delay, taskPerformer).start();

您可以在程序中实施Swing Timer。您将创建一个Timer对象,每1000毫秒触发一次操作。在计时器中有一个变量,每秒递增一次(基本上每次触发动作)并在该变量等于5时执行某些操作。您也可以将Timer设置为5000毫秒而不是1000作为参数... 经过一段时间后,点是做某事。

答案 1 :(得分:0)

你在主线程中完成所有工作,所以你不能只使用Thread.sleep(),因为app会挂起。尝试使用Handler.postDelayed()代替主线程或新线程,然后做所有的东西 - 改变颜色或其他东西。另一个(更复杂,更强大的)解决方案 - 使用rx库(Timer)