按钮与线程android同步

时间:2013-03-07 07:09:22

标签: android multithreading button onresume onpause

如何创建一个按钮来暂停循环内部的线程和另一个按钮 恢复。

Runnable myRun = new Runnable(){

public void run(){

   for(int j =0 ;j<=words.length;j++){

       synchronized(this){
           try {

                wait(sleepTime);

                bt.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View arg0) {

                                try {
                                    wait();
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                    }});
                bt2.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View arg0) {
                        notify();

                    }
                });
                } catch (InterruptedException e) {
                e.printStackTrace();

            } }
       runOnUiThread(new Runnable(){
           public void run(){
               try {
                    et.setText(words[i]);
                    i++;
                } catch (Exception e) {
                    e.printStackTrace();
                }
           }});
      }}};

做一些事情说words.lenght = 1000次
然后假设用户想要在中间休息 单击暂停按钮,id = bt此按钮暂停线程,直到和用户 点击恢复,ID = bt1

2 个答案:

答案 0 :(得分:0)

以下是一个提示,我认为你可以用来解决你的问题。它是从我粘贴在最后的链接中复制的。

等待可以被另一个进程“唤醒”,该进程在正在等待的监视器上调用notify而睡眠不能。此外,等待(和通知)必须发生在监视器对象上同步的块中,而睡眠不会:

Object mon = ...;
synchronized (mon) {
    mon.wait();
}

此时,当前正在执行的线程等待并释放监视器。另一个线程可以做

synchronized(mon){mon.notify(); (在同一个mon对象上)和第一个线程(假设它是在监视器上等待的唯一线程)将被唤醒。

检查Difference between wait() and sleep()

答案 1 :(得分:0)

你这样做:

How to indefinitely pause a thread in Java and later resume it?

只有您通过按钮“suspend() s

调用OnClickListener和其他方法