日期:2014-05-20  浏览次数:20764 次

Ticker的问题,
我用ticker做了一个现在时间的效果,
在CLDC自带的模拟器上运行没问题,
但是在S40的SDK下运行它每更新一次时间Ticker就刷新了一次,
请问怎么解决
代码是这个
  public void run(){
  Calendar ca = Calendar.getInstance();
  Date date;
  while(true){
  date = new Date();
  ca.setTime(date);
  String hour = String.valueOf(ca.get(Calendar.HOUR_OF_DAY));
  String min = String.valueOf(ca.get(Calendar.MINUTE));
  String sec = String.valueOf(ca.get(Calendar.SECOND));
  String time = hour + ":" + min + ":" + sec;
  ticker.setString(time);
  try {
  Thread.sleep(1000);
  } catch (InterruptedException ex) {
  ex.printStackTrace();
  }
  }
  }
  });
  th.start();

------解决方案--------------------
用个定时器去做吧,。。。。。
Timer s = new Timer();
s.schedule(new TimerTask() {

public void run() {
Calendar ca = Calendar.getInstance();
Date date;
String hour;
String min;
String sec;
String time;
while (true) {
date = new Date();
ca.setTime(date);
hour = String.valueOf(ca.get(Calendar.HOUR_OF_DAY));
min = String.valueOf(ca.get(Calendar.MINUTE));
sec = String.valueOf(ca.get(Calendar.SECOND));
time = hour + ":" + min + ":" + sec;
ticker.setString(time); }
}
}, 1000);
------解决方案--------------------
是指调用 ticker.setString(time); 方法时,ticker又头开始走了吗?如果有这问题那就没办法,只能考虑自己实现ticker
------解决方案--------------------
你这run是TimeTask的run么?
应该new一个TimeTask,TimeTask的run做2件事
获取当前时间
刷屏
用timer去schedule这个TimeTask,没1分钟执行一次
你先看看api吧