本人通过在UI线程中调用子线程实现动态显示信息,已经实现,可以不知道如何实现暂停啊。请多多指教。
关键代码如下:
public class HandlerTest extends Activity {
    protected static final int GUIUPDATEIDENTIFIER = 0x101; 
    int i=0;
    Handler myHandler = new Handler() { 
        public void handleMessage(Message msg) { 
             switch (msg.what) { 
                  case HandlerTest.GUIUPDATEIDENTIFIER: 
                   setContentView(R.layout.main);
                   TextView tv=(TextView) findViewById(R.id.tv);
                     tv.setText("G3:"+i);
                      tv.postInvalidate(); //使用postInvalidate();刷新 
                       break; 
             } 
             super.handleMessage(msg); 
        } 
   }; 
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
        setContentView(R.layout.main);
        new Thread(new myThread()).start(); 
        Button button1 = (Button)findViewById(R.id.stop);
        button1.setOnClickListener(startIt);
        }
    
    private OnClickListener startIt = new OnClickListener()
    {
     public void onClick(View v)
        { 
[color=#FF0000]//  想在这里添加代码,控制子线程暂停 [/color]     
        }    };    
    class myThread implements Runnable { 
        public void run() { 
             while (!Thread.currentThread().isInterrupted()) {  
                  Message message = new Message(); 
                  message.what = HandlerTest.GUIUPDATEIDENTIFIER; 
                  HandlerTest.this.myHandler.sendMessage(message); 
                  try { 
                       Thread.sleep(100);  
                  } catch (InterruptedException e) { 
                       Thread.currentThread().interrupt(); 
                  } 
             } 
        } 
   } 
    
}

解决方案 »

  1.   

    老实说java的线程很难停掉,做个标记,如果线程没有阻塞的化,否则,Thread类很难控制的
      

  2.   

    让线程wait
    待要唤醒时notify或者notifyAll。
    要保持好同步。
    或者干脆让线程结束,下次再重新new一个线程。
      

  3.   

    我加了代码,thread.stop();停不了啊。能不能具体点啊,多谢了先。
      

  4.   

    现在已经不推荐用thread.stop()这种方法了,线程的run函数执行完线程就停止了。
    在JAVA中,一个线程一旦运行完毕,即执行完其run()方法,就不可以重新启动了。此时这个线程对象也便成了无用对象,等待垃圾回收器的回收。下次想再启动这个线程时,必须重新new出一个线程对象再start之
    http://eyesye.javaeye.com/blog/234090
      

  5.   


    是的,我看成结束线程了,java的线程控制比较烂,对sun的破玩意恨之入骨
      

  6.   

    求解。我用的thread.interrupt();也是停不掉。而且我还是在ActivityB中获取ActivityA启动的线程。现在貌似是在获取那儿出问题了
      

  7.   

    thread 类里面顶一个布尔类型的flag,取消的时候将其设为true,run方法的循环每次执行前先去判断下下flag如果为true,直接return。 这个方法我已经证明可以啦
      

  8.   

    我怎么没找到thread里面有这个bool类型的flag啊?