onClickListener不起作用,线程是否处于运行模式?

时间:2014-03-11 23:06:23

标签: android multithreading button

我正在尝试制作一种播放器,因此,我设置播放按钮和暂停按钮并使它们成为clickListener。当我按下播放按钮时,线程开始(并且它工作正常)但暂停按钮不会工作,直到线程完成。我该怎么做才能解决它?

构造

 play = false;
 playButton=(ImageButton)findViewById(R.id.imageButton1);
 playButton.setOnClickListener(playButtonClick);

runnable:

private Runnable runnable=new Runnable() {      
@Override
public void run() {
    int count=0;
    long time=System.currentTimeMillis();
    while(count<24*3 && play)
    {
        if (System.currentTimeMillis()-time>41.67){
            count++;
            time=System.currentTimeMillis();
            scene.play();
            draw(sf.getHolder());
        }
    }
    play=false;
}

clickListener:

 private OnClickListener playButtonClick=new OnClickListener() {        
    @Override
    public void onClick(View v) {
               if (!play){
                      play = true           
                      scene=new TestScene(3,t);
                      thread=new Thread(runnable);
                      thread.run();
                }else
                      play = false;
    }
};

问题:当线程运行时我无法停止它,函数clicklistner在线程停止时正在工作。

2 个答案:

答案 0 :(得分:0)

根据您的问题,A Thread正在其自己的空间中运行。停止Thread的唯一方法是告诉它停止。您可以设置一些Thread正在侦听的静态变量。 Thread可以根据变量的状态采取必要的操作。在最简单的情况下按暂停按钮可以更改Thread类文件

中的静态变量

答案 1 :(得分:0)

尝试使用Thread.start()而不是Thread.run()

请参阅主题文档:

  

如果使用单独的Runnable运行对象构造此线程,则调用该Runnable对象的run方法;否则,此方法无效并返回。

修改 您还可以阅读this答案,了解有关开始与运行的更多信息