TimerTask不会生效

时间:2012-06-04 19:50:48

标签: android timer timertask

这是我的代码:

public class SomeName extends MapActivity implements OnClickListener, OnTouchListener{
public Timer t1 = new Timer();
public TimerTask tt;
public long interval = 5000;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.map);
    timer();
}
public final void timer()
{ 

    t1 = new Timer();
    tt = new TimerTask() {
        @Override
        public void run() {
            systemClick();
        }
    };
    t1.scheduleAtFixedRate(tt, 10000, interval);
}
 public void systemClick()
{
      Toast.makeText(getApplicationContext(),"System Button Clicked", 5).show();
}

实际上,我想调用一些函数,在那里刷新我的位置。

但是我无法理解为什么我从来没有在屏幕上祝酒。 我是android的新手。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在您的活动中使用处理程序

final Handler handlerforadd = new Handler();
Runnable runnableforadd  = new Runnable() {
    @Override
    public void run() {
        handlerforadd.postDelayed(this, 1000);
    }   
};

handlerforadd.postDelayed(runnableforadd, 0);

答案 1 :(得分:0)

原因是Toast必须在UI线程上完成。在当前代码中,方法run()正在一个单独的线程上执行。我建议在进程和线程上查看这个article。 @parag是正确的使用Handler是获取UI线程引用的一种方法,但还有其他方法。