我是靠谱客的博主 爱听歌耳机,最近开发中收集的这篇文章主要介绍android 每隔2秒执行_Android – 每5秒循环一部分代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我想按下START按钮开始重复两行代码,然后按下按钮STOP.我尝试使用TimerTask和Handles,但无法弄清楚如何.

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//final int i;

final TextView textView = (TextView) findViewById(R.id.textView);

final Button START_STOP = (Button) findViewById(R.id.START_STOP);

final ImageView random_note = (ImageView) findViewById(R.id.random_note);

final int min = 0;

final int max = 2;

final Integer[] image = { R.drawable.a0,R.drawable.a1,R.drawable.a2 };

START_STOP.setTag(1);

START_STOP.setText("START");

START_STOP.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

int status = (Integer) v.getTag();

if (status ==1) {

textView.setText("Hello");

START_STOP.setText("STOP");

v.setTag(0);

final Random random = new Random();

//************************************************************

// I would like to loop next 2 lines of code every 5 seconds.//

int i = random.nextInt(2 - 0 + 1) + 0;

random_note.setImageResource(image[i]);

//************************************************************

}

else

{

textView.setText("Bye");

START_STOP.setText("Let's PLAY!");

v.setTag(1);

}

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main,menu);

return true;

}

}

解决方法

在其中一个答案中使用CountDownTimer是一种方法.另一种方法是使用Handler和

postDelayed方法:

private boolean started = false;

private Handler handler = new Handler();

private Runnable runnable = new Runnable() {

@Override

public void run() {

final Random random = new Random();

int i = random.nextInt(2 - 0 + 1) + 0;

random_note.setImageResource(image[i]);

if(started) {

start();

}

}

};

public void stop() {

started = false;

handler.removeCallbacks(runnable);

}

public void start() {

started = true;

handler.postDelayed(runnable,2000);

}

以下是使用Timer和TimerTask的示例:

private Timer timer;

private TimerTask timerTask = new TimerTask() {

@Override

public void run() {

final Random random = new Random();

int i = random.nextInt(2 - 0 + 1) + 0;

random_note.setImageResource(image[i]);

}

};

public void start() {

if(timer != null) {

return;

}

timer = new Timer();

timer.scheduleAtFixedRate(timerTask,2000);

}

public void stop() {

timer.cancel();

timer = null;

}

最后

以上就是爱听歌耳机为你收集整理的android 每隔2秒执行_Android – 每5秒循环一部分代码的全部内容,希望文章能够帮你解决android 每隔2秒执行_Android – 每5秒循环一部分代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部