这里,我想在每次迭代计算后更新textview中的Hr值,但每次延迟2秒。我不知道该怎么做。我现在在textview中得到的是迭代的最后一个值。我希望所有值都以恒定的延迟显示。有人帮忙。
for(int y=1;y<p.length;y++)
{
if(p[y]!=0)
{
r=p[y]-p[y-1];
double x= r/500;
Hr=(int) (60/x);
Thread.sleep(2000);
settext(string.valueof(Hr));
}
}
答案 0 :(得分:4)
public class MainActivity extends Activity{
protected static final long TIME_DELAY = 5000;
//the default update interval for your text, this is in your hand , just run this sample
TextView mTextView;
Handler handler=new Handler();
int count =0;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView=(TextView)findViewById(R.id.textview);
handler.post(updateTextRunnable);
}
Runnable updateTextRunnable=new Runnable(){
public void run() {
count++;
mTextView.setText("getting called " +count);
handler.postDelayed(this, TIME_DELAY);
}
};
}
我希望这次你会进入代码并运行它。
答案 1 :(得分:2)
你应该使用计时器类......
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
}, 900 * 1000, 900 * 1000);
以上代码是每15分钟一次。更改此值并在您的情况下使用.....
答案 2 :(得分:2)
使用Handler
或TimerTask(with runOnUiThread())
代替for循环,每隔5秒更新一次文字:
Handler handler=new Handler();
handler.post(runnable);
Runnable runnable=new Runnable(){
@Override
public void run() {
settext(string.valueof(Hr)); //<<< update textveiw here
handler.postDelayed(runnable, 5000);
}
};
答案 3 :(得分:1)
TimerTask正是您所需要的。
答案 4 :(得分:0)
让我们希望它可以帮助你充分
import java.awt.Toolkit;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class demo
{
Toolkit toolkit;
Timer timer;
public demo()
{
toolkit = Toolkit.getDefaultToolkit();
timer = new Timer();
timer.schedule(new scheduleDailyTask(), 0, //initial delay
2 * 1000); //subsequent rate
}
class scheduleDailyTask extends TimerTask
{
public void run()
{
System.out.println("this thread runs for every two second");
System.out.println("you can call this thread to start in your activity");
System.out.println("I have used a main method to show demo");
System.out.println("but you should set the text field values here to be updated simultaneouly");
}
}
public static void main(String args[]) {
new demo();
}
}