如何在android中实现延迟?

如何在android中实现延迟?,android,delay,Android,Delay,当我按下按钮时,我想每2秒打印一次序列号。我使用了以下代码: int j=0; button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub c=Calendar.getInstance(); Del

当我按下按钮时,我想每2秒打印一次序列号。我使用了以下代码:

int j=0;
button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            c=Calendar.getInstance();
            Delay(2 ,c.get(Calendar.SECOND));
            if(j++<5)
              t.setText("number "+j);

            }

    });

public void Delay(int p,int q){

    int z=0;

    while(z<p){
        c=Calendar.getInstance();
        i= c.get(Calendar.SECOND);
        z=i-q;
    }

    return ;
}
intj=0;
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
c=Calendar.getInstance();
延迟(2,c.get(日历秒));

if(j++注意,如果在UI线程上执行此操作,将阻塞UI线程10秒。最好使用单独的线程来执行此操作:

button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        new Thread() {
            public void run() {
                for(int j=1; j<=5; i++) {
                     runOnUiThread(new Runnable() {
                         @Override
                         public void run() { t.setText("number " + j); }
                    });
                    SystemClock.sleep(2000);
                }
            }
        }.start();
    }
});
button.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
新线程(){
公开募捐{

对于(int j=1;j使用Runnable来发布到绑定到应用程序UI线程的处理程序,而不是sleep或delay。如果在
onClick()
方法中使用sleep或delay,则会阻塞UI线程,从而使UI无响应

public class MyActivity extends Activity implements Handler.Callback {
    ...
    private Handler mHandler = new Handler(this);
    private int     mNumber = 0;
    ...
    @Override
    public void onClick(View v) {
        mNumber++;
        mHandler.postDelayed(new Runnable() {
            public void run() {
                t.setText("number: " + mNumber);
            }, 2000);
    }
}
您可以使用。您只需定义更新的时间量和频率。您只需稍微调整逻辑即可向上打印数字

button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
    new CountDownTimer(60000, 2000) {

       public void onTick(long millisUntilFinished) {
           mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
       }

       public void onFinish() {
         mTextField.setText("done!");
       }
    }.start();
}
});

在loopread时使用循环中的打印代码。您正在阻止UI线程10秒钟…您不能这样做。您应该使用AsyncTask/使用新线程,请检查此链接。