首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TimerTask不生效

TimerTask不生效
EN

Stack Overflow用户
提问于 2012-06-05 03:50:48
回答 2查看 274关注 0票数 2

下面是我的代码:

代码语言:javascript
复制
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的新手。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-05 04:07:08

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

代码语言:javascript
复制
final Handler handlerforadd = new Handler();
Runnable runnableforadd  = new Runnable() {
    @Override
    public void run() {
        handlerforadd.postDelayed(this, 1000);
    }   
};

handlerforadd.postDelayed(runnableforadd, 0);
票数 1
EN

Stack Overflow用户

发布于 2012-06-05 04:33:43

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10887396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档