计时器行为只有当我触摸显示屏(OnTouchListener) [英] Timer act only if i touch the display (OnTouchListener)

查看:231
本文介绍了计时器行为只有当我触摸显示屏(OnTouchListener)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

定时器工作正常。问题是,该方法_dw.newgame()刚刚被执行(如果两秒以上),如果我触摸显示屏。也许它也有东西做的OnTouchListener?

The Timer works fine. The problem is that the method _dw.newgame() just get executed(if two seconds are over) if i touch the display. Maybe it have sth to do with the "OnTouchListener" ?

public class DrawView extends View implements OnTouchListener{
Timer timer = new Timer();

公共DrawView(上下文的背景下)
{
timer.schedule(新任务(这一点),0,2000);
}
公共布尔onTouch(查看视图,MotionEvent事件)
{}
}

public DrawView(Context context) { timer.schedule(new Task(this),0, 2000); } public boolean onTouch(View view, MotionEvent event) {} }

类任务扩展的TimerTask
{
私人DrawView _dw;
公众任务(DrawView DW){this._dw = DW;}
公共无效的run()
{_dw.newgame(); }
}

class Task extends TimerTask { private DrawView _dw; public Task(DrawView dw){ this._dw = dw;} public void run() { _dw.newgame(); } }

推荐答案

也许你应该开始在的onCreate 方法计时器:

Maybe you should start the timer in the onCreate method:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(Bundle savedInstanceState);
    timer = new Timer();
    timer.schedule(new Task(this), 0, 2000);
}

与处理第二个尝试:

second try with handler:

public class DrawView extends View implements OnTouchListener{
    private Timer timer = new Timer();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(Bundle savedInstanceState);

        timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                handler.sendEmptyMessage();
            }
        }, 0, 2000);
    }

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            newgame();
        }
    };
}

我没编译这个,但它应该像这样工作。结果
我注意到另一件事:我想newgame()应该只被调用一次。

I did not compile this but it should work like this.
I noticed another thing: I suppose newgame() should only be called once.

timer.schedule(new Task(this), 0, 2000);

确实,每2秒

这篇关于计时器行为只有当我触摸显示屏(OnTouchListener)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆