如何在android中实现延迟?
当我按下按钮时,我想每2秒打印一次序列号。我使用了以下代码:如何在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
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/使用新线程,请检查此链接。