如何在Android Studio中使用延迟功能?

时间:2016-05-19 12:23:07

标签: java android

我想发送一个带蓝牙的角色。当只有一个字符时,代码工作正常。但我想在两个代码之间使用延迟函数。 我想用EditText输入任何数字,应用程序将获取该数字并执行EditText / 44。这就是我想要在2个代码之间等待

最后工作..谢谢你们。 :)

我在setOnClick中移动了a,b,c;

kileri = (Button) findViewById(R.id.kileri);
final EditText value1 = (EditText) findViewById(R.id.textkont);
assert value1 != null;
value1.setText("0");


btAdapter = BluetoothAdapter.getDefaultAdapter();
checkBTState();

kileri.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            int a = Integer.parseInt(value1.getText().toString());
            int b = a / 44;
            int c = b * 1000;

            sendData("F");

            try {
                Thread.sleep(c);

            } catch (Exception e) {
                e.printStackTrace();
            }

6 个答案:

答案 0 :(得分:3)

increment

编辑为您的代码

 try {
       //set time in mili
        Thread.sleep(3000);

    }catch (Exception e){
        e.printStackTrace();
    }

答案 1 :(得分:3)

您可以使用处理程序

new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                //do something
            }
        }, 2000 );//time in milisecond

答案 2 :(得分:0)

你可以这样做

kileri = (Button) findViewById(R.id.kileri);
final EditText value1 = (EditText) findViewById(R.id.textkont);
assert value1 != null;
value1.setText("0");
final int a = Integer.parseInt(value1.getText().toString());
final int b = a/22;
final int c = b/2; // It will take a int from Edittext and do this operation on that.


btAdapter = BluetoothAdapter.getDefaultAdapter();
checkBTState();

kileri.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        sendData("F");
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                sendData("S");    
            }
        }, c);    
    }
});

答案 3 :(得分:0)

只需在点击按钮时使用runOnUiThread,并在延迟后发布Handler ..

  Button button = new Button(this);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sendData("F");                   // send
            delay(2000);
        }
    });

<强>更新

延迟()..

 public void delay(final int c){
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            try {
                Thread.sleep(c);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            sendData("S");           //send
        }
    }, c);

}

答案 4 :(得分:0)

使用这样的处理程序:

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            // do something after 2s = 2000 miliseconds
        }
    }, 2000); //Time in milisecond

答案 5 :(得分:0)

不建议使用Thread.Sleep,因为如果在主线程执行中调用它会停止执行主线程。因此,如果要设置延迟,可以使用 CountDownTimer

在下面的代码段中,我们给了2秒的延迟。因此,在2s onFinish()回调到来之后,我们就可以在那里进行操作了。

new CountDownTimer(2000, 1000) {
     public void onFinish() {
         
     }

 public void onTick(long millisUntilFinished) {
          
 }.start();
}